Factsheet
Videos
Java is a programming language, just read the first line here
http://docs.oracle.com/javase/tutorial/
Java runs on a platform called Java Virtual Machine, which makes it platform independent.
Java is not quite called a platform itself.
Java is the programming language.
Java runs on the platform called the Java Virtual Machine (JVM).
Edit
To clarify and improve this answer following Roman Konoval's comment, the link provided by the OP (http://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html) does indeed state
Java technology is both a programming language and a platform.
If I am understanding the question correctly, the OP is not distinguishing a difference between the phrases "Java" and "Java technology" in the question.
Based on that interpretation (feel free to correct me) and to answer his question using his own words, "Java" (AKA, in this case, "the Java technology") encompasses everything pertaining to Java - the programming language itself, the JVM (the platform), the JDK, etc. That is why "Java," as the OP phrases it, is, in fact, both a programming language and a platform.
“Java SE” is three things:
- An abbreviation of “Java Standard Edition”
- A trademark owned by Oracle Corp.
- A set of specifications published by Oracle Corp.
Anybody in the world is free to write software that implements the Java SE specifications. In the past, several companies have done so.
However, anybody in the world is not free to use the trademark of Java. To use that trademark, a person or company is required to come to terms with Oracle in a licensing deal. Presumably that deal would require payment.
Long story short, and over-simplified for brevity… Some of the companies that previously wrote their own implementations of Java SE decided to join forces, combine their codebases, and publish the whole thing as open-source. These companies included Oracle, IBM, and Apple. Thus was born the OpenJDK project (Wikipedia). Since then, other companies and individuals have joined the project.
The OpenJDK name is a trademark owned by Oracle. However, Oracle has published permission allowing others to use the term with no payment required.
The OpenJDK project published source code to an implementation of the Java SE specifications. The project does not publish built binaries or installers.
Several vendors do publish built binaries or installers for implementations of the Java SE specs. Nearly all of these implementations rely largely, if not entirely, in the OpenJDK source code.
These binaries/installers vendors include, in no particular order:
- Azul Systems
- SAP
- Amazon
- Microsoft
- IBM
- Red Hat
- Oracle
- Adoptium
- BellSoft
… and more.
Most of those built binary or installers products use OpenJDK in their name or in their descriptions, as allowed by Oracle. A few of those products may use the term Java or Java SE with explicit permission from Oracle.
There are other editions of Java technology:
- Java Card (for smart cards, badges, etc.)
- Java ME, or Micro Edition (for constrained devices)
- Java EE, or Enterprise Edition (a wide collection of specifications that run on top of an implementation of the Java SE specs, aimed at developers making software for enterprise oriented users)
The first two, Java Card & Java ME are owned by Oracle. The third, Java EE, was donated by Oracle Corp to the Eclipse Foundation were it is now known as Jakarta EE. Jakarta EE is a collection of specifications, with various vendors publishing implementations.
The term “JDK” refers to Java Development Kit. This kit includes an implementation of the Java SE specs, plus tools to write Java apps. These tools include a compiler.
The term “JRE” refers to Java Runtime Environment. This is a JDK minus some of the software development tools.
The term “JVM” refers to Java Virtual Machine. A JVM is a piece of software that enables a Java-based app to execute at runtime on a particular kind of host computer and operating system. Java apps are platform-agnostic, in other words, are not “native”. So a Java app needs a particular JVM to know how to run on a Mac, on a PC, or on a mainframe.
Every JDK and every JRE contains a JVM.
I think your confusion stems from what Java is. Originally, most languages were like C, where you write code, and it gets compiled to a specific computer architecture/ISA (x86, ARM, whatever).
Java "changed the game" when it came on the market, because it was:
Free (many langs at the time were proprietary)
Enforced object oriented programming style (which all the cool kids were doing at the time)
It added the JVM. The JVM is installed on top of the ISA, it was a piece of middleware that meant that compiled Java code could "run anywhere" (in practice, this isn't strictly true, but it's aside the point)
Anyways, if you just need to run Java programs, you can just install the JVM/JRE (of which the JVM is a component). If you actually need to develop Java programs, you need one of these "editions," which supports more or less features, depending on what you are doing with it. If you're a hobbyist programmer, SE is fine. SE, EE, and ME all include the JRE, JVM and JDK.