What is the Difference Between Java SE, Java EE, Java ME and JavaFX?
Besides being a programming language, Java is also a software platform. As a programming language, Java is a high-level object-oriented language that has a particular syntax and style. A Java platform is a particular environment in which Java programming language applications run, which are divided into 4 major categories:
Java SE, EE, ME and JavaFX. But what’s the difference between Java SE, EE, ME and Java FX? Will you be missing anything if you go with Standard Edition (SE) vs. Enterprise (EE)? Can you develop a mobile enterprise application with Java Enterprise Edition (Java EE) and not the Micro Edition (ME)? In this blog post, you will get an overview of the Java editions, their differences, and a few recommendations for developing applications with each platform.
Each platform consists of two major components, the JRE (acronym for Java Runtime Environment) , and the JDK (Java Development Kit). JRE is the layer needed to run Java applications, and JDK is required to develop these applications. Each platform also includes an application programming interface, or an API. Each variation of the Java platforms contains its specific set of APIs.
By installing the JDK, you will have already gotten the JRE, since it is included with the JDK. One of the biggest advantages of Java is that any code written in the Java programming language is portable so that Java programs can run on any operating system, platform, or architecture for which Java is available as runtime which is also referred to as the Java Virtual Machine, shortly JVM.
Unlike purely compiled languages like C++ or interprested languages like PHP, some languages like Java often try to compromise by having programs that can be partially compiled into an intermediate state, called bytecode. It’s a way that you can do as much of the compilation as possible in advance, but not quite all the way to the platform-specific machine code, leaving the final step, what’s often called just-in-time compilation, is done on the computer of the running software.
At the heart of the JRE is the Java virtual machine, more often referred to as the JVM. The JVM acts like a virtual processor whose main function is to interpret or translate the Java bytecode and make it run as a final program.
Java SE is usually used for developing standalone applications, as well as GUI-based applications (applications with a Graphical User Interface) such as productivity suites and ERP front-ends to full-blown action games.
Java EE is built on top of Java SE. Java Enterprise Edition is actually “just” a specification featuring a set of high-level APIs, with actual implementations available from Oracle, and other vendors like RedHat and IBM. Java EE is usually used for developing more complicated large-scale business applications which can be distributed, transactional, and portable. The goal of the Java EE platform is to provide developers with a powerful set of APIs while shortening the development time, reducing application complexity, and improving application performance.
Java ME or the Micro Edition has been designed as a client-side Java development platform for building wireless, Java-based cellphone and PDA apps. ME provides a robust, flexible environment for applications running on mobile and embedded devices. Some examples include mobile phones, set-top boxes, blu-ray disc players, digital media devices, mobile-to-mobile modules, printers, and more.
JavaFX is a set of Java libraries featuring graphics and media packages that enables developers to design, create, test, debug, and deploy rich Internet-savvy client applications that operate consistently across diverse platforms. It can also be used for creating and delivering desktop applications with its own GUI components as an alternative to Java Swing libraries.