Sunday, June 14, 2020

Java Version History and details of java versions and its fetures


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.
what are the different types of java versions and what will be the new implementation in each version will be explained below:

In September 2017, Mark Reinhold, chief Architect of the Java Platform, proposed to change the release train to "one feature release every six months" rather than the current two-year schedule,and later the proposal took effect.

  • JDK Alpha and Beta : Alpha and Beta is the starting version of the java. In Alpha and Beta java public release highly unstable API's which is released in the year of 1995. The supplied Java web browser was named Web Runner.        

  • JDK 1.0: The first version was released on January 23, 1996. The first stable version, JDK 1.0.2, is called Java.JDK 1.0 had released in Jan 23, 1996. For JDK 1.0 code name they made as OAK. This is the advanced version of Alpha and Beta, also this is the initial version of java.

  • JDK 1.1: JDK 1.1 had released in Feb 19, 1997. They were added major includes in this version. What are the major changes in JDK 1.1 are included will see in the below.

           Major additions in the release on February 19, 1997 included.
           A
n extensive retooling of the AWT event model
            Inner classes added to the language
            JavaBeans
            JDBC-Java Data Base Connectivity
               RMI - Remote Method Invocation
            Reflection which supported Introspection only, no modification at
 runtime was possible. 

            JIT (Just In Time) compiler on Microsoft Windows platforms, produced for JavaSoft by Symantec
            Internationalization and Unicode support originating from Taligent.

  • J2SE 1.2: J2SE 1.2 had released in Dec 8, 1998, which is the code name as "Play Ground". From this version onward's they have been replaced version name form JDK to their related platforms, like, J2SE(Java 2 platform, Standard Edition), J2EE(Java 2 platform, Enterprise Edition) and J2ME(Java 2 platform, Mobile Edition).

    strictfp keyword
    the Swing graphical API was integrated into the core classes
    Sun's JVM was equipped with a JIT compiler for the first time
    Java plug-in
    Java IDL, an IDL implementation for CORBA interoperability
    Collections framework
  • J2SE 1.3:  In J2SE 1.3 released at May 8, 2000 which code name as "Kestrel". In this version they were addicted some changes. That are:

            HotSpot JVM included 
            RMI was modified to support optional compatibility with CORBA
            Java Naming and Directory Interface (JNDI) included in core libraries  (previously available as an                           extension)
            Java Platform Debugger Architecture (JPDA)
            JavaSound
            Synthetic proxy classes
  • J2SE 1.4: In J2SE 1.4 was released at Feb 6, 2002 which is the code name as "Merlin". This is the first release of the java language developed under the java community process. Few changes in these version are:

            Language :

                assert keyword (specified in JSR 41)

            Library improvements :

        Regular expressions modeled after Perl regular expressions

        Exception chaining allows an exception to encapsulate original

                 lower-level exception

        Internet Protocol version 6 (IPv6) support

        Non-blocking I/O (Java) (named NIO) (specified in JSR 51)

        Logging API (specified in JSR 47)

        Image I/O API for reading and writing images in formats like JPEG 

                and PNG

        Integrated XML parser and XSLT processor (JAXP) (specified in 

                JSR 5 and JSR 63)

        Integrated security and cryptography extensions (JCE, JSSE, JAAS)

        Java Web Start included (Java Web Start was first released in March   2001 for J2SE 1.3) 

        Preferences API (java.util.prefs)

  • J2SE 5.0: In J2SE 5.0 version released in Sep 30, 2004 which is the code name as "Tiger". In this version got released majority of features in java language. That are:

                Generics: provides compile-time (static) type safety for collections and  eliminates the need for most                  type casts 

                Metadata: also called annotations; allows language constructs such as classes and methods to be                     tagged with additional data, which can then be processed by metadata-aware utilities 

                Autoboxing/unboxing: automatic conversions between primitive types (such as int) and primitive                         wrapper classes 

                Enumerations: the enum keyword creates a typesafe, ordered list of  values (such as Day.MONDAY,                  Day.TUESDAY, etc.); previously this could only be achieved by non-typesafe constant  integers or                      manually constructed classes 

                Varargs: the last parameter of a method can now be declared using a type name followed by three                    dots  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: the for loop syntax is extended with specialsyntax for iterating over each                      member of either an array or any

                 Iterable,such as the standard Collection classes 

                Improved semantics of execution for multi-threaded Java programs;

                the new Java memory model addresses issues of complexity, 

                effectiveness, and performance of previous specifications

                Static imports

                There were also the following improvements to the standard libraries:

                Automatic stub generation for RMI objects

                Swing: New skinnable look and feel, called synth

                The concurrency utilities in package java.util.concurrent

                Scanner class for parsing data from various input streams and buffers

  • Java SE6: In Java SE6 version was released in Dec 11, 2006 which is the code name as "Mustang". From this version onward's Sun replaced the name from J2SE to Java SE and dropped the ".0" from version numbers. What are the major changes in this version are:

                Support for older Win9x versions dropped; unofficially, Java 6 Update 7was the last release of Java                    shown to work on these versions ofWindows.[citation needed] This is believed to be due to the                             major changes in Update 10.

                Scripting Language Support : Generic API for tight integration withscripting languages, and built-in                     Mozilla JavaScript Rhino integration.

                Dramatic performance improvements for the core platform and Swing.

                Improved Web Service support through JAX-WS.

                JDBC 4.0 support .

                Java Compiler API : 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 SAX \ parser.

                Support for pluggable annotations .

                Many GUI improvements, such as integration of SwingWorker in 

                the API,table sorting and filtering, and true Swing double-buffering 

                JVM improvements include: synchronization and compiler performanceoptimizations, new algorithms                 and upgrades to existing garbagecollection algorithms,and application start-up performance.

  • Java SE7: Java SE7 version got released at Jul 28, 2011 which is the code name as "Dolphin". Few of the major changes in this version are:

                JVM support for dynamic languages, with the new invoke dynamic bytecode under following the                           prototyping work currently done on 

                 the Multi-Language Virtual Machine

                Compressed 64-bit pointers.

                These small language changes 

                Strings in switch

                Automatic resource management in try-statement

                Improved type inference for generic instance creation, aka the 

                diamond operator <>

                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 

                 New file I/O library (defined by JSR 203) adding support for multiple 

                 file systems, file metadata and symbolic links. The new packages 

                 are java.nio.file, java.nio.file.attribute and java.nio.file.spi

                Time sort is used to sort collections and arrays of objects instead of  merge sort

                 Library-level support for elliptic curve cryptography algorithms

                 An XRender pipeline for Java 2D, which improves handling of features  specific to modern GPUs

                  New platform APIs for the graphics features originally implemented 

                   in version 6u10 as unsupported APIs

                  Enhanced library-level support for new network protocols, including SCTP and Sockets Direct                            Protocol

                  Upstream updates to XML and Unicode

                  Java deployment rule sets

  • Java SE8: Java 8 version got released at Mar 18, 2014 which is the code name as "Spider". Few of the major changes in this version are:

                 Language-level support for lambda expressions 

                 Project Nashorn, a JavaScript runtime which allows developers to embed JavaScript code within                       applications

                 Annotation on Java types

                 Unsigned integer arithmetic

                 Repeating annotations

                 Date and time API

                 Statically-linked JNI libraries

                 Launch JavaFX applications 

                 Remove the permanent generation

  • Java SE9: Java 9 version released at September 21, 2017. Few of the major changes included in Java 9 are mentioned below.

                Modularization of the JDK under Project Jigsaw 

               JShell: The Java Shell 

               Ahead-of-time compilation

               XML catalogs

               More concurrency updates.It includes a Java implementation of 

               Reactive Streams,including a new Flow class that included the 

                interfaces previously provided by Reactive Streams.

              Variable handles: define a standard means to invoke the equivalents of various 

             java.util.concurrent.atomic and sun.misc.Unsafe operations

              jlink: The Java Linker: create a tool that can assemble and optimize 

              a set of modules and their dependencies into a custom run-time image.

              It effectively allows to produce a fully usable executable including the

              JVM to run it.

              JavaDB was removed from JDK

              HiDPI graphics: automatic scaling and sizing

              Compact Strings

              Milling Project Coin

      Allow @SafeVarargs on private instance methods

              Allow effectively-final variables to be used as resources in the 

              try-with-resources statement                  

              Allow diamond with anonymous classes if the argument type of  the  inferred type is denotable.

             Complete the removal, begun in Java SE 8, of underscore from the 

              set of legal identifier names

             Support for private methods in interfaces

  • Java SE10: Java 10 version released at March 20, 2018. Few of the major changes included in Java 10 are mentioned below.

              Experimental Java-based JIT compiler.This is the integration of the 

              Graal dynamic compiler for the Linux x64 platform

              Application class-data sharing.This allows application classes to be 

              placed in the shared archive to reduce startup and footprint for 

               Java applications

              Time-based release versioning

               Parallel full GC for G1

               Garbage-collector interface

               Additional Unicode language-tag extensions

                Root certificates

                Thread-local handshakes

                 Heap allocation on alternative memory devices

                 Remove the native-header generation tool – javah

                 Consolidate the JDK forest into a single repository

  • Java SE11: JDK 11 was released on September 25, 2018 and the version is currently open for bug fixes. It offers LTS, or Long Term Support. Among others, Java 11 includes a number of new features, such as:

                  Dynamic class-file constants

                  Epsilon: a no-op garbage collector

                  Local-variable syntax for lambda parameters

                  Low-overhead heap profiling

                  HTTP client (standard)

                  Transport Layer Security 

                  Flight recorder

                  ZGC: a scalable low-latency garbage collector 

                  JavaFX, Java EE and CORBA modules have been removed from JDK]

                  Deprecated the Nashorn JavaScript engine

                  Unicode 10.0.0 support (while current version is Unicode 11.0.0, it's only                   in Java 12

  • Java SE12:  JDK 12 was released on March 19, 2019. Among others, Java 12 includes a number of new features, such as:

                 Shenandoah: A Low-Pause-Time Garbage Collector 

                 Microbenchmark Suite

                 Switch Expressions 

                 JVM Constants API

                 One AArch64 Port, Not Two

                 Default CDS Archives

                 Abortable Mixed Collections for G1

                 Promptly Return Unused Committed Memory from G1

  • Java SE13: JDK 13 was released on September 17, 2019. Java 13 includes the following new features, as well as "hundreds of smaller enhancements and thousands of bug fixes.

                 Dynamic CDS Archives

                 ZGC: Uncommit Unused Memory

                 Reimplement the Legacy Socket API

                 Switch Expressions 

                 Text Blocks 

  • Java SE14: JDK 14 was released on March 17, 2020. Java 14 includes the following new features, as well as "hundreds of smaller enhancements and thousands of bug fixes".

                  Pattern Matching for instanceof (Preview)

                  Packaging Tool (Incubator)

                  NUMA-Aware Memory Allocation for G1

                  JFR Event Streaming

                  Non-Volatile Mapped Byte Buffers

                  Helpful NullPointerExceptions

                  Records (Preview)

                  Switch Expressions (Standard)

                  Deprecate the Solaris and SPARC Ports

                  Remove the Concurrent Mark Sweep (CMS) Garbage Collector

                  ZGC on macOS

                  ZGC on Windows

                  Deprecate the ParallelScavenge + SerialOld GC Combination

                  Remove the Pack200 Tools and API

                  Text Blocks 

                  Foreign-Memory Access API 


No comments:

Post a Comment

Hello Buddy, if you have any doubts or need any clarification , feel free to comment. Thanks.