Talk about those things from JDK1.0 to JDK20 | JD Cloud technical team

1 Introduction

Recently, the group is carrying out reading corner activities. Our group chose "In-depth Understanding of JVM Virtual Machine". I believe this book is familiar to all programmers. After many days, the knowledge of what's inside is also blurred. At the beginning of this time, I started from the previous JDK development history and the JVM virtual machine family. I have read them roughly before. This time, I checked the relevant information and collected some anecdotes that happened during the evolution of each JDK version. Interestingly, the following is a summary sharing about the history of JDK development.

2. Features and anecdotes of each version of JDK

  • JDK version evolution and features of each version

◦JDK 1.0 (1996):

▪Includes Java language, Java class library and Java virtual machine. Support graphical user interface (GUI), database connection (JDBC) and other functions.

"Oak" is the predecessor of the Java language. Since the name "Oak" has been used by other companies, in 1995, the creator of Java, Sun Corporation, decided to change its name to "Java". It is said that the name comes from a coffee shop. At that time, when designing the Java language, when the founding team members went to a coffee shop to buy coffee, they found that the name of the coffee shop was "Java Coffee", so they decided to use "Java" as the new name.

◦JDK 1.1 (1997-2):

▪Increased internal classes, JavaBeans, remote method invocation (RMI) and other functions.

JDK 1.2 / Java 2 (1998-12):

▪Introduced features such as Swing components, reflection mechanism and dynamic proxy, collection framework, Java 2D and Java 3D graphics.

This is the first real commercial release of Java SE. This version introduces features such as the Java namespace (namespace), enabling Java applications to be better organized and managed. At this stage, there were three virtual machines, Classic VM, HotSpot VM and Exact VM, among which HotSpot was born in April 1999.

◦JDK 1.3 (2000-5):

▪Added functions of Java platform, underlying class library, enhanced AWT and Swing user interface, etc.

At that time, Sun was facing a serious challenge from Microsoft, which launched the .NET framework in an attempt to subvert Java's status. Therefore, Sun Corporation decided to speed up the development of Java and enhance its competitiveness.

JDK 1.4LST (2002-2):

▪Introduction of Java Management Extensions (JMX), a new I/O API called NIO (New I/O), assertions, built-in XML parsers (SAX and DOM), and more.

This is one of the most fully featured releases in Java SE. This version introduces new features such as NIO and XML parser, which improves the performance and scalability of Java programs.

JDK 5.0 / Java 1.5 (2004-9):

▪Introduced features such as generics, enumeration types, automatic boxing and unboxing, annotations, and concurrent programming API.

This is one of the most feature-rich releases in Java SE. This version introduces new features such as generics, type-safe enumerations, automatic boxing/unboxing, and annotations, making the writing of Java programs more concise and streamlined.

From this version, Sun has abandoned the humble "JDK 1. x" naming method, and changed the product version number to "JDK x". The reason for Sun's doing this is that starting from JDK 5.0, the release plan of the Java platform is to release a version every year. In order to avoid version number confusion and better convey the rapid iteration and update of the Java platform, a new naming method is adopted.

◦JDK 6 (2006-12):

▪Introduced JDBC 4.0 API, Java monitoring and management console (JConsole), increased support for dynamic languages, improved GUI toolkit (Swing), improved Java Web Start, improved performance and security, and other features.

The update of JDK has not been able to maintain the development speed of releasing a major version for two years, which has led to an abnormally long life cycle of JDK 6. Java 6 is widely used in banks and other systems for the following reasons:

High stability: Java 6 is a relatively mature and stable version. After years of practice and testing, it has been widely recognized and verified, and meets the stability requirements of the financial industry. Although new versions such as Java 7 and Java 8 bring more functions and optimizations, these functions are not required by every bank, and the stability of the new version also needs a certain period of verification and inspection.

Strong controllability: Banks and other systems have very high requirements for software controllability, and it is necessary to ensure that the software can run stably and have good maintainability. In this regard, Java 6 also has relatively few newer features and updates, making it relatively easy to maintain and control.

Cost considerations: For some large institutions, upgrading to the latest Java version can be costly. For example, existing code and applications need to be modified, retested and audited, etc. In addition, many legacy systems are still running Java 6, and upgrading to the new version requires a reassessment of risks and benefits, which also requires additional costs and investments.

In short, Java 6 is widely used in banks and other systems due to its stability, controllability and cost considerations. However, with the passage of time and the introduction of new versions, systems such as banks also need to gradually upgrade to more advanced Java versions to meet business needs and improve operational efficiency.

In addition, although Java 7 and Java 8 have brought more new features and optimizations, upgrading to new versions in systems such as banks requires a huge cost, such as rewriting and testing code, re-evaluating security, etc. One of the reasons why businesses such as banks are using Java 6 as a development platform.

◦JDK 7 (2011-7):

▪Introduced features such as the string expression form of the switch statement, binary literals and underlined number notation, and the Try with Resources statement.

During the development of JDK 7, Sun was mired in technical competition and business competition one after another. The company's stock market value fell to only 3% of the peak period, and it was unable to promote the development of JDK 7 to continue as planned. In order to end the problem of JDK 7's long-term ticket bounce as soon as possible, Oracle immediately announced the implementation of "Plan B" after acquiring Sun, which greatly cut the target of JDK 7 to ensure that the official version of JDK 7 can be released on time on July 28, 2011. .

JDK 8LST (2014-3):

◦Introduced Lambda expression, Stream API, Date/Time API, interface default method, method reference, repeated annotation, Optional class, Nashorn JavaScript engine and other features.

This is one of the most important versions of Java SE. It introduces new functions such as Lambda expression, Stream API, Default method, and DateTime API, which greatly improves the efficiency of writing and developing Java programs. Originally scheduled to be released in September 2013, it was finally skipped until March 18, 2014. Starting from JDK 8, Oracle enabled JEP (JDK Enhancement Proposals) to define and manage features included in the release scope of the new version of JDK.

JDK 9 (2017-9):

◦ Introduced features such as modular system , JShell, HTTP/2 client and server-side API.

Release rhythm change: In the future, JDK will release a major version in March and September each year, and every 6 major versions of JDK will be designated as a long-term support (Long Term Support, LTS) version, only the LTS version JDK can get support and updates for a period of 3 years, and JDK 8 and JDK 11 will be LTS versions. The next one will be JDK 17, which will be released in 2021.

◦JDK 10 (2018-3):

▪Introduced local variable type inference, improved Javadoc and other features.

On March 27, 2018, the Android Java infringement case had a final verdict. The court ruled that Google compensated Oracle with a total of 8.8 billion US dollars. It must be known that Oracle’s acquisition of Sun in 2009 only cost 7.4 billion. The patent brought Google to court. After several rounds of magic operations by Oracle's legal department, the compensation in a lawsuit made the acquisition of Sun the same as free.

JDK 11LST (2018-9):

▪Introduced HTTP Client API (HTTP Client API), Nest-Based Access Control (Nest-Based Access Control), Flight Recorder (flight recorder), Epsilon GC (Epsilon garbage collector) improved ZGC (Z Garbage Collector) ) and other characteristics.

This is the latest version in the long-term support version of Java SE. It introduces new functions such as HTTP client, Local-Variable Syntax for Lambda Parameters, ZGC, etc., which has important practical value. In October 2018, the last JavaOne2018 was held in San Francisco. This annual event for developers, which was born and grew up with Java in 1996, came to an end. In addition, Java Mission Control (Java Mission Control (JMC) is a tool developed by Oracle Corporation for monitoring, managing and analyzing Java applications.) The development team was also disbanded by Oracle in June.

◦JDK 12 (March 2019):

▪Introduced Switch expression preview function, micro-benchmark test suite and other features.

In February 2019, on the eve of the release of JDK 12, Oracle gave up the maintenance of the previous version of OpenJDK six months later, as previously announced, and RedHat took over the management rights and rights of OpenJDK 8 and OpenJDK 11 from Oracle at the same time. Maintenance duties.

◦JDK 13 (September 2019):

▪Introduced features such as text block preview function and dynamic CDS archive.

◦JDK 14 LST (March 2020):

▪Introduced features such as instance pattern matching preview function, non-volatile memory support, etc.

◦JDK 15 (September 2020):

▪Introduced features such as the sealed class preview function and the Edwards-Curve digital signature algorithm.

◦JDK 16 (March 2021):

▪Introduced features such as record preview function and vector API.

JDK 17LST (September 2021):

▪Long-term support version, introducing formal features such as pattern matching and sealed classes.

◦JDK 18 (March 2022):

▪Introduce a simple web server, support adding code snippets in Java API documents, and make UTF-8 the default character set for Java API.

◦JDK 19 (September 2022):

▪Introduce structured concurrent API to simplify multi-threaded programming, support virtual threads , etc.

◦JDK 20 LST (March 2023):

▪Introduce record mode, switch mode matching, etc.

3. Current JDK version usage in the market

New Relic recently released a "Java Ecosystem Status Report 2023", which collects data from millions of online applications and counts the most used JDK versions in the current production environment, the most popular Data about JDK vendors, containers, etc.

More than 56% of applications currently on the market use JDK 11. In contrast, the use of Java 8 has dropped from 84% in 2020 to about 32% now. Both have been upgraded to the two LTS versions of JDK 11 or JDK 17.

Among the JDK manufacturers, Amazon has seen a relatively large increase in the past two years, from 22% to 31%, which is the highest proportion among all JDK manufacturers currently on the market.

4. Summary

Ok, the above is a brief introduction of all JDK versions and related features so far. Originally, a mind map of the features of each version was compiled, which contains detailed related introductions, but if all of this is put in the article, it will appear too much. Long, emm, in fact, the JDK we are using is still JDK8. Some time ago, through the investigation of JDK, we also studied the modularization in JDK9 and the virtual thread in JDK19, and used the actual demo to verify the usage scenarios. The relevant analysis will be Introduced in a follow-up article.

ps: A brain map photo is attached at the end of the article~

Author: Jingdong Technology Song Huichao

Source: JD Cloud developer community reproduced, please indicate the source

Ministry of Industry and Information Technology: Do not provide network access services for unregistered apps Go 1.21 officially releases Linus to personally review the code, hoping to quell the "infighting" about the Bcachefs file system driver ByteDance launched a public DNS service 7-Zip official website was identified as a malicious website by Baidu Google releases AI code editor: Project IDX Tsinghua Report: Wenxin Yiyan firmly sits first in China, beyond the ChatGPT Vim project, the future meditation software will be launched, ChatGPT was founded by "China's first Linux person" with a daily cost of about 700,000 US dollars , OpenAI may be on the verge of bankruptcy
{{o.name}}
{{m.name}}

Guess you like

Origin my.oschina.net/u/4090830/blog/10095890