The Java platform is a bundle of interdependent programs required to create and run programs using the Java programming language. Sun began work on the platform in 1992 and formally launched the programming language in 1995, after which its use grew rapidly across the computer industry. There are three different editions of the Java platform:
- Java Standard Edition, called Java SE (formerly J2SE) for desktop machines
- the Java Enterprise Edition, called Java EE (formerly J2EE) for web and application servers; a superset of the SE
- the Java Micro Edition, called Java ME (formerly J2ME) for hand-held devices such as smart phones. The language is a subset of the Standard Edition language, while the libraries (packages) are mostly a subset of the Standard Edition, plus a few libraries to support a simpler GUI. As the Micro Edition GUI can be implemented on top of the Standard Edition GUI, if appropriate libraries are installed, Micro Edition applications can be run in the Standard Edition.
As of December 2006, the Java platform (Standard Edition) was in its 6th major revision (version 6.0).
How the platform works
The Java platform's centerpiece is an execution engine, also known as the virtual machine or runtime environment, that has been implemented for most operating systems. The Standard Edition JVM has been implemented on Windows, Linux, Unix and Mac OS X. The Enterprise Edition can run on top of any Standard Edition JVM. The Micro Edition JVM has been implemented on Palm OS, Windows Mobile, and many mobile phones. As well, thousands of pre-written Java library classes, also called base classes, are available on each operating system. The Java runtime environment (JRE) and the Java class libraries make all computers look alike so that programs written in the Java programming language can run identically on all of them. Optional packages for the Standard Edition include packages for e-mail sending and retrieving, 3D graphics, video, sound, and Bluetooth. Optional packages for the Micro Edition include Bluetooth, Video, Web Serivces and database connection.
The platform consists of multiple programs, each of which provides a distinct portion of its overall capabilities. The essential components in the platform are the Java source code compiler, the Java class libraries, and the Java runtime environment. The Java source code compiler converts Java source code (files with an extension of .java) into Java bytecode (files with an extension of .class). The runtime environment is a special program that takes as input Java intermediate bytecode (.class files) for execution according to the rules laid out in the JavaTM Virtual Machine Specification, Second Edition.
The Java platform does not necessarily include an integrated development environment (IDE), although there is a Java runtime environment bundle available from Sun that includes the free NetBeans IDE. Several other free IDE's exist, including the widely used, free Eclipse IDE (which is open-source and can be used for several other languages besides Java).
Bytecode and JIT compilation
Java bytecode is an intermediate language; Java bytecode programs are loaded and run by a Java Virtual Machine (JVM), also known as a Java Runtime Environment (JRE). JREs tend to be sophisticated; most of them implement the JVM specification by means of a just-in-time (JIT) compiler that, at runtime, converts intermediate bytecode into native machine code. JIT compilation occurs on a per method basis only the first time each method is called, after which the native code for that method remains cached in memory; this means that subsequent executions of that method run as fast as native programs. Java programs tend to "warm up" after they have been executing for awhile, and in some cases they execute as efficiently as native code after an initial startup period.
The Java platform also includes extensive libraries (pre-compiled into Java bytecode) containing reusable code, as well as numerous ways for Java applications to be deployed, including being embedded in a web page as an applet, on a desktop machine for a single user, on a web server as a servlet (returning "dynamic" information to web browsers), or on a web server as a web service endpoint (procedure callable across a network from any kind of platform). There are several other components as well.
Associated file extensions
- Java source files have an extension of .java
- Java bytecode files (also called class files) have an extension of .class
- Java executable programs have an extension of .jar (Java ARchive); they must be loaded at runtime by a Java Runtime Environement (JRE)
- .jar files may contain byte codes, resources such as images, metadata, and they may even contain source code
- To view and separate the contents of a .jar file, make a copy of it and rename the copy to have a .zip extension. Then open it like any .zip file.
- when people say "component" or library, they usually mean a .jar file that does not have an entry point — it has methods that we can call, but it doesn't run "standalone"
- Enterprise Java (on a web server) uses two additional file archive extensions: .war and .ear . A .war file can be used to install a web application into a servlet container (a Java Virtual Machine, or runtime, that collaborates with a web server). An .ear file is used to install and encapsulate Enterprise Java Beans.
When downloading Java, users must select their current operating system, and then choose either the Java Runtime Edition (JRE) or Java Development Kit (JDK) version. The JRE contains only the runtime (virtual machine) and pre-compiled libraries; this is all that is needed to run Java programs on a given operating system. The JDK also contains the Java source code compiler and other utilities needed by programmers when developing Java programs.
Java SE Platform Releases
- 1.0 - Released in 1996, the original Java SE had quite a few deficiencies.
- 1.1 - Released in 1997, Java SE version 1.1 was greatly revised and improved.
- 1.2 - Released in 1998 and known as Java version 2, it introduced the Swing library for graphical user interface design
- 1.3 - Released in 2000, Java SE version 3 had no new syntax but introduced new libraries.
- 1.4 - Released in 2002, Java SE version 4 introduced the Java assert statement.
- 5.0 - Released in 2004, Java SE version 5 introduced quite a bit of new syntax, including generics.
- 6.0 - Released in 2006.
Java EE Platform Releases
Java ME Platform Releases
Micro Edition applications are targeted for a configuration and profile. Current combinations include
- Connected Limited Device Configuration (CLDC) and Mobile Information Device Profile (MIDP)
- Connected Device Configuration (CDC) and Personal Basic Profile
- Connected Device Configuration (CDC) and Personal Profile
The CLDC is targeted for less powerful devices such as "feature phone" mobile phones, while the CDC is targeted for more powerful devices, such as PDAs, "smartphones" and TV set top boxes. However, almost all devices currently use the CLDC.
The CLDC 1.0/MIDP 1.0 were criticized by programmers for being a lowest-common-denominator approach. Notably absent were access to the device's address book, datebook and to-do list, which is important for many mobile applications. It was difficult to write a non-trivial application that had the ease-of-use of native applications. This and other reasons lead mobile phone manufacturers to provide non-standard libraries (packages) to provide more direct access to system resources. Applications which use these non-standard libraries are not portable to other Micro Edition devices. The market for Micro Edition applications is thus "fragmented" -- divided into device- or manufacturer-specific groups. Currently, significant Mobile Edition Java applications that are "write-once, run anywhere" are uncommon.
The CLDC 1.1/MIDP 2.0 provided significant new functionality, and optional libraries give access to the address book, datebook, to-do list and other features such as Bluetooth. As of 2008, this has not yet triggered a convergence of Mobile Edition applications.
At the 2007 JavaOne Conference, James Gosling (the father of Java, and a Vice President of Sun Microsystems, the biggest corporate supporter of Java) stated that he foresees Standard Edition replacing Micro Edition in mobile devices, as they grow more powerful. He acknowledges this convergence will probably take many years.
Competition with C# and the .NET Framework
See a Comparison of Java and .NET.
- Open-Source Java Project Overview. Retrieved on 2007-04-08.
- "Java SE at a Glance" Copyright 1994-2007 Sun Microsystems, Inc.publisher=Sun (2007). Retrieved on 2007-09-22.
- "Java EE at a Glance" Copyright 1994-2007 Sun Microsystems, Inc.publisher=Sun (2007). Retrieved on 2007-09-22.
- "Java ME at a Glance" Copyright 1994-2007 Sun Microsystems, Inc.publisher=Sun (2007). Retrieved on 2007-09-22.
- "The Java Virtual Machine Specification, Second Edition" Copyright © 1997-1999 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California 94303 U.S.A. All Rights Reserved.. Sun Microsystems, Inc. (1999). Retrieved on 2007-08-24.
- "The Java Language Specification, Third Edition" Copyright © 1996-2005 Sun Microsystems, Inc.4150 Network Circle, Santa Clara, California 95054 U.S.A.All rights reserved.. Sun Microsystems, Inc. (2005). Retrieved on 2007-08-24.