I have been asked a lot of times why Java is introducing new version every two years.
What is the need for the new version if we can develop an application without that also?
Lets’ see my thoughts on this and what I have observed working all with all versions.
The first Question Comes, Why features are added and new versions are coming?
-> To make the product more easily usable by the customer.
Let’s take an example.
We are living in a world of dynamic IT world where every day we see new technologies introduced in the market. I will take an example of a phone.
When mobile phones came in the market, the primary use and last use of that mobile were to make call i.e to connect to the people in early 2000. Later we started seeing evolution in the mobile technology, we got mobile phones with the camera and after that comes the Smartphones which serves a lot of features including camera, messaging, music, Browser, videos, GPS, and lot other many stuff.
Now I am going to ask you, If you are given the phone which was used in 2000, will you be interested in using that phone. NO.Why?
You live in a world of multitasking and you need a single device which can serve multiple purpose.
You don’t want to carry an iPod just to listen to music, you don’t want to carry a camera to click pictures, you don’t want a computer to browse any kind of websites and many more other tasks that a smartphone can do. So all these versions and features added in the mobile industry and we feel so comfortable to use it our daily life.
If features and new versions were not introduced then our life flow would have been slower right?
The same way with the Java, When we are developing an application we always want to use the best library which can reduce our work by multiple times and this reduction will lead to the faster development of an application.
||JAN 23, 1996|
||FEB 19, 1997|
||DEC 8, 1998|
||MAY 8, 2000|
||SEP 30, 2004|
||DEC 11, 2006|
||JUL 28, 2011|
||MAR 18, 2014|
||SEPT 21, 2017|
||MARCH 20, 2018|
- Up to Java 1.4 Version
The target was to add the API Level features which provide the reusable API Classes
- From Java 1.5 onward
The target was to add the Language Level and API level features i.e how to reduce the boilerplate code.
Features added in each version
JDK 1.0 :
- Initial Version Language Level Features
- API Codenamed Oak and released
JDK 1.1 :
- Inner Class: This is for the Retooling Event Handling Mechanism. Retooling means writing logic for the same class in the inner class.
- JDBC(Java Database Connectivity)
- Java Beans
- RMI(Remote Method Invocation)
- Reflection(Introspection only)
- AWT Event Model
JDK 1.2 :
- Collection Framework
- Reflection API
- JIT (Just in time) Compiler
- strictfp keyword
- Java String memory map for constants
- Java Plug-in
- Swing Graphical API
- Jar Signer for signing Java Archive (JAR) files
- Policy Tool for granting access to the system resource
- Audio Support in Applets
- Java Foundation Class (JFC) which consists of swing 1.0, Drag and Drop, and Java 2D class libraries
- Scrollable result sets, BLOB, CLOB, batch update, user-defined types in JDBC.
JDK 1.3 :
- Hotspot JVM
- JNDI API(Java Naming and Directory Index)
- Synthetic proxy classes
- Java Sound
- JPDA(Java Platform Debugger Architecture)
JDK 1.4 :
- Exception Handling
- Regular Expression
- XML Parser: DOM Parser and SAX Parser
- assert keyword
- Image I/O API
- Logging API
- Java Web Start
- Preference API(java.util.prefs)
- New I/O; NIO
- Integrated Security and cryptography extensions(JCE, JSSE,JAAS)
- Internet Protocol version 6(IPv6) support
- JDBC 3.0 API
Now It’s time to see the changes that made a great impact in the java world.
JAVA SE 5 Version Features (TIGER)
It provides the improvement in language level.
- static import statement
- @Override annotation
- Covariant returns
- Auto-Boxing and Auto-Unboxing
- Var-arg parameter method
- For-each loop/Enhanced for loop
- Generics(Type-Parameter,Type-Safety Features)
- Concept of ENUM
- Annotations Metadata
- C style formatting I/P & O/p
- Scanner Class
- Access static members & variables
- java.util.Concurrent package
- Queue type Collection
JAVA SE 6 VERSION FEATURES(MUSTANG)
- Scripting Language Support
- JDBC 4.0 API
- Java Compiler API
- Pluggable Annotations
- Native PKI, Java GSS, Kerberos and LDAP Support
- Integrated Web Services
- Performance improvements
- JAXB 2.0 and StAX Parser
JAVA SE 7 VERSION FEATURES(Dolphin)
- JVM Support for Dynamic languages
- Compressed 64-bit pointers
- Strings in switch Statement
- Type Inference for Generic Instance Creation
- Multiple Exception Handling
- Try with Resouces
- Java NIO Package
- Binary Literals with the underscore in literals
- Diamond Syntax
- ARM(Automatic Resource Management)
- Numeric Literals with underscore support
- Timsort is used to sort collections and arrays of an object instead of merge sort
- Simplified varargs method declaration
- Automatic null Handling
- ForkJoin Framework
- Support for the new network protocols, including SCTP and Socket Direct Protocol
- API for the graphics features
JAVA SE 8 VERSION FEATURES:
- Lambda Expression
- Functional Interface and default methods
- Annotation on Java Types
- Unsigned Integer Arithmetic
- Repeating annotations
- New Date and Time API
- Statically-linked JNI Libraries
- Launch JavaFX applications from jar files
- Remove the permanent generation from GC
- Parallel operations
- Concurrent Accumulators
JAVA SE 9 VERSION FEATURES:
- Java + REPL (Read- Eval -Print -Loop) =JShell
- Factory Methods for Immutable List, Set, Map, and Map.Entry
- Private methods in Interfaces
- Java 9 Module System
- Process API Improvements
- Try With Resources Improvement
- CompletableFuture API Improvements
- Reactive Streams
- Diamond Operator for Anonymous Inner Class
- Optional Class Improvements
- Stream API Improvements
- Enhanced @Deprecated annotation
- HTTP 2 Client
- Multi-Resolution Image API
- Improvements in Garbage Collection
- Introduction to Stack Walking API
- Filter Incoming Serialization Data
- Deprecate the Applet API
- Indify String Concatenation
- Enhanced Method Handles
- Java Platform Logging API and Service
- Compact Strings
- Parser API for Nashorn
- Javadoc Search
- HTML5 Javadoc
- Money and Concurrency API
- Self-tuning JVM
Above we have mentioned all the features in each version, If we have missed any of the features in any version then please mention in the comment.
Stay Tuned to the blog.
Amit is a software developer by profession. He is passionate about all the technologies which can be used to build an application like java related technologies and many more and loves to implement it his career or for knowledge purpose and share his experience with you all. To know more see the About me profile.