Java Micro Edition (ME)
Java ME was a big success at Sun, having been embedded within billions of cell phones of all types and sizes. It's also used to power countless custom embedded solutions by third parties around the world. To be specific, Java ME is made up mainly of two offerings: Connected Limited Device Configuration (CLDC), and Connected Device Configuration (CDC). The overall differences between the two are their capabilities; CLDC is a smaller subset, with a very small VM, meant to run on devices of limited capability (hence the word limited in its name); CDC is a more complete Java implementation, and is meant for more powerful mobile devices. CDC is also bytecode compatible with Java SE -- meaning .class files compiled for Java SE will run on the CDC JVM -- while CLDC is not.
Because of the limitations and differences between the two flavors of Java ME (CDC and CLDC) and Java SE, there are differences in the Java APIs and libraries on all three. This situation, although justified to make the JVMs work well on devices of all sizes, is a source of frustration to developers known as fragmentation. To help remedy this, Oracle has announced its intent to unify the Java ME and Java SE APIs, and in turn remove fragmentation from the Java market.
Other plans Oracle has announced include a focus on improving Java ME startup times and performance overall; improved power management for mobile devices; efforts to port to emerging categories of embedded devices (MIDs, media players, and so on); and enhancements to better enable JavaFX and JavaFX Mobile.
Based on statements by Larry Ellison and other executives (such as Thomas Kurian), Oracle has totally bought into the JavaFX message. JavaFX is a powerful runtime, script language, and set of tools to enable Java developers to easily build rich Internet applications (RIA) with media capabilities. Flash/Flex and Silverlight also play in the RIA space. However, JavaFX applications are meant to run equally on all the screens of your life, as Oracle puts it, with one code base. Also, since JavaFX is built on Java, you can integrate and use existing Java code in your JavaFX applications.
You can run JavaFX applications directly on your desktop computer, embedded within a web page, via Java WebStart, or on devices that support JavaFX Mobile. At Mobile World Congress in 2009, multiple handset manufacturers and carriers announced a commitment to support JavaFX Mobile on their devices. But what are Oracle's plans for JavaFX?
Oracle has said that it will increase investment in JavaFX to provide an unmatched experience for RIAs, with the following focus:
- Create a design paradigm based on the visual assembly of components
- Create an extensive library of rich UI components for use in your JavaFX applications
- Enhance JavaFX performance across all platforms
- Enhance cross-device portability of the JavaFX applications
- Support emerging devices and UI paradigms (i.e. multi-touch)
And of course, Ellison himself hinted at a cloud-based implementation of OpenOffice at JavaOne last year. Based on that, I predict Oracle will make JavaFX a major part of its cloud strategy going forward, regardless of Ellison's personal feelings regarding the "cloud."