Java version history
Encyclopedia
The Java language
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 has undergone several changes since JDK
Java Development Kit
The Java Development Kit is an Oracle Corporation product aimed at Java developers. Since the introduction of Java, it has been by far the most widely used Java SDK. On 17 November 2006, Sun announced that it would be released under the GNU General Public License , thus making it free software...

 1.0 as well as numerous additions of classes and packages to the standard library
Library (computer science)
In computer science, a library is a collection of resources used to develop software. These may include pre-written code and subroutines, classes, values or type specifications....

. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community Process
Java Community Process
The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform....

 (JCP), which uses Java Specification Requests (JSRs) to propose and specify additions and changes to the Java platform. The language is specified by the Java Language Specification (JLS); changes to the JLS are managed under JSR 901.

In addition to the language changes, much more dramatic changes have been made to the Java class library over the years, which has grown from a few hundred classes in JDK 1.0 to over three thousand in J2SE 5. Entire new APIs, such as Swing
Swing (Java)
Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....

 and Java2D, have been introduced, and many of the original JDK 1.0 classes and methods have been deprecated
Deprecation
In the process of authoring computer software, its standards or documentation, deprecation is a status applied to software features to indicate that they should be avoided, typically because they have been superseded...

.

Some programs allow conversion of Java programs from one version of the Java platform to an older one (for example Java 5.0 backported to 1.4) (see Java backporting tools).

JDK 1.0 (January 23, 1996)

Codename Oak
Oak (programming language)
Oak was a programming language created by James Gosling in 1991, initially for Sun Microsystems set-top box project. The language later evolved to become Java.The name Oak was used by Gosling after an oak tree that stood outside his office.-History:...

. Initial release The first stable version was the JDK 1.0.2. is called Java 1

JDK 1.1 (February 19, 1997)

Major additions included:
  • an extensive retooling of the AWT
    Abstract Window Toolkit
    The Abstract Window Toolkit is Java's original platform-independent windowing, graphics, and user-interface widget toolkit. The AWT is now part of the Java Foundation Classes — the standard API for providing a graphical user interface for a Java program.AWT is also the GUI toolkit for a...

     event model
  • inner class
    Inner class
    In object-oriented programming , an inner class or nested class is a class declared entirely within the body of another class or interface. It is distinguished from a subclass.-Overview:...

    es added to the language
  • JavaBeans
    JavaBeans
    JavaBeans are reusable software components for Java. Practically, they are classes written in the Java programming language conforming to a particular convention. They are used to encapsulate many objects into a single object , so that they can be passed around as a single bean object instead of as...

  • JDBC
    Java Database Connectivity
    Java DataBase Connectivity, commonly referred to as JDBC, is an API for the Java programming language that defines how a client may access a database. It provides methods for querying and updating data in a database. JDBC is oriented towards relational databases...

  • RMI
    Java remote method invocation
    The Java Remote Method Invocation Application Programming Interface , or Java RMI, is a Java application programming interface that performs the object-oriented equivalent of remote procedure calls ....

  • reflection
    Reflection (computer science)
    In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior at runtime....

     which supported Introspection only, no modification at runtime was possible.

J2SE 1.2 (December 8, 1998)

Codename Playground.
This and subsequent releases through J2SE 5.0 were rebranded retrospectively Java 2 and the version name "J2SE" (Java 2 Platform, Standard Edition
Java Platform, Standard Edition
Java Platform, Standard Edition or Java SE is a widely used platform for programming in the Java language. It is the Java Platform used to deploy portable applications for general use...

) replaced JDK to distinguish the base platform from J2EE (Java 2 Platform, Enterprise Edition
Java Platform, Enterprise Edition
Java Platform, Enterprise Edition or Java EE is widely used platform for server programming in the Java programming language. The Java platform differs from the Java Standard Edition Platform in that it adds libraries which provide functionality to deploy fault-tolerant, distributed, multi-tier...

) and J2ME (Java 2 Platform, Micro Edition
Java Platform, Micro Edition
Java Platform, Micro Edition, or Java ME, is a Java platform designed for embedded systems . Target devices range from industrial controls to mobile phones and set-top boxes...

). Major additions included:
  • strictfp
    Strictfp
    strictfp is a keyword in the Java programming language that restricts floating-point calculations to ensure portability. It was introduced into Java with the Java virtual machine version 1.2.-Basis:...

    keyword
  • the Swing
    Swing (Java)
    Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....

     graphical API was integrated into the core classes
  • Sun's JVM was equipped with a JIT compiler
    Just-in-time compilation
    In computing, just-in-time compilation , also known as dynamic translation, is a method to improve the runtime performance of computer programs. Historically, computer programs had two modes of runtime operation, either interpreted or static compilation...

     for the first time
  • Java Plug-in
  • Java IDL, an IDL
    Interface description language
    An interface description language , or IDL for short, is a specification language used to describe a software component's interface...

     implementation for CORBA
    Çorba
    Chorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...

     interoperability
  • Collections
    Java collections framework
    The Java collections framework is a set of classes and interfaces that implement commonly reusable collection data structures.Although it is a framework, it works in a manner of a library...

     framework

J2SE 1.3 (May 8, 2000)

Codename Kestrel.
The most notable changes were:
  • HotSpot
    HotSpot
    HotSpot is a Java virtual machine for desktops and servers, maintained and distributed by Oracle Corporation. It features techniques such as just-in-time compilation and adaptive optimization designed to improve performance.-History:...

     JVM included (the HotSpot JVM was first released in April, 1999 for the J2SE 1.2 JVM)
  • RMI
    Java remote method invocation
    The Java Remote Method Invocation Application Programming Interface , or Java RMI, is a Java application programming interface that performs the object-oriented equivalent of remote procedure calls ....

     was modified to support optional compatibility with CORBA
    Çorba
    Chorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...

  • JavaSound
  • Java Naming and Directory Interface
    Java Naming and Directory Interface
    The Java Naming and Directory Interface is a Java API for a directory service that allows Java software clients to discover and look up data and objects via a name. Like all Java APIs that interface with host systems, JNDI is independent of the underlying implementation...

     (JNDI) included in core libraries (previously available as an extension)
  • Java Platform Debugger Architecture
    Java Platform Debugger Architecture
    The Java Platform Debugger Architecture is a collection of APIs to debug Java code.* Java Debugger Interface - defines a high-level Java language interface which developers can easily use to write remote debugger application tools....

     (JPDA)
  • Synthetic proxy classes

J2SE 1.4 (February 6, 2002)

Codename Merlin.
This was the first release of the Java platform developed under the Java Community Process as JSR 59. Major changes included:
Language changes
  • assert
    Assertion (computing)
    In computer programming, an assertion is a predicate placed in a program to indicate that the developer thinks that the predicate is always true at that place.For example, the following code contains two assertions:...

    keyword (Specified in JSR 41.)


Library improvements
  • regular expressions modeled after Perl
    Perl
    Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

     regular expressions
  • exception chaining
    Exception chaining
    Exception chaining, or exception wrapping, is an object-oriented programming technique of handling exceptions by re-throwing a caught exception after wrapping it inside a new exception. The original exception is saved as a property of the new exception...

     allows an exception to encapsulate original lower-level exception
  • Internet Protocol version 6 (IPv6
    IPv6
    Internet Protocol version 6 is a version of the Internet Protocol . It is designed to succeed the Internet Protocol version 4...

    ) support
  • non-blocking NIO (New Input/Output
    New I/O
    New I/O, usually called NIO, is a collection of Java programming language APIs that offer features for intensive I/O operations. It was introduced with the J2SE 1.4 release of Java by Sun Microsystems to complement an existing standard I/O. NIO was developed under the Java Community Process as JSR...

    ) (Specified in JSR 51.)
  • logging API (Specified in JSR 47.)
  • image I/O API for reading and writing images in formats like JPEG
    JPEG
    In computing, JPEG . The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and image quality. JPEG typically achieves 10:1 compression with little perceptible loss in image quality....

     and PNG
  • integrated XML
    XML
    Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

     parser and XSLT
    XSLT
    XSLT is a declarative, XML-based language used for the transformation of XML documents. The original document is not changed; rather, a new document is created based on the content of an existing one. The new document may be serialized by the processor in standard XML syntax or in another format,...

     processor (JAXP) (Specified in JSR 5 and JSR 63.)
  • integrated security and cryptography extensions (JCE, JSSE, JAAS
    Java Authentication and Authorization Service
    Java Authentication and Authorization Service, or JAAS, pronounced "Jazz", is a Java security framework for user-centric security to augment the Java code-based security...

    )
  • Java Web Start
    Java Web Start
    In computing, Java Web Start is a framework developed by Sun Microsystems that allows users to start application software for the Java Platform directly from the Internet using a web browser....

     included (Java Web Start was first released in March, 2001 for J2SE 1.3) (Specified in JSR 56.)
  • Preferences API (java.util.prefs)

J2SE 5.0 (September 30, 2004)

Codename Tiger.
Originally numbered 1.5, which is still used as the internal version number.
This version was developed under JSR 176.

J2SE 5.0 entered its end-of-life on April 8, 2008 and is no longer supported by Sun as of November 3, 2009.

Tiger added a number of significant new language features:
  • Generics
    Generics in Java
    Generics are a facility of generic programming that was added to the Java programming language in 2004 as part of J2SE 5.0. They allow "a type or method to operate on objects of various types while providing compile-time type safety." A common use of this feature is when using a Java Collection...

    : Provides compile-time (static) type safety
    Type safety
    In computer science, type safety is the extent to which a programming language discourages or prevents type errors. A type error is erroneous or undesirable program behaviour caused by a discrepancy between differing data types...

     for collections and eliminates the need for most typecasts (type conversion)
    Type conversion
    In computer science, type conversion, typecasting, and coercion are different ways of, implicitly or explicitly, changing an entity of one data type into another. This is done to take advantage of certain features of type hierarchies or type representations...

    . (Specified by JSR 14.)
  • Metadata: Also called annotation
    Java annotation
    An annotation, in the Java computer programming language, is a special form of syntactic metadata that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated...

    s; allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities. (Specified by JSR 175.)
  • Autoboxing/unboxing: Automatic conversions between primitive type
    Primitive type
    In computer science, primitive data type is either of the following:* a basic type is a data type provided by a programming language as a basic building block...

    s (such as int) and primitive wrapper class
    Primitive wrapper class
    A primitive wrapper class in the Java programming language is one of eight classes provided in the package to provide object methods for the eight primitive types. All of the primitive wrapper classes in Java are immutable...

    es (such as ). (Specified by JSR 201.)
  • Enumerations: The enum keyword creates a typesafe
    Type safety
    In computer science, type safety is the extent to which a programming language discourages or prevents type errors. A type error is erroneous or undesirable program behaviour caused by a discrepancy between differing data types...

    , ordered list of values (such as Day.MONDAY, Day.TUESDAY, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern). (Specified by JSR 201.)
  • Varargs
    Variadic function
    In computer programming, a variadic function is a function of indefinite arity, i.e., one which accepts a variable number of arguments. Support for variadic functions differs widely among programming languages....

    : The last parameter of a method can now be declared using a type name followed by three dots (e.g. void drawtext(String... lines)). In the calling code any number of parameters of that type can be used and they are then placed in an array to be passed to the method, or alternatively the calling code can pass an array of that type.
  • Enhanced for each
    Foreach
    For each is a computer language idiom for traversing items in a collection. Foreach is usually used in place of a standard for statement. Unlike other for loop constructs, however, foreach loops usually maintain no explicit counter: they essentially say "do this to everything in this set",...

    loop: The for loop syntax is extended with special syntax for iterating over each member of either an array or any , such as the standard classes, using a construct of the form:



void displayWidgets (Iterable widgets) {
for (Widget w: widgets) {
w.display;
}
}

This example iterates over the Iterable object widgets, assigning each of its items in turn to the variable w, and then calling the Widget method display for each item. (Specified by JSR 201.)
  • Fix the previously broken semantics of the Java Memory Model
    Java Memory Model
    The Java memory model describes how threads in the Java programming language interact through memory. Together with the description of single-threaded execution of code, the memory model provides the semantics of the Java programming language....

    , which defines how threads
    Thread (computer science)
    In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

     interact through memory.
  • Static import
    Static import
    Static import is a feature introduced in the Java programming language that allows members defined in a class as public static to be used in Java code without specifying the class in which the field is defined...

    s


There were also the following improvements to the standard libraries:
  • Automatic stub
    Method stub
    A method stub or simply stub in software development is a piece of code used to stand in for some other programming functionality. A stub may simulate the behavior of existing code or be a temporary substitute for yet-to-be-developed code...

     generation for RMI
    Java remote method invocation
    The Java Remote Method Invocation Application Programming Interface , or Java RMI, is a Java application programming interface that performs the object-oriented equivalent of remote procedure calls ....

     objects.
  • Swing
    Swing (Java)
    Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....

    : New skinnable look and feel, called synth
    Synth Look and Feel
    synth is a skinnable Java look and feel, which is configured with an XML property file.According to Sun, goals for synth were:* Enable to create custom look without writing any code.* Allow appearance to be configured from images....

    .
  • The concurrency utilities in package java.util.concurrent.
  • Scanner class for parsing data from various input streams and buffers.


Java 5 is the last release of Java to officially support the Microsoft Windows 9x line (Windows 95, Windows 98, Windows ME). http://www.java.com/en/download/windows98me_manual.jsp Unofficially, Java SE 6 Update 7 (1.6.0.7) is the last version of Java to be shown working on this family of operating systems. http://java.sun.com/products/archive/j2se/6u7/index.html

Java SE 6 (December 11, 2006)

Codename Mustang.
As of this version, Sun replaced the name "J2SE" with Java SE and dropped the ".0" from the version number. Internal numbering for developers remains 1.6.0.
This version was developed under JSR 270.

During the development phase, new builds including enhancements and bug fixes were released approximately weekly. Beta versions were released in February and June 2006, leading up to a final release that occurred on December 11, 2006. The current revision is Update 29 which was released in October 2011.

Major changes included in this version:
  • Support for older Win9x versions dropped. Unofficially Java 6 Update 7 is the last release of Java shown to work on these versions of Windows. This is believed to be due to the major changes in Update 10.
  • Scripting Language Support (JSR 223): Generic API for tight integration with scripting languages, and built-in Mozilla
    Mozilla
    Mozilla is a term used in a number of ways in relation to the Mozilla.org project and the Mozilla Foundation, their defunct commercial predecessor Netscape Communications Corporation, and their related application software....

     JavaScript
    JavaScript
    JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

     Rhino
    Rhino (JavaScript engine)
    Rhino is an open source JavaScript engine. It is developed entirely in Java and managed by the Mozilla Foundation. The Foundation also provides another implementation of JavaScript engine written in C known as SpiderMonkey....

     integration
  • Dramatic performance improvements for the core platform, and Swing
    Swing (Java)
    Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....

    .
  • Improved Web Service support through JAX-WS
    JAX-WS
    The Java API for XML Web Services is a Java programming language API for creating web services. It is part of the Java EE platform from Sun Microsystems. Like the other Java EE APIs, JAX-WS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients...

     (JSR 224)
  • JDBC 4.0 support (JSR 221).
  • Java Compiler API (JSR 199): an API allowing a Java program to select and invoke a Java Compiler programmatically.
  • Upgrade of JAXB to version 2.0: Including integration of a StAX
    StAX
    Streaming API for XML is an application programming interface to read and write XML documents, originating from the Java programming language community.Traditionally, XML APIs are either:...

     parser.
  • Support for pluggable annotations
    Java annotation
    An annotation, in the Java computer programming language, is a special form of syntactic metadata that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated...

     (JSR 269)
  • Many GUI
    Gui
    Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...

     improvements, such as integration of SwingWorker
    SwingWorker
    SwingWorker is a popular utility class developed by Sun Microsystems for the Swing library of the Java programming language. enables proper use of the event dispatching thread...

     in the API, table sorting and filtering, and true Swing
    Swing (Java)
    Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....

     double-buffering (eliminating the gray-area effect).
  • JVM improvements include: synchronization
    Data synchronization
    Data synchronization is the process of establishing consistency among data from a source to a target data storage and vice versa and the continuous harmonization of the data over time. It is fundamental to a wide variety of applications, including file synchronization and mobile device...

     and compiler
    Compiler
    A compiler is a computer program that transforms source code written in a programming language into another computer language...

     performance optimizations, new algorithms and upgrades to existing garbage collection algorithms
    Garbage collection (computer science)
    In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...

    , and application start-up performance.

Java 6 updates

After Java 6 release, Sun released several updates which, while not changing any public API, greatly enhanced end-user usability.
Release Release Date Highlights
Java SE 6 Update 10 2008-10-15 Major changes for this update include:
  • Java Deployment Toolkit, a set of JavaScript
    JavaScript
    JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

     functions to ease the deployment of applets
    Java applet
    A Java applet is an applet delivered to users in the form of Java bytecode. Java applets can run in a Web browser using a Java Virtual Machine , or in Sun's AppletViewer, a stand-alone tool for testing applets...

     and Java Web Start
    Java Web Start
    In computing, Java Web Start is a framework developed by Sun Microsystems that allows users to start application software for the Java Platform directly from the Internet using a web browser....

     applications.
  • Java Kernel, a small installer including only the most commonly used JRE classes. Other packages are downloaded when needed.
  • Enhanced updater.
  • Enhanced versioning and pack200 support: server-side support is no longer required.
  • Java Quick Starter, to improve cold start-up time.
  • Improved performance of Java2D graphics primitives on Windows, using Direct3D
    Direct3D
    Direct3D is part of Microsoft's DirectX application programming interface . Direct3D is available for Microsoft Windows operating systems , and for other platforms through the open source software Wine. It is the base for the graphics API on the Xbox and Xbox 360 console systems...

     and hardware acceleration.
  • A new Swing
    Swing (Java)
    Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....

     look and feel
    Look and feel
    In software design, look and feel is a term used in respect of a graphical user interface and comprises aspects of its design, including elements such as colors, shapes, layout, and typefaces , as well as the behavior of dynamic elements such as buttons, boxes, and menus...

     called Nimbus and based on synth
    Synth Look and Feel
    synth is a skinnable Java look and feel, which is configured with an XML property file.According to Sun, goals for synth were:* Enable to create custom look without writing any code.* Allow appearance to be configured from images....

    .
  • Next-Generation Java Plug-In: applets now run in a separate process and support many features of Web Start applications.
Java SE 6 Update 11 2008-12-03
Java SE 6 Update 12 2008-12-12 This release includes the 64-bit Java plug-on (for 64-bit web browsers only), Windows Server 2008 support, and performance improvements of Java and JavaFX
JavaFX
JavaFX is a software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices....

 applications.
Java SE 6 Update 14 2009-05-28 This release includes extensive performance updates to the HotSpot
HotSpot
HotSpot is a Java virtual machine for desktops and servers, maintained and distributed by Oracle Corporation. It features techniques such as just-in-time compilation and adaptive optimization designed to improve performance.-History:...

 JIT compiler, compressed pointers for 64-bit machines, as well as support for the G1 (Garbage First) low pause garbage collector.

The -XX:+DoEscapeAnalysis option directs the HotSpot JIT compiler to use escape analysis
Escape analysis
In programming language compiler optimization theory, escape analysis is a method for determining the dynamic scope of pointers. It is related to pointer analysis and shape analysis....

 to determine if local objects can be allocated on the stack
Stack-based memory allocation
Stacks in computing architectures are regions of memory where data is added or removed in a last-in-first-out manner.In most modern computer systems, each thread has a reserved region of memory referred to as its stack. When a function executes, it may add some of its state data to the top of the...

 instead of the heap.

Some developers have noticed an issue introduced in this release which causes debuggers to miss breakpoints seemingly randomly. Sun has a corresponding bug, which is tracking the issue. The workaround applies to the Client and Server VMs. Using the -XX:+UseParallelGC option will prevent the failure. Another workaround is to roll back to update 13, or to upgrade to update 16.
Java SE 6 Update 15 2009-08-04 Introduced the patch-in-place functionality
Java SE 6 Update 16 2009-08-11 Fixes the issue introduced in update 14 which caused debuggers to miss breakpoints.
Java SE 6 Update 17 2009-11-04
Java SE 6 Update 18 2010-01-13
Java SE 6 Update 19 2010-03-30
Java SE 6 Update 20 2010-04-15
Java SE 6 Update 21 2010-07-07
Java SE 6 Update 22 2010-10-12
Java SE 6 Update 23 2010-12-08
Java SE 6 Update 24 2011-02-15
Java SE 6 Update 25 2011-03-21 Includes "tiered" compilation in the Server VM that enables it to start quickly as does the Client VM, while achieving superior peak performance. This feature is enabled by specifying -server and -XX:+TieredCompilation command options.
Java SE 6 Update 26 2011-06-07
Java SE 6 Update 27 2011-08-16
Java SE 6 Update 29 2011-10-18

Java SE 7 (July 28, 2011)

Java 7 (codename Dolphin) is a major update to Java which was launched on July 7 of 2011 and was made available for developers on July 28, 2011. The development period was organized into thirteen milestones; on February 18, 2011, milestone 13, the last milestone was reached. On average, 8 builds (which generally included enhancements and bug fixes) were released per milestone. The Feature list at the Open JDK 7 project lists many of the feature changes.

The feature additions for Java 7
  • JVM
    Java Virtual Machine
    A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...

     support for dynamic languages
    Dynamic programming language
    Dynamic programming language is a term used broadly in computer science to describe a class of high-level programming languages that execute at runtime many common behaviors that other languages might perform during compilation, if at all...

    , following the prototyping work currently done on the Multi Language Virtual Machine
    Da Vinci Machine
    The Da Vinci Machine, also called the Multi Language Virtual Machine is a Sun Microsystems project aiming to prototype the extension of the Java Virtual Machine to add support for dynamic languages....

  • Compressed 64-bit pointers Available in Java 6 with -XX:+UseCompressedOops
  • Small language changes (grouped under a project named Coin):
  • Strings in switch
    Switch statement
    In computer programming, a switch, case, select or inspect statement is a type of selection control mechanism that exists in most imperative programming languages such as Pascal, Ada, C/C++, C#, Java, and so on. It is also included in several other types of languages...

  • Automatic resource management in try-statement
  • Improved type inference for generic instance creation
  • Simplified varargs method declaration
  • Binary integer literals
  • Allowing underscores in numeric literals
  • Catching multiple exception types and rethrowing exceptions with improved type checking
  • Concurrency utilities under JSR 166
  • New file I/O
    I/O
    I/O may refer to:* Input/output, a system of communication for information processing systems* Input-output model, an economic model of flow prediction between sectors...

     library to enhance platform independence and add support for metadata and symbolic links. The new packages are java.nio.file and java.nio.file.attribute
  • Library-level support for Elliptic curve cryptography
    Elliptic curve cryptography
    Elliptic curve cryptography is an approach to public-key cryptography based on the algebraic structure of elliptic curves over finite fields. The use of elliptic curves in cryptography was suggested independently by Neal Koblitz and Victor S...

     algorithms
  • An XRender
    XRender
    The X Rendering Extension is an X Window System extension to implement Porter-Duff image compositing in the X server, to allow efficient display of transparent images.- History :...

     pipeline for Java 2D, which improves handling of features specific to modern GPUs
  • New platform APIs for the graphics features originally planned for release in Java version 6u10
  • Enhanced library-level support for new network protocols, including SCTP and Sockets Direct Protocol
    Sockets Direct Protocol
    The Sockets Direct Protocol is a networking protocol originally defined by the Software Working Group of the InfiniBand Trade Association. Originally designed for InfiniBand , SDP now has been redefined as a transport agnostic protocol for Remote Direct Memory Access network fabrics...

  • Upstream updates to XML and Unicode


Lambda (Java upcoming implementation of Lambda programming
Lambda (programming)
Lambda is an operator used to denote anonymous functions or closures, following the usage of lambda calculus, in programming languages such as C#, Erlang, Lisp, Python, Ruby, Scala, and recently C++.-C#:In C#, lambda expressions are often used with LINQ:...

), Jigsaw (Java upcoming implementation of modules
Modular programming
Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...

), and part of Coin were dropped from Java 7. Java 8 will be implemented with the remaining features in late 2012.

Java 7 updates

Oracle plans to issue updates to the Java 7 family on a quarterly basis.
Release Release Date Highlights
Java SE 7 2011-07-07 Initial Java 7 Release
Java SE 7 Update 1 2011-10-18 20 Security Fixes, other bug fixes
Java SE 7 Update 2
http://jdk7.java.net/preview/
preview b13

Java SE 8

Java 8 is expected in Summer 2013
and will include at a minimum the features that were planned for Java 7 but later deferred.
  • Modularization of the JDK under Project Jigsaw
  • Language-level support for lambda expressions
    Lambda (programming)
    Lambda is an operator used to denote anonymous functions or closures, following the usage of lambda calculus, in programming languages such as C#, Erlang, Lisp, Python, Ruby, Scala, and recently C++.-C#:In C#, lambda expressions are often used with LINQ:...

     (officially, lambda expressions; unofficially, closures
    Closure (computer science)
    In computer science, a closure is a function together with a referencing environment for the non-local variables of that function. A closure allows a function to access variables outside its typical scope. Such a function is said to be "closed over" its free variables...

    ) under Project Lambda. There was an ongoing debate in the Java community on whether to add support for lambda expressions. Sun later declared that lambda expressions would be included in Java 8 and asked for community input to refine the feature.
  • Parts of project Coin that are not included in Java 7
  • Tight integration with JavaFX
    JavaFX
    JavaFX is a software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices....


Java 9

At JavaOne 2011, Oracle discussed features they hope to have in Java 9, including better support for multi-gigabyte heaps, better native code integration, and a self-tuning JVM.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK