Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java SE embedded and Java ME

Java SE 8 embedded and Java ME 8 seem to have a similar goals. What is the difference between them regarding APIs, performance and license?

like image 785
free_easy Avatar asked Sep 19 '14 17:09

free_easy


People also ask

What is Java ME embedded?

An open and cross-industry platform for the Internet of Things (IoT) that helps customers decrease time to market, manage costs, and deliver new capabilities for embedded devices.

What is Java ME used for?

Java Platform, Micro Edition (Java ME) provides a robust, flexible environment for applications running on embedded and mobile devices in the Internet of Things: micro-controllers, sensors, gateways, mobile phones, personal digital assistants (PDAs), TV set-top boxes, printers and more.

Does Java SE include JDK and JRE?

Java SE includes: The Java Development Kit (JDK), including the JavaFX Software Development Kit (SDK), Java Runtime Environment (JRE), (Server and regular packages)

What is Java SE programming?

Java Platform, Standard Edition (Java SE) lets you develop and deploy Java applications on desktops and servers. Java offers the rich user interface, performance, versatility, portability, and security that today's applications require.


1 Answers

Oracle Java SE Embedded and Oracle Java ME Embedded are both Oracle products. Since I'm just an engineer (and this is StackOverflow) I'll confine my comments to the technologies and set aside market positioning and licensing topics. For information on those topics please visit the linked product pages, or contact me and I can put you in touch with someone.

Java SE Embedded is (or can be, depending upon configuration) a full Java SE runtime, just like the JRE/JDK for the desktop. It features the HotSpot JVM with JIT compiler and the full set of Java SE class libraries, or to reduce static footprint, it can be configured to support one of the three compact profiles defined in Java SE 8. It also supports platforms not supported by desktop Java, such as a variety of ARM processors, with hard or soft floating point, on several embedded Linux configurations. Typical configurations include 32MB of RAM and 10MB-48MB of static space, depending on which compact profile or full JRE is selected.

Java ME Embedded is targeted at much smaller embedded configurations than SE Embedded. It has a JVM with a JIT compiler (the "Monty" JVM) but which is designed for low overhead and space efficiency instead of optimized runtime performance. There are also certain JVM and Java Language features not present in ME 8 compared to SE 8, such as user-defined classloaders, reflection, JNI, invokedynamic, method handles, and lambda expressions. Java ME 8 also features a radically subsetted class library, much smaller even than the SE 8 Compact-1 profile. Typical configurations will have 128K of RAM and 1MB of static footprint. For a complete specification of this environment (JVM subset spec, language subset spec, and class library APIs) see the JSR-360 Specification. (Requires click-through license.)

There is some work underway to support lambda expressions in this environment; see the JVMLS 2014 talks page and look for "Closures on Embedded JVM" by Oleg Pliss. Note that this is early work, and there are no committed product plans to support lambdas in the ME 8 environment.

like image 171
Stuart Marks Avatar answered Oct 10 '22 18:10

Stuart Marks