In this Java guide, we will study about various Java Version from JDK 1.0 to 11 and there feature and significant changes in each version.
Since its development in 1995, Java got numerous additions of classes and packages to the standard library. From Java version 1.4 which termed as J2SE 1.4, the development of the Java language has been managed by the Java Community Process (JCP), which uses Java Specification Requests to propose and specify additional changes to the Java platform.
In addition to the language changes in Java Class Library over the years, which has grown from a few hundred classes to over three thousand. Entire new APIs, such as Swing and Java2D, have been introduced, and many of the original Java Development Kit 1.0 classes and methods have been deprecated.
Java Version 1.0 (JDK 1.0)
Java first version was released on January 23, 1996. And the stable version, JDK 1.0.2, is called Java 1.
Java Packages
- Java interfaces and classes are grouped into packages. The following lists the java packages, which you can use to access interfaces and classes.
- java.net provides classes for network support, including URLs, IP addresses, TCP sockets, UDP sockets, and a binary-to-text converter.
- java.awt (AWT = Abstract Window Toolkit) contains an integrated set of classes to manage user interface components such as windows, dialog boxes, lists, menus, scrollbars, buttons, checkboxes, and text fields.
- java.lang package contains essential Java classes, including strings, compiler, numeric, runtime, threads, objects, and security. This package automatically gets imported into every Java program.
- java.awt.image manage image data, setting pixel values, cropping, including color models, color filtering and grabbing snapshots.
- java.io package contains classes which used to manage input and output streams to read and write & data to and from files, strings, and other sources.
- java.applet package which used to create applets through the Applet classes and also provides interfaces that connect an applet to its document and resources for playing audio.
- java.util package contains utility classes, including generic data structures, bit sets, time, date, string manipulation, random number generation, system properties, notification, and enumeration of data structures.
JDK 1.1 (Java Version 1.1)
New JDK release enables programmers to now write applets and large-scale applications that adjust to the Java core 1.1 API. Within three weeks of the JDK 1.1 release, developers downloaded 220,000 copies and more of the new toolkit.
Major changes in the release included:
- Internationalization
- A Math package
- A new AWT event model
- An enhanced I/O package
- The Java Archive (JAR) file format
- Improved security (with those long-promised signed applets)
- Inner classes added to the language
- JavaBeans
- Java Database Connectivity (JDBC)
- Object serialization
- Remote method invocation (RMI)
- RMI, etc.
Java 2 Standard Edition 1.2 (Java Version 1.2)
The release on December 8, 1998 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 differentiate the base platform from J2EE (Java 2 Platform, Enterprise Edition) and J2ME (Java 2 Platform, Micro Edition). This was a very notable release of Java as it tripled the size of the Java platform to 1520 classes in 59 packages. The codename for this version is “Playground”.
Changes included:
- Swing API was integrated into the core classes
- Collections framework,
strictfp
keyword - The first time Sun’s JVM was equipped with a JIT compiler
- Java plug-in, IDL, an IDL implementation for CORBA compatibility
J2SE 1.3 (Java Version 1.3.0)
The most significant changes in the May 8, 2000 release were:
- HotSpot JVM included
- Java Naming and Directory Interface added to javas core libraries
- Java Platform Debugger Architecture
- Codename Kestrel
J2SE 1.4 (Java Version 1.4.0)
Java platform developed under the Java Community Process released on February 6, 2002, as JSR 59. Codename Merlin.
Changes included:
- Non-blocking, I/O (Java)
- Java Web Start included
- Language changes
assert
keyword- Regular expressions modeled after Perl regular expressions
- Internet Protocol version 6 (IPv6) support
- Library improvements
- Logging API and Image Input/output API for reading and writing images in different formats
- Integrated XML parser and XSLT processor (JAXP)
- Preferences API (java.util.prefs)
Java Version 1.5 (J2SE 5.0)
Java 1.5 was released in 2004 which re-numbered to Java 5.0 to better reflect the advancement, stability, security of J2SE. The codename for 5.0 is “Tiger”.
J2SE 5.0 got many significant changes and added language features:
- Autoboxing or unboxing allows automatic conversions between primitive data types and wrapper classes
- Generics provides compile-time type safety eliminating the need for typecasting.
- Added enum keyword which creates a type-safe, ordered list of values.
- Metadata also known as annotations allows language constructs such as methods and classes to be tagged with additional data, which then be processed by metadata-aware utilities.
- Varargs (Variable Arguments) the last parameter of a method can be declared using an only type name followed by three dots (e.g.
void xyx(Int... lines));
in the calling method any number of parameters of the same type can be used and placed in an array to be passed to the method. - The for loop syntax is extended for iterating over each member of either an array or any Iterable with special syntax. And many more changes.
Version change
Both version of Java numbers “1.5.0” and “5.0” can be used to identify Java 2 Platform Standard Edition. Version “5.0” used for product version, while “1.5.0” is the developer version.
Java Standard Edition 6 (JSE 6)
Sun replace the name “J2SE” with “Java Standard Edition” (JSE) and changed numbering from 6.0 to 6 (i.e. .0 dropped from version number) with newly released on December 11, 2006. But still for developer’s Java version remains 1.6.0. The Codename of the version is “Mustang”.
Major significant changes included in this version:
- Performance improvements for the core platform.
- Enhanced Web Service support through JAX-WS.
- Support for older versions Win9x dropped
- Generic API for integration with scripting languages.
- Java Compiler API allowing a program to select and invoke a Java Compiler Programmatically.
- Integration of Swing Worker in the API, filtering, table sorting, and true Swing double-buffering.
- Java virtual machine improvements include enhanced synchronization and compiler performance, and upgrades to existing garbage collection algorithms, and application start-up performance.
- Upgrade of JAXB to version 2.0. and Support for pluggable annotations
Java Standard Edition 7
JSE 7 is a major update that was launched on July 7, 2011, and was made available for developers on July 28, 2011. Internal Java version is 1.7.0 and codename is “Dolphin”.
Additions in Java 7 include:
- JVM support for dynamic languages
- Allowing underscores in numeric literals
- An XRender pipeline for Java 2D, improving handling of features specific to certain GPUs
- Improved library-level support for new network protocols, including Sockets Direct Protocol and SCTP
- Upstream updates to XML and Unicode
- Catch multiple exceptions and throwing exceptions with improved type checking
- Added new packages are
java.nio.file, java.nio.file.attribute
andjava.nio.file.spi
- Instead of merge sort, Timsort used to sort collections and arrays of objects.
- Compressed 64-bit pointers and small language changes grouped under a named “Coin”
- Automatic resource management in try-statement
- Improved automatic detection of the data type for generic instance creation, aka the diamond operator <>
- Library-level support for elliptic curve cryptography algorithms
- Java Deployment Rulesets
- Lambda functions, Jigsaw modules, and part of Coin were dropped from Java 7
Java SE 8 (Java version 1.8.0)
JSE 8 released on March 18, 2014, and with some features that were planned for Java 7 but implemented later.
Language-level support for lambda expressions under Project name “Lambda” and default method allows the addition of methods to interfaces without breaking existing code. Though it was not the primary intention, default methods also allow multiple inheritance behavior.
- Unsigned Integer Arithmetic
- Launch JavaFX applications
- Repeating annotations
- Annotation on Java Types
- Date and Time API
- Statically-linked JNI libraries
- Remove the permanent generation
Java SE 9 (Java Version 1.9.0)
JSE 9 available on September 21, 2017, due to controversial acceptance of the current implementation of Project Jigsaw by Java Executive Committee, which led Oracle to fix open issues and correct some critical technical questions.
Major modification in Version include:
- Ahead-of-Time Compilation
- The Java Shell (jshell)
- XML Catalogs
- Modularization of the JDK under Project Jigsaw
- The Java Linker (jlink) to create a tool that can assemble and optimize the set of modules and their dependencies into a custom run-time image.
- JavaDB was removed from JDK
- HiDPI Graphics: Automatic scaling and sizing
- The stable version of Java 9 was released on September 21, 2017
Java SE 10
JSE10 was released on 20 March 2018, with 12 new features confirmed.
Those features were:
- Time-Based Release Versioning
- Experimental Java-Based JIT Compiler integrated with Graal dynamic compiler for the Linux x64 platform
- Local-Variable Type Inference
- Garbage-Collector Interface
- Remove the Native-Header Generation Tool – javah
- Additional Unicode Language-Tag Extensions
- Thread-Local Handshakes
- Parallel Full GC for G1
- Root Certificates
- Heap Allocation on Alternative Memory Devices
- Combine the JDK Forest into a Single Repository
Java SE 11
JSE 11 was released on September 25, 2018, and the version is currently open for bug fixes.
New Features Include:
- Dynamic Class-File Constants
- Transport Layer Security (TLS) 1.3
- Flight Recorder
- Epsilon: A No-Op Garbage Collector
- HTTP Client
- Local-Variable Syntax for Lambda Parameters
- Low-Overhead Heap Profiling