The core principle of Java is portability. Source code is not compiled into machine code for a specific processor; instead it is compiled into bytecode — an intermediate representation. The bytecode is executed by the JVM, which is available on all major platforms.
The execution of a Java program involves three stages. First you write source code in .java files. Then the javac compiler converts it to bytecode (.class files). Finally the JVM interprets or JIT-compiles the bytecode into native machine instructions.
Three terms are often confused, but they are nested: JVM is the core that executes bytecode; JRE adds the standard libraries; JDK adds the compiler and developer tools on top.
Since 2017 Java follows a predictable release cadence: a new version every 6 months. Certain versions are designated LTS (Long-Term Support) and receive security updates for several years.
Java is present in virtually every area of software development — from banking systems and Android apps to big data pipelines and cloud platforms.
Java has several characteristics that set it apart. Strong static typing eliminates a whole class of bugs at compile time. The Garbage Collector frees developers from manual memory management. Built-in multithreading support and the vast Maven Central ecosystem complete the picture.