Differences between Java EE and Java SE
Java technology is both a programming language and a platform. The Java programming language is a high-level object-oriented language that has a particular syntax and style. A Java platform is a particular environment in which Java programming language applications run and there are several Java platforms. Many developers, even long-time Java programming language developers, do not understand how the different platforms relate to each other.
The Java Programming Language Platforms
There are four platforms of the Java programming language:
- Java Platform, Standard Edition (Java SE)
- Java Platform, Enterprise Edition (Java EE)
- Java Platform, Micro Edition (Java ME)
All Java platforms consist of a Java Virtual Machine (VM) and an application programming interface (API). The Java Virtual Machine is a program, for a particular hardware and software platform, that runs Java technology applications. An API is a collection of software components that you can use to create other software components or applications. Each Java platform provides a virtual machine and an API, and this allows applications written for that platform to run on any compatible system with all the advantages of the Java programming language: platform-independence, power, stability, ease-of-development, and security.
When most people think of the Java programming language, they think of the Java SE API. Java SE's API provides the core functionality of the Java programming language. It defines everything from the basic types and objects of the Java programming language to high-level classes that are used for networking, security, database access, graphical user interface (GUI) development, and XML parsing. In addition to the core API, the Java SE platform consists of a virtual machine, development tools, deployment technologies, and other class libraries and toolkits commonly used in Java technology applications.
The Java EE platform is built on top of the Java SE platform. The Java EE platform provides an API and runtime environment for developing and running large-scale, multi-tiered, scalable, reliable, and secure network applications.
The Java ME platform provides an API and a small-footprint virtual machine for running Java programming language applications on small devices, like mobile phones. The API is a subset of the Java SE API, along with special class libraries useful for small device application development. Java ME applications are often clients of Java EE platform services.
JavaFX is a platform for creating rich internet applications using a lightweight user-interface API. JavaFX applications use hardware-accelerated graphics and media engines to take advantage of higher-performance clients and a modern look-and-feel as well as high-level APIs for connecting to networked data sources. JavaFX applications may be clients of Java EE platform services.
Do you want to run Java programs, or do you want to develop Java programs? If you want to run Java programs, but not develop them, download the Java Runtime Environment, or JRE.
For the most part, the only thing most people should care about is the difference between a JDK and a JRE: the JRE runs Java applications and the JDK is used to make them. If you only want to run Java applications that have already been made, you only need a JRE, but to make and debug Java applications, you need both.
If you care about more detail than that:
A Java Development Kit (JDK) is a collection of tools for development of Java applications, most notably including a compiler that turns Java source code into bytecode and a debugger for ensuring your code runs the way it is intended to.
A Java Virtual Machine (JVM) interprets Java bytecode into native instructions for the platform it runs on.
A Java Runtime Environment (JRE) includes a JVM along with a standard library that implements the APIs required by the J2SE and some deployment mechanisms like Java Plug-in and Java Web Start. It does not, on its own, include tools for creating Java applications, but only for running those that have already been made. Major implementations of JREs include the Oracle JRE and OpenJRE.
The Java Platform, Standard Edition is a set of specifications for a JVM, JDK, and APIs that Java applications can rely on. The J2SE is version 2 of that specification, with details for those APIs, bytecode, and execution particular to that version. Major implementations of that specification include the Oracle JDK and OpenJDK, both of which consist of a JDK and a JRE.
HotSpot is the VM from the OpenJDK community. It is the most widely used VM today and is used in Oracle’s JDK. It is suitable for all workloads.
For more details see OpenJDK HotSpot.
Eclipse OpenJ9 is the VM from the Eclipse community. It is an enterprise-grade VM designed for low memory footprint and fast start-up and is used in IBM’s JDK. It is suitable for running all workloads.
For more details see Eclipse OpenJ9.
LTS (Long Term Support). These versions have a longer support timeframe. Suitable for enterprise customers. See Support for more information.