Java Platform

From Wikipedia, the free encyclopedia

Java Platforms
Micro Edition (ME)
Standard Edition (SE)
Enterprise Edition (EE)

The '''Java platform''' is the name for a bundle of related programs, or platform, from Sun Microsystems which allow for developing and running programs written in the Java programming language. The platform is not specific to any one processor or operating system, but rather, an execution engine (called a virtual machine) and a compiler with a set of standard libraries are implemented for various hardware and operating systems so that Java programs can run identically on all of them.

Java Sun Logo

Different "editions" of the platform are available, including:

  • Java Standard Edition or Java SE (formerly J2SE) for desktop machines
  • the Java Enterprise Edition or Java EE (formerly J2EE) for web servers
  • the Java Micro Edition or Java ME (formerly J2ME) for hand-held devices such as smart phones.

As of December 2006, the current version of the Java Platform is specified as either 1.6.0 or 6 (both refer to the same version). Version 6 is the product version, while 1.6.0 is the developer version.

Image:JavaPlatform.jpg
Java Platform diagram from Sun, Jan 2007

The Java Platform consists of several programs, each of which provides a distinct portion of its overall capabilities. For example, there is the Java compiler that converts Java source code into Java bytecode (an intermediate language for the Java Virtual Machine (JVM)) and provided as part of the Java Development Kit (JDK). There is a sophisticated Java Runtime Environment (JRE) that usually implements the JVM by means of a just-in-time (JIT) compiler that converts intermediate bytecode into native machine code on the fly. There are 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. There are several other components, some available only in certain editions, as depicted by the diagram at right.

The essential components in the platform are the Java language compiler, the libraries, and the runtime environment in which Java intermediate bytecode "executes" according to the rules laid out in the virtual machine specification.

Contents

[edit] Java Virtual Machine

Main article: Java Virtual Machine

The heart of the Java Platform is the concept of a "virtual machine" that executes Java bytecode programs. This bytecode is the same no matter what hardware or operating system the program is running under. There is a JIT compiler within the Java Virtual Machine, or JVM. The JIT compiler translates the Java bytecode into native processor instructions at run-time and caches the native code in memory during execution.

The use of bytecode as an intermediate language permits Java programs to run on any platform that has a virtual machine available. The use of a JIT compiler means that Java applications, after a short delay during loading and once they have "warmed up" by being all or mostly JIT-compiled, tend to run about as fast as native programs. Since JRE version 1.2, Sun's JVM implementation has included a just-in-time compiler instead of an interpreter.

[edit] Class libraries

In most modern operating systems, a large body of reusable code is provided to simplify the programmer's job. This code is typically provided as a set of dynamically loadable libraries that applications can call at runtime. Because the Java Platform is not dependent on any specific operating system, applications cannot rely on any of the existing libraries. Instead, the Java Platform provides a comprehensive set of standard class libraries, containing much of the same reusable functions commonly found in modern operating systems.

The Java class libraries serve three purposes within the Java Platform. Like other standard code libraries, they provide the programmer a well-known set of functions to perform common tasks, such as maintaining lists of items or performing complex string parsing. In addition, the class libraries provide an abstract interface to tasks that would normally depend heavily on the hardware and operating system. Tasks such as network access and file access are often heavily dependent on the native capabilities of the platform. The Java java.net and java.io libraries implement the required native code internally, then provide a standard interface for the Java applications to perform those tasks. Finally, some underlying platforms may not support all of the features a Java application expects. In these cases, the class libraries can either emulate those features using whatever is available, or provide a consistent way to check for the presence of a specific feature.

Currently the class libraries included in the JRE are still proprietary software. There is an ongoing project of the Free Software Foundation for writing a compatible free set of libraries. It is called Classpath. On November 13, 2006, Sun announced that all of the Java source code will be released entirely under the GNU General Public License, by March 2007.[1]

[edit] Languages

See the category JVM programming languages.

The word Java, by itself, usually refers to the Java programming language which was designed for use with the Java Platform. Programming languages are typically outside of the scope of the phrase "platform", although the Java programming language is listed as a core part of the Java platform. The language and runtime are therefore commonly considered a single unit.

Nevertheless, third parties have produced a number of compilers or interpreters which target the JVM. Some of these are for existing languages, while others are for extensions to the Java language itself. These include:

[edit] Similar platforms

See also: Comparison of C# and Java

The success of Java and its write once, run anywhere concept has led to other similar efforts, notably the Microsoft .NET platform, appearing since 2002, which incorporates many of the successful aspects of Java. .NET in its complete form (Microsoft's implementation) is currently only fully available on Windows platforms, whereas Java is fully available on many platforms. .NET was built from the ground-up to support multiple programming languages, while the Java platform was initially built to support only the Java language (although many other languages have been made for JVM since).

.NET includes an implementation of Java called Visual J# (formerly known as J++) that is not compatible with the Java specification, and the associated class library mostly dates to the old JDK 1.1 version of the language; for these reasons, it is more a transitional language to switch from Java to the Microsoft .NET platform, than a first class Microsoft .NET language.

[edit] References

  1. ^ Sun Open Sources Java Platform. Sun Microsystems (2006-11-13). Retrieved on November 13, 2006.

[edit] See also

Java (Sun)
Major Technologies: Java (programming language) | Java Platform | Java Development Kit | Java Virtual Machine | Java Runtime Environment
History: Java version history | Criticism of Java | Java Community Process | Sun Microsystems
Language Features: Bytecode | Syntax | Applets | Servlets | JavaServer Pages