EMZETT.
Login

Java editions: SE, EE, ME and Jakarta EE

In short: Java comes in several “editions” for different purposes: SE (Standard Edition) for normal programs, EE (Enterprise Edition, today Jakarta EE) for large server applications and ME (Micro Edition) for small devices.

In more detail: All editions use the same language and the same virtual machine. They differ in the bundled libraries (APIs). SE is the foundation; EE and ME build on it or restrict it.

In Depth

EditionPurposeExamples
Java SEDesktop, command-line and server programs, language coreCollections, I/O, threads, streams, networking
Jakarta EE (formerly Java EE)Enterprise web applicationsServlets, JPA (databases), CDI, REST (JAX-RS), transactions
Java MEEmbedded devices, old phones, sensorsHeavily reduced library
  • Renaming: Oracle handed Java EE to the Eclipse Foundation in 2017. For legal reasons it has been called Jakarta EE since version 9. The packages changed from javax.* to jakarta.*. This breaks old code, which must be adapted on update.
  • Specification and implementation: Jakarta EE is only a description. It is implemented by application servers such as WildFly, Payara, Open Liberty, or by servlet containers such as Tomcat.
  • Spring: The popular Spring framework is not an EE edition but uses many of the same concepts. Spring Boot 3 builds on jakarta.*.
  • ME today: Hardly matters anymore. Android uses its own libraries, and embedded devices use Java SE Embedded, GraalVM or other languages.
  • Which do I need? For learning and for most programs, the JDK (SE) is enough.

See also: JDK, JRE (Java Runtime Environment), Packages/API