Java began as "Oak," a project started by James Gosling and colleagues at Sun Microsystems in 1991, originally aimed at consumer electronics before being retargeted at the emerging web and renamed Java for its public release in 1995. Its defining design goal, "write once, run anywhere" (WORA), is achieved by compiling source code to bytecode — an intermediate format — rather than directly to a specific machine's native instructions; any device running a Java Virtual Machine (JVM) can execute that same bytecode unmodified, regardless of the underlying operating system or hardware.
Compile once, run on any JVM
javac compiles source into portable .class bytecode files; the JVM on the target machine interprets or JIT-compiles that bytecode into native instructions at runtime — the same .class file works unmodified across operating systems, as long as a compatible JVM is installed.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}$ javac HelloWorld.java // produces HelloWorld.class (bytecode)
$ java HelloWorld // JVM runs the bytecode
Hello, World!Statically typed, object-oriented from the ground up
Every variable's type is declared and checked at compile time, and every piece of executable code lives inside a class — there's no such thing as a free-standing function outside a class in Java, unlike many other languages.
26+ years of steady evolution
Java moved to a strict six-month release cadence starting with Java 10 (2018), with a new Long-Term-Support (LTS) release roughly every two years — Java 25 (September 2025) is the current LTS, and Java 26 (March 2026) is the newest feature release. Despite the rapid version numbers, Java's core promise of backward compatibility has held remarkably well across three decades, which is a large part of why it remains dominant in enterprise, Android, and large-scale backend systems.