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 you'll learn
  • What Java SE, Java EE/Jakarta EE and Java ME each contain
  • Why Java EE became Jakarta EE and javax.* became jakarta.*
  • 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 SEJava EE / Jakarta EEJava ME
Full nameJava Platform, Standard EditionJava Platform, Enterprise Edition (now Jakarta EE)Java Platform, Micro Edition
Used forDesktop, command-line tools, libraries, test automation — the base for everythingLarge server-side and web applicationsSmall and embedded devices
Key APIsjava.lang, java.util (collections), java.io/java.nio, java.net.http (HttpClient), java.sql (JDBC), java.timeServlets, REST (JAX-RS), Persistence (JPA), Dependency Injection (CDI), Bean Validation, messagingA reduced subset for devices
How you get itInstall 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 namesjava.*javax.* (up to Java EE 8 / Jakarta EE 8), jakarta.* (Jakarta EE 9 and later)javax.microedition.*
Who maintains itOracle and the OpenJDK communityEclipse Foundation (since Java EE 8)Oracle
Advertisement

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

  1. In 2017 Oracle moved Java EE to the Eclipse Foundation.
  2. Because Oracle kept the "Java" trademark, the platform was renamed Jakarta EE.
  3. Jakarta EE 8 kept the old javax.* package names, so existing code still worked.
  4. Jakarta EE 9 changed the packages from javax.* to jakarta.* — for example javax.servlet became jakarta.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

  1. 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.
  2. Installing an "EE" download to write Selenium tests. You only need a JDK (Java SE).
  3. Mixing javax.* and jakarta.* dependencies in one project — pick the one that matches your server or framework version.
  4. Calling Java ME current. It's a niche platform for small devices; most modern embedded and mobile work uses other technologies.

Practice Exercises

  1. Run java --list-modules on your machine and find the module that contains HttpClient.
  2. In an interview, explain in two sentences the difference between Java SE and Jakarta EE.
  3. Check a Spring Boot project's pom.xml: does it use javax or jakarta packages, 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.