This article thoroughly understands the confusing version naming of Java and JDK!

Tell Qing, are you really clear about the version number of Java and the naming of the JDK? such as:

  1. Java8
  2. Java SE 8.0
  3. JDK1.8
  4. ...

Do you know what's going on? Do you know there is another saying about Java 2? Do you know the following statement?

  1. J2SE1.3
  2. J2SE1.4
  3. ...

It's already June, and in September, a new long-term support version, Java17 will be released, what? Has the Java version reached 17? No, no, I have been using JDK1.8, eh, JDK1.8? Java17?

Insert picture description here

What is going on here? Don't worry, today Brother Qing will take you to thoroughly understand these honey juice operations!

Java version and JDK version

To understand the naming of these confusing people, the key to understanding is the Java version and the JDK version. First of all, we often say that there are three versions of Java, right, they are:

  1. JavaSE (Java Platform, Standard Edition) Java Standard Edition
  2. JavaME (Java Platform, Micro Edition) Java Micro Edition
  3. JavaEE (Java Platform, Enterprise Edition) JAVA Enterprise Edition

Actually, you only need to pay attention to JavaSE . This is the standard version of Java, which is ignored by ME. As for JavaEE, it is a set of specifications upgraded from JavaSE. We usually do Java development. If you think about it, is it right? Need a JDK, this JDK corresponds to JavaSE.

It's over, I know you guys are dumbfounded again...

What is JavaEE?

Then I will give you more details about this JavaEE, in fact, we usually hear the most, the most used is JavaSE, because people are the standard version of Java, but this JavaSE provides the core functions of Java, generally used For the development of desktop applications, but for enterprise-level development, the projects we are doing are not simply desktop-level applications, usually web applications, dynamic websites, etc.!

So here comes the problem. In the face of relatively large enterprise-level project development, some of the core basic functions provided by JavaSE can be used, but it is too laborious to use. . Many things have to be built from scratch by themselves, and the code is used step by step. It’s hard to start writing the most basic.

Ever since, compiled a set of specifications on the basis of JavaSE , the purpose of which is to solve some of the problems encountered in enterprise-level development. These problems are the more laborious things to use JavaSE alone!

So what is the norm? To put it bluntly, it is to stipulate how you should do it. For example, in the face of common web request processing, we know that there are servlets, then JavaEE has made the specification for servlets , which means that if you want to use servlets to process a web request, first Hey, you have to implement an HttpServlet class. This is not over yet. Your class has to inherit the Servlet interface, and you have to implement its interface methods. Which ones? These are doGet and doPost, so how are you familiar with it? For example, your doGet method must also receive two parameters...

You see, JavaEE stipulates that Servlet must be used in accordance with this regulation. At that time, some other vendors made some specific implementations around these specifications of JavaEE, such as our common tomcat, which is called a servlet container, and the servlet in it Implementation is to give JavaEE the specification of servlet!

To make it simpler, JavaEE stipulates how servlets handle web requests, and then specific vendors implement specific implementations and enhancements according to this stipulation, and then come up with tomcat...

So what is Spring? At the beginning, Spring was to solve some problems encountered in the use of JavaEE, such as the servlet specified in JavaEE. Then spring-mvc in spring is a further encapsulation of this servlet to make it more usable!

In fact, some specifications and standards of JavaEE are widely used or implemented in Spring ! To be more blunt, your JavaEE is not a set of specifications, and how to use what is specified, then I will do this in spring. If your specifications are really easy to use, I will use them directly, but they are not easy to use. I'm just processing and packaging it into something more usable. It can be simply understood that spring is an upgraded version of JavaEE, or a super-implemented version!

With the development of time, the update of JavaEE is too slow, and Spring is very fast, and people are super easy to use, so slowly JavaEE has long been behind.

You download and configure a JDK as we usually do for development. In fact, it is the corresponding JavaSE. Then we generally use Spring-based frameworks. Where is the JavaEE reflected in the Spring framework. A large number of JavaEE specifications are used and implemented in the Spring framework. And JavaEE is a set of specifications upgraded on the basis of JavaSE, it is not just a JDK!

So, now you read some books about JavaEE development frameworks, which are actually introducing SSM frameworks. To put it bluntly, JavaEE has gradually become a variety of frameworks for its specification implementation. The first one is Big Brother Spring. Up!

Java version of honey operation

The above has spent a lot of space to introduce what is JavaEE and some of the relationship with Spring, you should remember:

Just use Spring

Then let's look at these magical operations of the Java version number. As I said before, the key to understanding is the Java version and the JDK version. The key understanding is as follows:

Whether we say that the Java version or the JDK version is for the standard version of JavaSE, the final thing is to know that each Java version actually corresponds to a specific JDK version, which means that Java is a language and JDK is a Java. The language development kit, so the version of Java can be said to be an abstract and macro concept, with its own version name, and the corresponding concrete actual existence is the JDK.

Remember, a Java version corresponds to a JDK version!

I took a picture here, let's take a look at it together:

Insert picture description here

That is to say, the early version of Java was released in 1995. At that time, it was called Oak, but the trademark was registered and changed to Java in 1996. At this time, Java was the first official version. Version Java1.0 was released, and at the same time the corresponding development kit jdk version is JDK1.0.

What is J2SE

With the development of time, the version of Java was not always called Java 1.X. In 1998, the Java platform was renamed J2SE , so from that time, the version of Java was named J2SE 1.2. The form, which is here:

Insert picture description here

The corresponding JDK version is JDK1.2 and JDK1.3 this form!

Major changes in JDK1.5

In 2004, the Java version changed a lot. At this time, the corresponding JDK1.5 upgrade was relatively large. In order to show the importance of this version, the Java version was renamed from the original J2SE 1.5 to Java SE 5.0 (internal Version number 1.5.0), so subsequent Java version numbers are in this form of Java SE X , which is like this:

Insert picture description here

It should be noted here that until the release of JavaSE 9 in 2017, the corresponding JDK version at this time is in the form of JDK1.X, but by the release of JavaSE 10 in 2018, it has changed!

JDK naming changes

When JavaSE 10 was released in 2018, the corresponding JDK version was no longer in the form of JDK1.10, but in the form of JDK10. In fact, this is also easier to understand!

The subsequent version looks like this:

Insert picture description here

Until now, the naming has been stable. For example, the latest JavaSE 16 corresponds to JDK16. When it comes to this, there is another honey operation . Let's take a look at the JDK changes on Oracle's official website:

Insert picture description here

Have you seen it? There are JDK7, JDK8 and JDK9 here. According to what we said before, it shouldn’t be like this:

Insert picture description here

So, the naming of the Java version and the JDK version is really messy. After the JavaSE 10 update in 2018, the corresponding JDK version is called JDK10. For the convenience of unification, the previous JDK1.8 can also be called JDK8!

But now, the version number of Java is relatively stable, that is, the form of Java SE XX, such as the upcoming Java SE 17, which is a long-term supported version! The corresponding JDK version is JDK17.

View the updated content of the JDK version

As a Java programmer, you should always pay attention to Java version updates and the new features brought by the upgrade of JDK. How should you pay attention to these?

It's actually this:

Insert picture description here

For example, we click on the latest JDK16:

Insert picture description here

Insert picture description here

If you don’t know, please bookmark this address:

View Javav version changes

In addition, here is an address to view the changes of the Java version at any time, and you can see a more intuitive picture, which is like this:

Insert picture description here

Is it intuitive?

Hurry up and bookmark the address:


The above content is based on my own experience and searching for relevant information. Of course, there may be some errors in the content. For example, the understanding of JavaEE may not be accurate enough. Therefore, if you find the description in this article Please give me some feedback if it is not accurate enough or incorrect. Thank you very much!

Let's study together and make progress together!