A Feature Comparison of Java SE, SE Embedded and ME

Java's origins lie in small and embedded devices, so one would assume that developing for such devices in Java would be a natural fit. In reality however, Java is strongest in enterprise and desktop systems, and Java developers using the Standard and Enterprise Editions (SE and EE, respectively) enjoy a diverse ecosystem of tools and frameworks to develop their software systems. Embedded use of Java has only recently come back into focus, as the number of devices connected to the Internet is drastically increasing. The revived interest is reflected in the Connected Limited Device Configuration - CLDC 8 (JSR 360) and Java ME Embedded Profile - MEEP 8 (JSR 361) specifications, which update earlier specifications for Embedded Java to provide current language features of Java like Generics and Annotations, for which Oracle offers a corresponding set of implementations.

While CLDC 8 and MEEP 8 are Java standards, they are not based on the same core as Java SE, and SE tooling and practices largely cannot be applied without change. The tools provided with the current release of Java ME 8 nicely address the needs of an individual developer working with an IDE, but still have a fair way to cover to reach the maturity of Continuous Integration (SE) and Software Quality Assessment (SQA) available of the shelf at low cost for Java SE.

a digram showing how the scope of Java ME relates to scopes of other Java Editions
Java edition scopes: Java ME is not a subset of Java Standard Edition

The diagram above captures the conceptual relationship among the different editions of Java. SE literally forms the standard of which the other variants are functional super- or subsets:

  • SE Embedded is a subset for devices with constrained memory (>= 32 MB)
  • EE extends the SE API with enterprise-oriented APIs (javax.*)

SE targets desktop and server-class computers, where resources are usually not a concern. It is designed for computation and data intensive platform-independent applications, and serves as the reference when it comes to functionality, by providing a large set of general purpose APIs. It, and its super-sets are available for most operating systems and exist in a commercial and open source variant.

In addition, the direct use of Java SE on Android mobile phones looks imminent, pending the outcomes of a long-standing law-suite between Google and Oracle. Google Trends can offer a hint regarding the popularity of these platforms over the years: comparison of Java ME, SE and EE on Google Trends.

The following discussion is quite abstract and directed primarily at software engineers. If you prefer a description with more examples that is less dense, you can read Oracle’s Java ME Technology Overview at this point.

Comments

Popular posts from this blog

What exactly is Java Micro Edition?

Motivation: Why does the Internet need this blog?