The latest version of Java is Java SE 9 released in September 2017. The initial version (JDK Alpha and Beta) was released in 1995. Java has made quite a journey from version 1 to 8. Let’s look in detail what were the improvements or features added in each version in this article Evolution of Java.
You might think what’s with the character in the above picture and why is it here? Well the character that you can see above is Java’s mascot Duke.
Before moving into the details of Java’s versions, let’s look at the background details of how and why Java came into existence.
In 1991, a research group at Sun Microsystems, as a part of their Green project, was working to develop software to control consumer electronic devices (embedded systems). The goal was to connect them in a network and establish communication between them.
The first prototype developed by Sun Microsystems was a device called Star 7 which looked like a remote. The initial intent was to use C++ to control the Star 7. But, as a result of frustration with C++, one of the members of Green project, James Gosling invented a new language called Oak which was later renamed to Java.
Why the name Oak? Well, as per rumors, there happened to be a Oak tree outside the window at which James Gosling was working. Hence the name Oak. Later they found out that there was already a language by the name Oak. So, they renamed it to Java.
Now, let’s look at the version history which is the core of evolution of Java.
The initial version of Java was JDK 1.0 which was released in 1996. Unlike other languages which evolve in small increments, Java continued to evolve at a faster pace. By the time JDK 1.0 was released, the developers of Java had already created JDK 1.1.
JDK 1.1 was released in 1997. Java 1.1 (JDK 1.1) added many new library elements, redefined the way events are handled and reconfigured many of the features of the 1.0 library.
The next major release was Java 2 (also known as J2SE 1.2) which was released in 1998. 1.2 is the internal version number for Java library. With Java 2, Sun repackaged the Java product as J2SE (Java 2 Platform Standard Edition). Major changes in J2SE 1.2 are:
- Introduced Swing framework
- Introduced Collections framework
- Enhancements to JVM and other programming tools.
- Deprecated suspend(), resume() and stop() methods of the Thread class.
The first major upgrade made to the original version Java 2 was J2SE 1.3 which was released in 2000. This version introduced new APIs like JNDI, JPDA and JavaSound. Although this version introduced a small set of changes, they are not very important.
Next major upgrade J2SE 1.4 which was released in 2002, further enhanced Java. Several important features were added in this release. They are:
- Keyword assert
- Chained exceptions
- Channel-based I/O subsystem
- Changes to Collections framework and networking classes
- Logging API
Next release of Java was J2SE 5 which was released in 2004. Compared to other releases this one was revolutionary. J2SE 5 fundamentally expanded the scope, power and range of the language. The major improvements and features in this release are:
- Generics
- Annotations
- Autoboxing and auto-unboxing
- Enumerations
- Enhanced version of for loop, for-each loop
- Variable length arguments
- Static import
- Formatted I/O
- Concurrency utilities
Next release was Java SE 6 which was released in 2006. Note that Sun changed the name of the Java platform. The official product name was Java Platform, Standard Edition 6. The Java Developer’s kit was called JDK 6. The internal developer version number is 1.6. This version did not add any major features. But, it enhanced the API libraries, added several new packages and made improvements to the runtime.
Next major release was Java SE 7 (codenamed Dolphin) which was released in 2011 after Sun Microsystems was acquired by Oracle. Java SE 7 contains many new features and enhancements which developed as a part of Project Coin. The new features added in version 7 are as follows:
- A String can now control a switch statement.
- Binary integer literals.
- Underscores in numeric literals.
- An expanded try statement, called try-with-resources, that supports automatic resource management.
- Type inference (using diamond operator) when constructing a generic instance.
- Enhanced exception handling
- Compiler warnings associated with some types of varargs methods have been improved.
Several enhancements were also made in Java SE 7. They are:
- Addition of Fork/Join framework for NIO (New I/O) which supports parallel programming.
- Upgrade to the Java runtime system that supports non-Java languages.
Next major release is Java SE 8 (unofficially codenamed as Spider) which was released in 2014. Java 8 is a giant step forward for the Java programming language. A lot of features and enhancements were included. Among them the important ones are:
- Lambda expressions
- Method references
- Default Methods
- A new stream API
- Optional class (java.util package)
- A new Date/Time API
- Nashorn, the new JavaScript engine
- Removal of permanent generation (in memory)
With the introduction of Lambdas, method references and default methods on interfaces Java incorporates support for functional programming without loosing the clarity and simplicity of Java.
Final major release till date is Java SE 9 (or Java 9).
Following are the features or imporvements in Java 9:
- Modularity
- Developer Convenience
- Strings
- Diagnostics
- JVM options
- Logging
- Javadoc
- JavaScript/HTTP
- Native Platform
- JavaFX
- Images
- Unicode
The main improvement in Java 9 is modularity. This allows the Java platform to be more scalable. Java 9 also introduces ‘jShell‘, a tool that allows read-eval-print-loop functionality like in Python shell.
For more information visit the following links:
Suryateja Pericherla, at present is a Research Scholar (full-time Ph.D.) in the Dept. of Computer Science & Systems Engineering at Andhra University, Visakhapatnam. Previously worked as an Associate Professor in the Dept. of CSE at Vishnu Institute of Technology, India.
He has 11+ years of teaching experience and is an individual researcher whose research interests are Cloud Computing, Internet of Things, Computer Security, Network Security and Blockchain.
He is a member of professional societies like IEEE, ACM, CSI and ISCA. He published several research papers which are indexed by SCIE, WoS, Scopus, Springer and others.
Leave a Reply