Exploring Java SE, EE, and ME Editions: Features and Differences
The Java platform doesn't exist in a single form: historically it was split into three editions — Java SE, Java EE, and Java ME. They differ in purpose and in the set of libraries they provide, but they all share the same underlying language. Let's look at how they differ and what has happened to them today.
Java Editions
Java SE (Standard Edition)
Java SE is the standard edition and the foundation of the entire platform. It includes the core language features and key libraries: collections, I/O, multithreading, networking, the Stream API, and much more. Java SE is exactly what this course covers, and it's where every Java developer starts. All other editions are built on top of SE.
Java EE → Jakarta EE (Enterprise Edition)
Java EE is not a separate language but a set of specifications and APIs on top of Java SE for building large enterprise and server applications: web services, servlets, JPA, EJB, JMS, and other technologies.
It's important to understand the current status: in 2017, Oracle handed Java EE over to the non-profit Eclipse Foundation. Because of the "Java" trademark, the platform had to be renamed — since then it has been called Jakarta EE. Starting with Jakarta EE 9 (2020), the package names changed too: the javax.* prefix was replaced with jakarta.*. That's why in modern frameworks (Spring, Quarkus, recent versions of Tomcat) you'll see jakarta.*.
Java ME (Micro Edition)
Java ME was created for resource-constrained devices: older mobile phones, PDAs, and embedded systems. At one time it was the main platform for mobile applications (games and programs for feature phones).
Today, Java ME is largely a historical platform. With the rise of Android (where apps are written in Kotlin and a Java SE-like API) and iOS, Java ME's niche in mobile development has all but disappeared. The platform technically still exists and is used in some embedded and IoT scenarios, but beginners should understand that it is not used for modern mobile development.
Comparison of the editions
| Edition | Purpose | Example technologies | Status today |
|---|---|---|---|
| Java SE | Standard platform, the core of the language | Collections, Stream API, multithreading, java.time | Current |
| Java EE → Jakarta EE | Enterprise and server applications | Servlets, JPA, EJB, JMS, web services | Evolves as Jakarta EE |
| Java ME | Resource-constrained devices | MIDlet, CLDC, CDC | Historical |
Frequently asked questions
What's the difference between Java SE and Java EE?
Java SE is the standard edition with the core language features and libraries. Java EE (now Jakarta EE) is a set of specifications on top of SE for enterprise and server applications. EE doesn't exist independently of SE — it's a layer built on top of it.
What is Jakarta EE?
It's the new name for Java EE. In 2017, Oracle handed the platform to the Eclipse Foundation, and because of the "Java" trademark it was renamed Jakarta EE. As of Jakarta EE 9, packages changed from javax.* to jakarta.*.
Is Java ME still used today?
In modern mobile development, practically no — it was replaced by Android and iOS. Java ME technically still exists and is used in some embedded and IoT scenarios, but it's considered a historical platform.
Which Java edition should a beginner learn?
Java SE. It's the foundation of the language that all other editions and frameworks are built on. Once you know SE, you can move on to Jakarta EE, Spring, or Android.
Video Explanation
Prefer video format? Watch this lesson with examples and explanations.
Comments