Java SE (Standard Edition) is the core Java platform: the language, the JVM and the standard libraries you install with a JDK. Java EE (Enterprise Edition) — renamed Jakarta EE — is a set of extra specifications built on top of Java SE for server-side applications: web servlets, REST services, database persistence and more. Java ME (Micro Edition) is a small version for embedded devices.
- What Java SE, Java EE/Jakarta EE and Java ME each contain
- Why Java EE became Jakarta EE and
javax.*becamejakarta.* - A side-by-side comparison table
- Which edition you need for Selenium, REST Assured and test automation
Java SE vs Java EE vs Java ME at a Glance
| Java SE | Java EE / Jakarta EE | Java ME | |
|---|---|---|---|
| Full name | Java Platform, Standard Edition | Java Platform, Enterprise Edition (now Jakarta EE) | Java Platform, Micro Edition |
| Used for | Desktop, command-line tools, libraries, test automation — the base for everything | Large server-side and web applications | Small and embedded devices |
| Key APIs | java.lang, java.util (collections), java.io/java.nio, java.net.http (HttpClient), java.sql (JDBC), java.time | Servlets, REST (JAX-RS), Persistence (JPA), Dependency Injection (CDI), Bean Validation, messaging | A reduced subset for devices |
| How you get it | Install a JDK (e.g. Java 17 or 21) | A JDK plus an application server or framework (Tomcat, WildFly, Payara, Open Liberty…) | Device-specific runtimes |
| Package names | java.* | javax.* (up to Java EE 8 / Jakarta EE 8), jakarta.* (Jakarta EE 9 and later) | javax.microedition.* |
| Who maintains it | Oracle and the OpenJDK community | Eclipse Foundation (since Java EE 8) | Oracle |
Java SE Is Included in Every Edition
Java EE is not a different language or a different JVM — it's a set of extra APIs on top of Java SE. You can see this with the compiler: a plain JDK doesn't contain the Java EE servlet API at all.
import javax.servlet.http.HttpServlet;
public class Web extends HttpServlet {}
Web.java:1: error: package javax.servlet.http does not exist
import javax.servlet.http.HttpServlet;
The JDK's own module list (java --list-modules) contains java.base, java.net.http, java.sql and java.xml — but no servlet, persistence or Jakarta modules. Those come from a server or as Maven dependencies.
From Java EE to Jakarta EE: javax → jakarta
- In 2017 Oracle moved Java EE to the Eclipse Foundation.
- Because Oracle kept the "Java" trademark, the platform was renamed Jakarta EE.
- Jakarta EE 8 kept the old
javax.*package names, so existing code still worked. - Jakarta EE 9 changed the packages from
javax.*tojakarta.*— for examplejavax.servletbecamejakarta.servlet. Newer releases (Jakarta EE 10 and later) build on that.
This is why you may see a "package javax.servlet does not exist" error after upgrading a project: newer servers and frameworks (for example Spring Boot 3, which also requires Java 17) use the jakarta.* names.
Which Edition Do Testers Need?
Java SE — that's all. Selenium, TestNG, JUnit, REST Assured, Apache POI and Cucumber are ordinary Java libraries that run on Java SE. You install a JDK (Java 17 or 21) and add the libraries with Maven or Gradle. You only meet Jakarta EE when you test or work on the server code of an enterprise application.
Common Mistakes
- Thinking Java EE is a newer or more powerful Java. It's a set of server-side specifications on top of Java SE, not a different version of the language.
- Installing an "EE" download to write Selenium tests. You only need a JDK (Java SE).
- Mixing
javax.*andjakarta.*dependencies in one project — pick the one that matches your server or framework version. - Calling Java ME current. It's a niche platform for small devices; most modern embedded and mobile work uses other technologies.
Practice Exercises
- Run
java --list-moduleson your machine and find the module that containsHttpClient. - In an interview, explain in two sentences the difference between Java SE and Jakarta EE.
- Check a Spring Boot project's
pom.xml: does it usejavaxorjakartapackages, and which Java version does it need?
Key Takeaways
- Java SE is the core platform; Java EE/Jakarta EE adds server-side APIs on top of it.
- Java EE became Jakarta EE, and from Jakarta EE 9 the packages are
jakarta.*. - Testers need Java SE (a JDK) plus libraries like Selenium and REST Assured.
📚 Official documentation: Jakarta EE FAQ (Eclipse Foundation) · dev.java: Learn Java
Frequently Asked Questions
What is the difference between Java SE and Java EE?
Java SE is the core Java platform: language, JVM and standard libraries. Java EE (now Jakarta EE) is a set of additional server-side APIs, such as servlets, REST and persistence, that run on top of Java SE.
Is Java EE the same as Jakarta EE?
Yes. Java EE moved to the Eclipse Foundation and was renamed Jakarta EE. From Jakarta EE 9 the package names changed from javax.* to jakarta.*.
Is Java EE still used?
The specifications live on as Jakarta EE and are used in many enterprise server applications and by frameworks such as Spring Boot 3.
Which Java do I need for Selenium?
Java SE: install a JDK (Java 17 or 21) and add Selenium with Maven or Gradle.
What is Java ME?
Java Platform, Micro Edition: a small Java platform for embedded and resource-limited devices.