Java version history
Encyclopedia
The Java language
has undergone several changes since JDK
1.0 as well as numerous additions of classes and packages to the standard library
. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community Process
(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
and Java2D, have been introduced, and many of the original JDK 1.0 classes and methods have been deprecated
.
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).
. Initial release The first stable version was the JDK 1.0.2. is called Java 1
This and subsequent releases through J2SE 5.0 were rebranded retrospectively Java 2 and the version name "J2SE" (Java 2 Platform, Standard Edition
) replaced JDK to distinguish the base platform from J2EE (Java 2 Platform, Enterprise Edition
) and J2ME (Java 2 Platform, Micro Edition
). Major additions included:
The most notable changes were:
This was the first release of the Java platform developed under the Java Community Process as JSR 59. Major changes included:
Language changes
Library improvements
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:
This example iterates over the
There were also the following improvements to the standard libraries:
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
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:
The feature additions for Java 7
Lambda (Java upcoming implementation of Lambda programming
), Jigsaw (Java upcoming implementation of modules
), and part of Coin were dropped from Java 7. Java 8 will be implemented with the remaining features in late 2012.
and will include at a minimum the features that were planned for Java 7 but later deferred.
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 OakOak (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 AWTAbstract Window ToolkitThe 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 classInner classIn 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 - JavaBeansJavaBeansJavaBeans 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...
- JDBCJava Database ConnectivityJava 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...
- RMIJava remote method invocationThe 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 ....
- reflectionReflection (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
keywordStrictfpstrictfp 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:... - the SwingSwing (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 compilerJust-in-time compilationIn 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 IDLInterface description languageAn interface description language , or IDL for short, is a specification language used to describe a software component's interface...
implementation for CORBAÇorbaChorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...
interoperability - CollectionsJava collections frameworkThe 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:
- HotSpotHotSpotHotSpot 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) - RMIJava remote method invocationThe 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ÇorbaChorba , 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 InterfaceJava Naming and Directory InterfaceThe 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 ArchitectureJava Platform Debugger ArchitectureThe 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
keyword (Specified in JSR 41.)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:...
Library improvements
- regular expressions modeled after PerlPerlPerl 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 chainingException chainingException 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 (IPv6IPv6Internet 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/OutputNew I/ONew 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 JPEGJPEGIn 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 XMLXMLExtensible 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 XSLTXSLTXSLT 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, JAASJava Authentication and Authorization ServiceJava 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 StartJava Web StartIn 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:
- GenericsGenerics in JavaGenerics 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 safetyType safetyIn 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 conversionIn 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 annotationJava annotationAn 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 typePrimitive typeIn 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 asint
) and primitive wrapper classPrimitive wrapper classA 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 typesafeType safetyIn 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 asDay.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.) - VarargsVariadic functionIn 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
loop: TheForeachFor 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",...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:
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 ModelJava Memory ModelThe 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 threadsThread (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 importStatic importStatic 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 stubMethod stubA 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 RMIJava remote method invocationThe 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. - SwingSwing (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 synthSynth Look and Feelsynth 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 MozillaMozillaMozilla 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....
JavaScriptJavaScriptJavaScript 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....
RhinoRhino (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 SwingSwing (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-WSJAX-WSThe 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 StAXStAXStreaming 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 annotationsJava annotationAn 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 GUIGuiGui 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 SwingWorkerSwingWorkerSwingWorker 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 SwingSwing (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: synchronizationData synchronizationData 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 compilerCompilerA 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 algorithmsGarbage 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 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
- JVMJava Virtual MachineA 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 languagesDynamic programming languageDynamic 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 MachineDa Vinci MachineThe 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 switchSwitch statementIn 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/OI/OI/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 cryptographyElliptic curve cryptographyElliptic 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 XRenderXRenderThe 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 ProtocolSockets Direct ProtocolThe 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 2013and 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 expressionsLambda (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, closuresClosure (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 JavaFXJavaFXJavaFX is a software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices....