What are JDK, Oracle JDK, OpenJDK, Java SE?

I don't know about JDK or Java SE

In 2017/9, changes in Oracle's Java support system and release cycle were announced, and various talks about OpenJDK and Oracle JDK began to flow, but it is not organized. Here, I would like to sort out the terms that seem to represent the core implementation of Java. If you have a long sentence, you should just look at the summary.

What is Java in the first place?

A clear definition of the term Java is difficult, but one thing is certain: it's a trademark of Oracle. "Java" used as a conversation is spoken under the word "Java", such as software implementation and development environment centered on Java SE specifications, libraries, their developers / organizations, communities, and trends in products used. I think it includes a variety of technical issues. I think this generally applies to programming languages such as Ruby and Scala.

What is Java SE

Java SE is a collection of specifications. Typical examples are the Java language specification, Java virtual machine specification, and Java API specification. As a characteristic of API, it is difficult to separate the specification and implementation, and it is not in the form of a specification, but the movement is explained in as much detail as JavaDoc. Each specification of Java SE is decided by a process called JCP. Companies, organizations and individuals other than Oracle also participate in the JCP. Then, Oracle provides a TCK (Technology Compatibility Kit) that checks whether the Java SE implementation complies with those specifications, and by passing through that TCK, the implementation is recognized as Java SE compliant. I will. To be precise, Java 8 and Java 10 do not exist, and although they are abbreviations for Java SE 8 and Java SE 10, they are often used in practice. In particular, in the current situation where Java EE has moved to Jakarta EE and Java ME has hardly appeared in the table, the need to write it like Java SE 11 has decreased, and writing like Java 11 has increased. I think it is.

Also, in this sense, the expressions "disappearing Java SE free version" and "paid Java SE" are not very correct, but I think Oracle itself uses the term Java SE vaguely. However, this can be interpreted as "Java SE on Oracle's site is JDK", so when someone other than Oracle refers to Oracle's Java SE, it is like "Oracle Java SE" and "disappears." I think it is more accurate to use something like "Oracle Java SE Free Edition" or "Paid Oracle Java SE".

What is OpenJDK?

An open source project that develops software and related products based on Java SE, and a source code storage for that product. OpenJDK products include Java VMs that operate according to the Java Virtual Machine specifications, Java compilers that convert program code written in syntax based on the Java language specifications into byte codes that operate in Java virtual machines, and Java VMs. It includes API implementations that work and are based on the Java API specification, as well as execution and development environments such as profilers and debuggers. The OpenJDK Java VM is called the HotSpot VM.

In fact, we do not provide binaries. You can download the binaries at jdk.java.net, but java.net is the Oracle site, where you can download the OpenJDK binaries that Oracle has built and tested. Others such as Adopt OpenJDK, Azul System, and Red Hat provide their own build binaries. Google has an OpenJDK binary for its cloud service.

What is JDK

JDK is also a trademark of Oracle and stands for Java Development Kit. The product name of the Java SE development toolkit provided by Oracle. It is basically developed as OpenJDK.

Since it is a Development Kit, it includes tools necessary for development such as a compiler. What was needed only at runtime was distributed as a JRE (Java Runtime Environment), but it has been deprecated since Java 9.

What is Oracle JDK?

When we simply say JDK, it's hard to tell whether it's OpenJDK or Oracle's JDK, so it's now called Oracle JDK to distinguish it. The Oracle JDK was an implementation of OpenJDK with commercial features like Flight Recorder and Mission Control, and desktop features like JavaFX and Java Web Start. However, commercial features such as Flight Recorder and Mission Control will be donated to OpenJDK, and JavaFX and Java Web Start will no longer be bundled with Oracle JDK, so from Java 11 both OpenJDK and Oracle JDK will be functionally the same. It has become. So the binaries aren't all different, the Oracle JDK comes with an installer. After there are no update releases in OpenJDK, it will be patched independently and an update release will be released. Also, of course, the license is different.

Summary

Java = ecosystem Java SE = specification OpenJDK = an open source project that implements Java SE Oracle JDK = OpenJDK built by Oracle + installer

OpenJDK in jdk.java.net = OpenJDK built by Oracle OpenJDK of AdoptOpenJDK = OpenJDK built by the AdoptOpenJDK community Zulu = OpenJDK + installer built by Azul IBM Java SDK = IBM-built OpenJDK --HotSpot VM + OpenJ9 + installer

Recommended Posts

What are JDK, Oracle JDK, OpenJDK, Java SE?
What are Java metrics? _Memo_20200818
Oracle Certified Java Programmer, Gold SE 8
[Java] What are overrides and overloads?
Oracle Certified Java Silver SE 8 Passing Experience
[Talend] Switching from Oracle JDK to OpenJDK
What are the updated features of java 13
Features in Oracle JDK 8 but not in OpenJDK
What you did to get the Oracle Certified Java Programmer, Silver SE 8
Java SE Overview
What is java
Oracle Java Day 2017
Java SE 7 memo
What is Java <>?
What is Java
[Java] How to switch from open jdk to oracle jdk
Java SE Subscription
Former liberal arts doctor obtained Oracle Java Bronze SE 7/8
Oracle Certified Java Programmer, Silver SE 8 Certification Examination Experience
Java SE Development Kit (JDK) setup procedure on Windows
Story of passing Java Silver SE8 (Oracle Certified Java Programmer, Silver SE 8)
Obtained Oracle Certified Java Programmer Silver SE 8 Examination experience
[Java Silver] What are class variables instance variables and local variables?
Passed Java SE8 Silver
Received Oracle Java Bronze
What is Java Encapsulation?
[java] Java SE 8 Silver Note
What is Java technology?
What is Java API-java
[Rails] What are params?
[Java] What is flatMap?
[Java] What is JavaBeans?
[Java] What is ArrayList?
Stackdriver Logging logs are misaligned in GAE SE for Java 8
Oracle Java Trends 2018 = Quick Summary = (Looking at the Oracle JDK 11 Release)
What you learned when you acquired Java SE 8 Silver and Gold