Table of contents
Java SE 1.0
1996-01-23 Oak (Oak)
The first version is a great milestone, but it is purely interpreted and uses a plug-in JIT. The performance is relatively poor and the running speed is slow.
This version includes two parts: the operating environment (ie Java Runtime Environment, JRE) and the development environment (Java Development Kit, JDK). The operating environment includes five parts: core API, integration API, user interface API, publishing technology, and Java Virtual Machine (Java Virtual Machine, JVM); the development environment includes a compiler (javac command) for compiling Java programs.
Java SE 1.1
1997-02-19
This version adds a JIT (Just In Time, just-in-time compilation) compiler. Compared with traditional compilers, it saves frequently used instructions in memory, and does not need to be recompiled when it is called next time. This method allows JDK There is a greater advantage in efficiency.
In addition, new features are introduced:
- JAR - jar包
- JDBC (Java Database Connectivity) - database connection specification
- Inner Class
- Java Beans
- RMI (Remote Method Invocation) - remote call
- Reflection
Java SE 1.2
1998-12-08 Playground (playground)
JDK1.2 is an important milestone version. In this version, Sun splits the Java technology system into three directions, which are J2SE (Java 2 Platform, Standard Edition) for desktop application development, and enterprise-level development. J2EE (Java 2 Platform, Enterprise Edition) and J2ME (Java 2 Platform, Micro Edition) developed for mobile terminals such as mobile phones.
At the language and API level, Java has added the strictfp keyword, and the Java class library has added a series of Collections collection classes that are very commonly used in Java coding.
JDK1.2 Solaris Exact VM, with JIT interpreter, improved GC performance, accurate memory management (Accurate Memory Management), data type sensitivity and other features. But its life cycle is very short, and it will be replaced by Hotspot soon.
In addition, new features are introduced:
- collection framework
- String constants for memory mapping
- JIT Compiler (Just In Time)
- Digitally sign packaged Java files
- Policy tool to control authorized access to system resources
- JFC (Java Foundation Classes) Swing 1.0, drag and drop and Java2D class library
- Java plugin
- JDBC scrollable result sets, BLOB, CLOB, batch update and user-defined types
- Add sound support in Applet
Java SE 1.3
2000-05-08 Kestrel (Kestrel)
The improvement of this version is mainly reflected in the Java class library (such as mathematical operations and new Timer API, etc.), the JNDI service has been provided as a platform-level service since JDK 1.3 (previously JNDI was only an extension service), using CORBA IIOP is used to realize the RMI communication protocol and so on. JDK1.3 has made a lot of optimizations and enhancements to all aspects of Java.
Hotspot ships as a default virtual machine.
New features introduced include:
- computation
- Timer API (time)
- Java Sound API (sound)
- CORBA IIOP realizes the communication protocol of RMI
- Java 2D New Features
- JAR file index
Java SE 1.4
2002-02-13 Merlin
This version is the most mature version in JDK history. At this time, the participation of companies such as Compaq, Fujitsu, SAS, Symbian, and IBM made JDK1.4 the fastest-growing JDK version. JDK1.4 can already use Java to implement most applications.
During this period, the Java language shined in the field of enterprise applications, and a large number of open source frameworks based on the Java language emerged: Struts, WebWork, Hibernate, Spring, etc.; a large number of enterprise application servers also began to emerge: WebLogic, WebSphere, JBoss, etc.
Classic VM has withdrawn from the stage of history.
New features introduced include:
- XML processing
- Java print service
- Log API (Logging)
- Java Web Start
- JDBC 3.0 API
- assertion mechanism
- Parameter API (Preferences)
- chained exception handling
- Support IPV6
- Regular expression (Regular)
- image I/O API
- NIO (advanced streaming)
Java SE 5
2004-09-30 Tiger (Tiger)
At the same time, Sun changed JDK1.5 to Java 5.0 , and J2EE, J2SE, and J2ME were correspondingly changed to Java SE, Java ME, and Java EE. Added functions such as generics, enhanced for loops, variable number of formal parameters, annotations (Annotations), automatic unboxing and boxing; released new enterprise-level platform specifications, such as simplifying the complexity of EJB through new features such as annotations , and launched the EJB3.0 specification, also launched its own MVC framework specification: JSF.
JDK 5 has made great improvements in the ease of use of Java syntax. Syntactic features such as autoboxing, generics, dynamic annotations, enumerations, variable-length parameters, and traversal loops (foreach loops) are all added in JDK 5. At the virtual machine and API levels, this version improves the Java memory model (Java Memory Model, JMM), provides java.util.concurrent and other packages. In addition, JDK 5 is the last JDK version officially declared to support the Windows 9x operating system.
New features introduced include:
- Generic
- For-Each loop
- Automatic boxing and unboxing
- Class Safe Enumeration (Enum)
- Varargs (Varargs)
- import static
- Metadata Annotation (Annotation)
- Introspect
- Memory Model (JMM)
- concurrent package (java.util.concurrent)
Java SE 6
2006-12-11 Mustang
This version introduces a new framework that supports the scripting engine, UI enhancements, enhancements to WebService support (JAX-WS2.0 and JAXB2.0), a series of new security-related enhancements, JDBC4.0, Compiler API, general Annotations support. And a lot of improvements have been made to the inside of the Java virtual machine, including quite a few changes in the implementation of locks and synchronization, garbage collection, and class loading.
Provides preliminary dynamic language support (through the built-in Mozilla JavaScript Rhino engine), provides a compile-time annotation processor and a tiny HTTP server API, and more.
New features introduced include:
- Nomenclature changes
- Scripting language support
- Compile API and Micro HTTP Server API
- Locks and Synchronization
- garbage collection
- class loading
- JDBC 4.0 (jdbc-advanced)
- Java Compiler (interface to the Java™ programming language compiler)
- Pluggable annotations
- Native PKI (Public Key Infrastructure)
- Java GSS (Generic Security Service)
- Kerberos (a secure authentication system)
- LDAP (LDAP )
- Web Services (web service is xml transmission)
- Sorting and filtering of JTable
- Embedded database Derby
Java SE 7
2011-07-28 Dolphin (Dolphin)
After Oracle acquired Sun, it immediately announced that it has significantly cut the target of JDK 7 to ensure that the official version of JDK 7 can be released on time on July 28, 2011.
This version introduces new features such as binary integers, switch statements that support strings, diamond syntax, multiple exception captures, and try statements that automatically close resources. Provide a new G1 collector (G1 was still in the Experimental state when it was released, and it was not officially commercialized until Update 4 in April 2012), and strengthen the call support for non-Java languages (JSR-292, this feature is in JDK 11 There are also changes), a parallelizable classloading architecture, etc.
New features introduced include:
- The switch statement supports String strings
- Generic object type inference - When calling the constructor of a generic class, you can omit the generic parameter, and the compiler will automatically judge.
- catch multiple exception catches - multiple exceptions are separated by using the '|' operator
- Support for dynamic languages
- Improved generic type varargs
- Syntactically supports collections not necessarily arrays
- Added tools and methods for obtaining environmental information
- Boolean type inversion: null pointer safety, participate in bit operations
- equals method between two chars
- safe addition, subtraction, multiplication and division
- Java collections (Collections) enhancements - map collections support concurrent requests
- Introduce the Java NIO.2 development kit
- Values can be underscored as separators
- null is worth handling automatically
- Simplified calling variadic methods
- Provide GI collector
- Strengthen the call support for non-Java languages (JSR-292, upgrade class loading architecture)
Java SE 8(LTS)
2014-03-18
This version brings brand-new Lambda expressions, functional interfaces, Lambda expressions, streaming operations on collections, annotation updates, security enhancements, IO\NIO improvements, and complete globalization functions.
New features introduced include:
- Lambda expression
- Improved type inference
- Java Type Annotations
- duplicate comment
- method parameter reflection
- TLS 1.1 and TLS 1.2 are enabled by default
- Limited doPrivileged
- Stronger algorithms based on password encryption
- SSL/TLS Server Name Indication (SNI) extension support in JSSE servers
- Support AEAD algorithm
- KeyStoreEnhancements
- SHA-224 message digest
- Enhanced support for NSA Suite B encryption
- Better support for high-entropy random number generation
- New PKIXRevocationChecker class
- 64-bit PKCS11 for Windows
- New rcache type 5 replay cache in Kerberos
- Kerberos 5 for Protocol Transition and Constrained Delegation
- Disable weak encryption by default
- Unbound SASL for GSS-API/Kerberos 5 mechanisms
- SASL service for multiple hostnames
- JNI bridge to native JGSS on Mac OS X
- Support stronger ephemeral DH keys in SunJSSE provider
- Support for cipher suite preference customization in JSSE
- Brand new JavaFX
- Operational Enhancements for Java Tools
- Unicode enhancements, including support for Unicode 6.2.0
- Adopts Unicode CLDR data and the java.locale.providers system property
- New Calendar and Locale API
- Introduce new Date Time API
- Nashorn JavaScript engine
- parallel array sort
- Standard encoding and decoding Base64
- unsigned arithmetic support
- new concurrency
- Enhanced Functions of Java XML Technology
- Enhanced virtual machine operations
Java SE 9
2017-09-22
JDK 9 was finally released with Jigsaw. In addition to Jigsaw, JDK 9 also enhanced several tools (JS Shell, JLink, JHSDB, etc.), rectified the log system of each module of HotSpot, and supported HTTP 2 client API, etc. 91 a JEP.
JDK 9 provides more than 150 new features, including the highly anticipated modular system, interactive REPL tools: jshell, JDK compilation tools, Java public API and private code, as well as security enhancements, extension improvements, performance management improvements, etc. . It can be said that JDK 9 is a huge system project, and an overall change has been completely made.
New features introduced include:
- Platform-level modularity (formerly known as: Jigsaw) modular system
- Java's REPL tool: jShell command
- Multi-version compatible jar package (this is very useful in dealing with backward compatibility)
- Syntax Improvement: Private Methods of Interfaces
- Syntax Improvement: Restrictions on UnderScore (underscore) usage
- Underlying structure: String storage structure changes (this is very important)
- Collection Factory Methods: Quickly create read-only collections
- Enhanced Stream API
- Brand new HTTP client API
- other features
Java SE 10
2018-03-20
The main R&D goal of this version is internal refactoring , such as unified source warehouse, unified garbage collector interface, unified just-in-time compiler interface (JVMCI already exists in JDK 9, here is the introduction of the new Graal just-in-time compiler), etc. It will be an improvement that will be of great benefit to the future development of Java, but for ordinary users, the new features of JDK 10 appear to be lacklustre. After all, it only contains 12 JEPs, and only local type inference is the visible improvement of the encoding side. .
The 12 key new features of Java 10:
- JEP 286: Type Inference for Local Variables. This feature has been discussed and investigated in the community for a long time, you can check the JEP 286 survey results
- JEP 296: Consolidating multiple code repositories of the JDK into a single repository
- JEP 304: Garbage Collector Interface. Improves source isolation between different garbage collectors by introducing a clean garbage collector (GC) interface.
- JEP 307: Introducing Parallel Full GC to G1
- JEP 310: Application Class Data Sharing. To improve startup and footprint, the existing Class Data Sharing ("CDS") feature is extended to allow application classes to be placed in shared archives
- JEP 312: Thread Local Control. Allows stopping individual threads instead of only enabling or stopping all threads
- JEP 313: Remove Native-Header Generation Tool (javah)
- JEP 314: Additional Unicode Language Tag Extensions. Including: cu (currency type), fw (day of the week for the first day of the week), rg (region coverage), tz (time zone), etc.
- JEP 316: Allocate Heap Memory on Alternative Memory Devices. Allows the HotSpot virtual machine to allocate Java object heaps on alternate memory devices
- JEP 317: Java-Based JIT Compiler (Experimental)
- JEP 319: Root Certificates. Root certificates in the open source Java SE Root CA program
- JEP 322: Time-Based Version Release Schema. "Feature releases" will contain new features, "Update releases" will only fix bugs
Java SE 11(LTS)
2018-09-25
This version has a revolutionary garbage collector such as ZGC, and also has the visible improvement of adding the type inference in JDK 10 to the Lambda syntax. InfoQ: Java 11 officially released, interpretation of new features
The 17 key new features (JEP) of Java 11:
- 181 Nested class visibility control
- 309 Dynamic file constant
- 315 Improve Aarch64 Intrinsics
- 318 Epsilon – a no-op garbage collector
- 320 Remove Java EE and CORBA modules
- 321 HttpClient
- 323 Local variable syntax for Lambda parameters
- 324 Key agreement for Curve25519 and Curve448 algorithms
- 327 Unicode 10
- 328 Flight Recorder
- 329 haCha20 and Poly1305 encryption algorithm support
- 330 Launch Single-File Source-Code Programs (start single-file source code programs)
- 331 Low-overhead Heap Profiling
- 332 TLS 1.3 support
- 333 ZGC: A Scalable Low-Latency Garbage Collector (Scalable Low-Latency Garbage Collector)
- 335 Deprecated Nashorn JavaScript engine
- 336 Deprecated Pack200 tools and API
Java SE 12
2019-03-19
It only contains 8 JEPs, which mainly include new functions such as Switch expression and Java microtest suite (JMH). The most striking feature is undoubtedly the addition of the Shen-andoah garbage collector developed by RedHat. As the first non-Oracle garbage collector, Shenandoah's goal is almost exactly the same as that of ZGC released by Oracle in JDK 11. There is inherent competition between the two.
The 8 key new features (JEP) of Java 12:
- 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental): Added a new garbage collector called Shenandoah, which reduces pause times by doing evacuation while Java threads are running.
- 230: Microbenchmark Suite: A new set of microbenchmarks is added to enable developers to easily test the performance of the JDK based on the existing Java Microbenchmark Harness (JMH) and create new benchmarks.
- 325: Switch Expressions (Preview): Extend the switch statement so that it can be used as a statement or expression to simplify daily code.
- 334: JVM Constants API: Introduce an API to model key class-files and nominal descriptions of runtime artifacts, especially those constants that can be loaded from the constant pool.
- 340: One AArch64 Port, Not Two : Delete all source code related to arm64 port, keep 32-bit ARM port and 64-bit aarch64 port.
- 341: Default CDS Archives : Generate class data sharing (CDS) archives by default.
- 344: Abortable Mixed Collections for G1: When the collection of the G1 garbage collector exceeds the suspension target, the garbage collection process can be aborted.
- 346: Promptly Return Unused Committed Memory from G1: Improve the G1 garbage collector to automatically return Java heap memory to the operating system when it is idle.
Java SE 13
2019-09-17
This release increases developer productivity by improving the performance, stability, and security of the Java SE platform and JDK. This time JDK13 includes 5 JEP (Java Enhancement Proposals) and a Unicode 12.1 support for a total of 6 major new features.
Six important features of JDK13:
- Support Unicode 12.1
- Dynamic CDS Archiving
- Reimplementation of the java.net.Socket and java.net.ServerSocket APIs
- Enhancements to ZGC
- Text Blocks (preview language feature)
- switch expressions (preview language feature)
Java SE 14
2020-03-17
The following 16 new features have been added to JDK 14:
- 305: pattern matching of instanceof (preview)
- 343: Packaging Tool (Incubator)
- 345: G1 NUMA memory allocation optimization
- 349: JFR Event Stream
- 352: Nonatomic byte buffer mapping
- 358: Friendly NullPointerException
- 359: Records (Preview)
- 361: Switch Expressions (Standard)
- 362: Solaris and SPARC ports deprecated
- 363: Remove CMS (Concurrent Mark Sweep) Garbage Collector
- 364: ZGC on macOS
- 365: ZGC on Windows
- 366: Deprecate ParallelScavenge + SerialOld GC combination
- 367: Remove Pack200 Tools and API
- 368: Text Blocks (Second Preview)
- 370: External Storage API (Incubator)
Java SE 15
2020-09-15
Java15 mainly has the following features:
- 339 Edwards-Curve Digital Signature Algorithm (EdDSA) Montgomery and Distorted Edwards Curve Signature Algorithm
- 360 Sealed Classes (Preview) Sealed Classes (Preview)
- 371 Hidden Classes Hidden classes
- 372 Remove the Nashorn JavaScript Engine Remove nasorn JavaScript engine
- 373 Reimplement the Legacy DatagramSocket API Reimplement the old DatagramSocket API
- 374 Disable and Deprecate Biased Locking Disable and Deprecate Biased Locking
- 375 Pattern Matching for instanceof (Second Preview )
- 377 ZGC: A Scalable Low-Latency Garbage Collector ZGC: A Scalable Low-Latency Garbage Collector
- 378 Text Blocks Text Blocks
- 379 Shenandoah: A Low-Pause-Time Garbage Collector Shenandoah: Low-Pause-Time Garbage Collector
- 381 Remove the Solaris and SPARC Ports Remove the Solaris and SPARC ports
- 383 Foreign-Memory Access API (Second Incubator) External Memory Access API (Second Incubator)
- 384 Records (Second Preview )
- 385 Deprecate RMI Activation for Removal recommends removing RMI activation
Java SE 16
2021-03-16
JDK16 has brought us 17 improvements, including new language features, new tools, and improvements in memory management.
New features of JDK16:
- Improved memory management
- new packaging tool
- UNIX-Domain Socket channels
- Warnings for Value-based Classes
- Encapsulating JDK Internals by default
- Provides C++14 language features
- Some other new features of the preview version
Java SE 17(LTS)
2021-09-14
Another long-support (LTS) version following the release of JDK11 3 years ago, which brings 14 JEP (JDK Enhancement Proposal) updates, including 10 new features, deletion of 2 features, and deprecation of 2 features. Spring Boot 3.0 only supports JDK 17 at a minimum, and is no longer backward compatible, which means that many developers in the future must gradually switch from JDK8 to JDK17.
New features of Java 17:
- 306: Revert to always strict floating-point semantics
- 356: Enhanced pseudo-random number generator
- 382: New macOS rendering pipeline
- 391: macOS/AArch64 port
- 398: Deprecate the soon-to-be-deleted Applet API
- 403: Strongly encapsulate the internal API of JDK
- 406: Switch pattern matching (preview)
- 407: Remove RMI activation
- 409: Sealing class
- 410: Remove experimental AOT and JIT compiler
- 411: Deprecation is about to delete the security manager
- 412: Foreign Functions and Memory API (Incubator)
- 414: Vector API (second feature incubation)
- 415: Context-specific deserialization filter
Java SE 18
2022-03-22
Nine new features brought by JDK18:
- 400: Default UTF-8 character encoding
- 408: Simple Web Server
- 413: Support code snippets in Javadoc
- 416: Reimplement reflection core functionality using method handles
- 417: Vector API (three hatches)
- 418: Internet Address Resolution SPI
- 419: Foreign Function & Memory API (Second Incubation)
- 420: switch expression (secondary incubation)
- 421: Deprecated delete related
Java SE 19
2022-09-20
This version has a total of 7 new features, 4 preview features + 2 incubating features + 1 new feature.
Seven new features brought by JDK19:
- 405: Record Patterns (Preview) - Record Patterns (Preview)
- 422: Linux/RISC-V Port - Linux/RISC-V port
- 424: Foreign Function & Memory API (Preview) - Foreign Function and Memory API (Preview)
- 425: Virtual Threads (Preview) - Virtual Threads (Preview)
- 426: Vector API (Fourth Incubator) - Vector API (4th Incubator)
- 427: Pattern Matching for switch (Third Preview) - switch pattern matching (third preview)
- 428: Structured Concurrency (Incubator) - Structured Concurrency (Incubator)
Java SE 20
2023-03-21
New features of JDK20:
- 429 Scoped Values (Incubator) Scoped Value (Incubator)
- 432 Record Patterns (Second Preview) Record Patterns (Second Preview)
- 433 Pattern Matching for switch (Fourth Preview) switch pattern matching (Fourth Preview)
- 434 Foreign Function & Memory API (Second Preview) External Function Memory API (2nd Edition)
- 436 Virtual Threads (Second Preview) Virtual Threads (Second Preview)
- 437 Structured Concurrency (Second Incubator) Structured Concurrency (Second Incubator Version)
- 438 Vector API (Fifth Incubator) Vector API (fifth incubator version)
reference:
New features of each version of JDK_Features of each version of jdk