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.
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.
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".
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.
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.
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.
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