Java EE Tutorials - Communication Breakdown

There is no doubt that Java is a serious language made by smart people. Unfortunately, it is also the product of a for-profit corporation, and is currently maintained by yet another for-profit corporation. As a result, it is cared for not only by a team of crack developers, but also a marketing department. And that marketing department sure has screwed the pooch.

If you go to Oracle’s Java site, you will find a “New to Java” page which lists four different technologies - Java SE, Java ME, Java EE, and Java FX. In reality, only two of them are different versions of Java. The other two are something else entirely, and Oracle’s insistence on lumping all four together is incredibly confusing for new developers.

Let’s break it down properly, shall we?

Java SE (AKA Java Standard Edition)

When you think of Java, this is what you’re thinking of. Java SE is defined by all the libraries and tools that make up standard, core Java. Anything you could think to write in the language can be written with this platform.

Java ME (AKA Java Micro Edition)

This is a second version of Java intended for use in embedded systems (such as mobile phones and set top boxes). It contains a subset of the features found in Java SE, and while Oracle loves to brag about how widely adopted it is, I’ve never encountered anyone who’s used it.

Java FX

Java FX is not an alternate version of Java. It is a new set of Graphics libraries designed to make much better looking applications than those written with Java’s older builtin graphics library, Swing. Originally, it was a separate download, but ever since Java 7 it has been baked into the Java SE Development Kit.

Java EE (AKA Java Enterprise Edition)

Adding Java EE to this list of technologies is the most misleading decision of all. When I was a young programmer, I assumed that Java EE was a bigger, better version of Java SE, one that was used by the pros when they wanted to get real work done. This isn’t anything close to the truth; Java EE is something much different and incredibly complicated, so much so that I’m dedicating an entire post to describing it.

Conclusion

I can understand Oracle’s desire to market JavaFX; they’ve been bullish on adopting it for years now. But it would help if they would make it clear that developers only need the Java SE JDK to take advantage of it.

As for Java EE, it just doesn’t belong on the list. Heck, it shouldn’t even use the “EE” suffix, as it implies that it is a runtime platform like Java SE and ME. That is a potentially dangerous assumption to make, or at the very least, one which can lead to lost hours and lots of frustration.

So why do it? Why label all these unique technologies together as different “Editions” of Java? Likely because it is a nice, simple naming convention to use in organizing the Java product suite. Which is another way to say “Oracle is worried less about aiding you, the individual developer, than they are about ensuring that CIO’s swear loyalty to Java in as many areas as possible. This is not an indictment on the language itself, but rather something to keep in mind when you’re looking for help among any official documentation.

In our next article, we will solve the mystery of Java EE for real.