If you learned Java in college, you may have never stopped to ask that question.
I did.
Java was the second object-oriented programming language I learned during my bachelor's degree, and I genuinely enjoyed learning it for the first time. I was never a formal Java developer, but the language stayed with me because it made object-oriented programming feel much more concrete.
Years later, seeing jakarta.* in Java-based backend technologies made me curious about where all these names came from.
The history is surprisingly interesting.
Before Java, There Was Oak
Back in 1991, James Gosling and the Green Project at Sun Microsystems were working on software for consumer and embedded devices.
The language they created was called Oak.
The project later shifted toward the Internet, and Oak was renamed Java.
And that's where the story gets interesting.
Why “Java”?
Java is an Indonesian island.
It is located west of Bali, separated from Bali by the Bali Strait.
Java is also strongly associated with coffee.
That coffee connection became part of the programming language's identity and eventually gave us the familiar Java coffee-cup imagery.
But there is an important detail: the popular story that the programming language was simply named after the Indonesian island is an oversimplification. The actual naming process involved several ideas and historical accounts.
So the connection is real, but the story is not quite as simple as:
Island → programming language.
Then Jakarta Appeared
Now comes the part that confused many Java learners.
Why Jakarta?
Jakarta is the capital of Indonesia and is located on the island of Java.
But the software meaning of Jakarta comes from a different history.
The Apache Jakarta Project, established in 1999, became an important home for Java server-side open-source projects, including technologies related to Servlets, JSP and Tomcat.
Later, Java EE moved to the Eclipse Foundation and became Jakarta EE.
That is why modern Jakarta EE applications may contain:
import jakarta.servlet.http.HttpServlet;
instead of the older:
import javax.servlet.http.HttpServlet;
This is not just a spelling change developers can casually ignore. During migrations, dependencies and libraries need to be compatible with the Jakarta namespace.
Java and Jakarta Are Not the Same Thing
This is probably the most useful distinction to remember.
Java is the programming language and platform foundation.
Jakarta EE is an enterprise Java platform based on specifications and APIs.
They belong to the same broader ecosystem, but they are not interchangeable terms.
This distinction becomes useful when reading older backend applications, understanding dependencies, or migrating Java EE applications to Jakarta EE.
The Part I Find Interesting
A technology name that many of us first encountered in a programming textbook can lead to an Indonesian island, coffee, Internet software, Apache projects, and enterprise application standards.
And for me, Java has another connection.
It was one of those early languages that made programming concepts click.
I never became a formal Java developer, but learning it for the first time left a lasting impression.
Key Takeaway
Java programming language story connects Java island, coffee, the early history of Internet software, and eventually the Jakarta ecosystem.
And Jakarta EE is not a new programming language—it is the modern continuation of the enterprise Java platform.
What do you find most interesting about the history of Java or Jakarta? Share your perspective in the comments.
