The Evolution of Java
• Java 1.0
• Java 1.1
• Java 2
– “2” indicates “second generation.”
– First release of Java 2 used the 1.2 version number.
– With Java 2 Sun repackaged the Java product as J2SE (Java 2 Platform
Standard Edition)
– Added number of new features
Swing and the Collections Framework, and it enhanced the Java Virtual
Machine and various programming tools
Few deprecation
Thread class in which the methods suspend( ), resume( ), and
stop( ) were deprecated.
• J2SE 1.3 smaller changes
• J2SE 1.4 further enhanced
– new keyword assert, chained exceptions, and a channel-based I/O subsystem
– 100 percent source-code compatibility with prior versions
• J2SE 5
– Generics
– Annotations
– Autoboxing and auto-unboxing
– Enumerations
– Enhanced, for-each style for loop
– Variable-length arguments (varargs)
– Static import
– Formatted I/O
– Concurrency utilities
developer’s kit was called JDK 5.
Sun decided to use 1.5 as internal version number or developer
version number.
The “5” in J2SE 5 is called product version number
• Java SE 6 served to further solidify the advances made by J2SE 5
• Java SE 7
– Java Development Kit being called JDK 7, and an internal version
number of 1.7
– 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. (For example, streams can be closed automatically when they are
no longer needed.)
– Type inference (via the diamond operator) when constructing a
generic instance.
– Enhanced exception handling in which two or more exceptions can be caught
by a single catch (multi-catch) and better type checking for exceptions that are
rethrown.
– Although not a syntax change, the compiler warnings associated with some types
of varargs methods were improved, and you have more control over the warnings
-Enhancements in NIO(New I/O) framework and Fork/Join framework
-Fork/Join framework provides parallel programming by
• Simplifying the creation and use of tasks that can execute
concurrently
• Automatically making use of multiple processors
• Java SE 8
– The newest release of Java is Java SE 8, with the developer’s kit being
called JDK 8. It has an internal version number of 1.8. JDK 8 represents a very
significant upgrade to the Java language because of the lambda expression.
– lambda expressions can simplify and reduce the amount of source code
needed to create certain constructs, such as some types of anonymous
classes.
– addition of lambda expressions also causes a new operator (the –>) and a
new syntax element to be added to the language. Lambda expressions help
ensure that Java will remain the vibrant, nimble language that users have come
to expect.
– new stream API, which is packaged in java.util.stream. The stream API
supports pipeline operations on data and is optimized for lambda expressions.
– new package is java.util.function. It defines a number of functional
interfaces, which provide additional support for lambda expressions
– define a default implementation for a method specified by an interface.
– JDK 8 include a new time and date API, type annotations, and the ability to use
parallel processing when sorting an array, among others.
• Java SE 9
-jdk9
-Internal version number also 9
-JDK 9 feature was modules, which enable you to specify
the relationship and dependencies of the code that comprises an application.
-a tool called jlink was added to the JDK, which enables a programmer to create a
run-time image of an application that contains only the necessary modules.
-JShell, which is a tool that supports interactive program experimentation and
learning.
-support for private interface methods
-deprecated the entire applet API
• Java SE 10 (JDK 10)
-support for local variable type inference
-type of a local variable be inferred from the type of its initializer, rather than being
explicitly specified
-To support this new capability, the context-sensitive identifier var was added to Java
as a reserved type name.
• Java SE 11 (JDK 11).
-It was released in September 2018
-support for the use of var in a lambda expression.
-JDK 11 adds a new networking API Called the HTTP Client API, it is packaged in
java.net.http, and it provides enhanced, updated, and improved networking support for
HTTP clients
- removes some features- Applet, Java Web Start
-JavaFX is no longer included in the JDK
-GUI framework has become a separate open-source project.