History of Java

    James Gosling designed Java, and the design was earlier started as an Oak project in 1995. James started this technology to implement the virtual machine with C-like notation but simpler than C/C++. This was basically designed for developing interactive television and digital devices, which later on were used for internet programming. It is secure and allows network and file access.

    Web browsers later incorporated Java to support applet applications. Java language ensures high performance, portability, cross-platform, robustness, multithreaded, dynamic, interpreted, and many more features. Gosling and his team started the Java project in the early ’90s, and the team was known as the green team. This language was initially designed for small systems. Later on, the language was named Oak.

    Why was it Named Oak?

    Oak was considered the symbol of strength for many countries. This is why Gosling named it Oak. But in 1995, Oak was renamed Java as Oak technologies already used Oak.

    Why was it Renamed Java?

    The team gathered to choose a name and suggested words that reflect the features of the language. Java is an Indonesian island that is famous for its Java coffee, and the name came up while having unique coffee. This name was preferred over other names.

    Java was released in 1995 for the first time and is considered to be one of the best 10 products in 1995. Later, many versions have been released with additional features, and they are now one of the widely used languages in almost every technology field.

    Java Version History

    Version Release date End of Free Public Updates Extended Support Until
    JDK Beta 1995 ? ?
    JDK 1.0 January 1996 ? ?
    JDK 1.1 February 1997 ? ?
    J2SE 1.2 December 1998 ? ?
    J2SE 1.3 May 2000 ? ?
    J2SE 1.4 February 2002 October 2008 February 2013
    J2SE 5.0 September 2004 November 2009 April 2015
    Java SE 6 December 2006 April 2013 December 2018
    Java SE 7 July 2011 April 2015 July 2022
    Java SE 8 (LTS) March 2014 January 2019 for Oracle (commercial) December 2020 for Oracle (personal use) At least May 2026 for AdoptOpenJDK At least June 2023 for Amazon Corretto December 2030
    Java SE 9 September 2017 March 2018 for OpenJDK N/A
    Java SE 10 March 2018 September 2018 for OpenJDK N/A
    Java SE 11 (LTS) September 2018 At least August 2024 for Amazon Corretto October 2024 for AdoptOpenJDK September 2026
    Java SE 12 March 2019 September 2019 for OpenJDK N/A
    Java SE 13 September 2019 March 2020 for OpenJDK N/A
    Java SE 14 March 2020 September 2020 for OpenJDK N/A
    Java SE 15 September 2020 March 2021 for OpenJDK N/A
    Java SE 16 March 2021 September 2021 for OpenJDK N/A
    Java SE 17 (LTS) September 2021 TBA TBA

    Features of different versions

    1. JDK 1.1

    This version includes -

    • Provide tools for the AWT ( Abstract Window Toolkit ) event model
    • Additional inner classes
    • JavaBeans, JDBC, RMI
    • The reflection supported Introspection only. No modification at runtime was possible.
    • JIT (Just In Time) compiler produced for JavaSoft by Symantec
    • Supports Internationalisation and Unicode

    2. J2SE 1.2

    This version includes below additional features -

    • Introduces strictfp keyword
    • the Swing graphical API was integrated into the core classes
    • Sun's JVM was equipped with a JIT compiler
    • Java plug-in
    • introduces IDL implementation for CORBA interoperability
    • Introduces collections framework

    3. J2SE 1.3

    This version includes below changes -

    • HotSpot JVM included
    • Modified RMI to support compatibility with CORBA
    • Java Naming and Directory Interface (JNDI) included in core libraries
    • Java Platform Debugger Architecture (JPDA)
    • JavaSound and synthetic proxy classes.

    4. J2SE 1.4

    This version includes below changes -

    • Regular expressions modeled according to Perl regular expressions
    • allows encapsulating original lower-level exception
    • Provides Internet Protocol version 6 (IPv6) support
    • Non-blocking I/O (Java)
    • The image I/O API for reading and writing images in formats like JPEG and PNG
    • Integrated XML parser and XSLT processor (JAXP)
    • Integrated security and cryptography extensions
    • Java Web Start included
    • Preferences API (java.util.prefs)

    5. J2SE 5.0

    This version includes below features -

    • Provides compile-time type safety for collections which eliminates the need for most type conversion
    • Provides Metadata that allows language constructs such as classes and methods to be tagged with additional data,
    • Autoboxing/unboxing: automatic conversions between primitive types
    • Enumerations: the enum keyword creates a typesafe, ordered list of values
    • Varargs: the last parameter of a method can be declared using a type name followed by three dots
    • Enhanced for each loop: the for loop syntax is extended with special syntax for iterating over each member
    • Static imports

    6.Java SE 6

    This version includes -

    • Scripting Language Support and built-in Mozilla JavaScript Rhino integration.
    • Better performance improvements for the core platform and Swing.
    • Improved Web Service support through JAX-WS
    • JDBC 4.0 support
    • Java Compiler API allows a Java program to select and invoke a Java Compiler programmatically.
    • Upgrade of JAXB to version 2.0:
    • Support for pluggable annotations
    • GUI improvements like the integration of SwingWorker in the API, table sorting and filtering, and true swing double-buffering
    • JVM improvements include synchronization and compiler performance optimizations

    7. Java SE 7

    This version includes -

    • JVM support for dynamic languages that work currently done on the Multi-Language Virtual Machine
    • Compressed 64-bit pointers
    • New file I/O library that supports multiple file systems, file metadata, and symbolic links.
    • Timsort allows sorting collections and arrays of objects
    • Provides Library-level support for elliptic curve cryptography algorithms
    • An XRender pipeline for Java 2D to handle the modern GPUs
    • Enhanced library-level support for new network protocols along with SCTP and SDP
    • Provide Upstream updates to XML and Unicode

    8. Java SE 8

    This version includes -

    • Language-level support for lambda expressions
    • Provide annotation on Java types
    • Provide the date and time API
    • Statically linked JNI library

    9. Java SE 9

    This version includes -

    • Modularisation of the JDK under Project Jigsaw
    • It includes a Java implementation of Reactive Streams
    • Variable handles to define a standard means to invoke the equivalents of various java.util.concurrent.atomic and sun.misc.Unsafe operations
    • JavaDB was removed from JDK
    • Compact Strings

    10. Java SE 10

    This version includes -

    • Provide local-variable type inference
    • Provide application class-data sharing
    • Time-based release versioning
    • Garbage collector interface
    • Thread-local handshakes
    • Root certificates
    • Remove the native-header generation tool

    11. Java SE 11

    This version includes -

    • Dynamic class-file constants
    • Provide no-op garbage collector
    • Provide local variable syntax for lambda parameters
    • Provide transport layer security
    • Provide flight recorder

    12. Java SE 12

    This version includes -

    • Provide microbenchmark suite
    • Provide switch expression
    • Provide JVM constants API.
    • Provide abortable mixed collection for G1.