Outline of the Java programming language
In-game article clicks load inline without leaving the challenge.
The following outline is provided as an overview of and topical guide to Java:
Java is a general-purpose, concurrent, object-oriented, class-based, strong, and statically typed programming language that is compiled to Java bytecode for execution on a Java virtual machine (JVM), which allows "write once, run anywhere" programming. Java was designed by James Gosling and a team at Sun Microsystems in the early 1990s and was a core component of Sun's Java platform.
What type of language is Java?
- Programming language – artificial language designed to communicate instructions to a machine, particularly a computer.
- Object-oriented programming – built primarily around objects and classes.
- Class-based programming – types and code are organized into classes.
- Compiled – source code is compiled to an intermediate form (Java bytecode).
- Interpreted – bytecode is executed by a Java virtual machine, which typically performs Just-in-time compilation.
- General-purpose programming language – designed for a wide variety of application domains.
- Static type checking – type checking is performed at compile-time.
- Strongly typed – enforces strict type rules at compile time.
- Concurrent – built-in support for multithreading and concurrency utilities.
History of Java
- Oak – early name for a new programming language started at Sun Microsystems
- Acquisition of Sun Microsystems by Oracle Corporation in 2010, along with the Java programming language and APIs.
- Oracle litigation against Google's Android OS for using Java APIs from Oracle. See also: Comparison of Java and Android API
- Java 25 – latest major release published September 16, 2025
General Java concepts
See also: Java Language fundamentals on Wikibooks and Java syntax
- Annotations
- Class loaders
- Classes and Objects
- Concurrency
- Constructors
- Fields
- Garbage collection
- Generics
- Interface (Java)
- Java virtual machine
- Java bytecode
- Java Class Library, standard library
- Java Development Kit
- Java Runtime Environment
- Javadoc
- Java package
- Java Platform Module System
- Java variables
- Lambda expressions
- Methods
- Reflection
- Write once run anywhere
Issues and limitations
- Abstraction from hardware – students miss low-level cost models
- Array limits – capped size and no true multidimensional arrays
- Checked exceptions – criticized as verbose and largely abandoned by other languages
- Floating-point limits – incomplete IEEE 754 support
- Generics via type erasure – limits expressiveness and caused unsoundness bugs
- Java performance – early implementations were slow compared to C/C++
- Primitive vs. object divide – forces code duplication in libraries
- Serialization – widely seen as a serious security risk
- Lack of tuples – requires awkward workarounds or third-party libraries
- Licensing and governance controversies – Sun Microsystems acquisition by Oracle and subsequent litigation
- No operator overloading – makes math-heavy code less readable
- Potential sources of security vulnerabilities in Java applications
- Project Valhalla (missing value types) – inefficiency due to everything being objects
- Security vulnerabilities – repeated sandbox escapes and exploit waves
- Unsigned integer types – problematic for cryptography and C interop
- Weak parallelism – monitors criticized as insecure and unreliable
Java platform and editions
- Java SE – Java Platform Standard Edition
- Jakarta EE (formerly Java EE) – Enterprise Edition APIs and runtime for multi-tiered server applications
- JavaFX
- Java ME – Micro Edition for constrained devices and embedded systems
Java toolchain
- List of Java software and tools
- List of Java frameworks
- List of Java libraries
- List of Java compilers
- Comparison of Java virtual machines and List of Java virtual machines
- List of JVM languages
- List of application servers for Java
- List of unit testing frameworks for Java
- Comparison of IDEs for Java
Notable projects using Java
- Android (operating system)
- Apache Hadoop
- Apache Tomcat
- Eclipse IDE
- Elasticsearch
- IntelliJ IDEA
- Jenkins
- Minecraft (video game), Java Edition
- NetBeans
Java open-source development communities
- Apache Software Foundation – Apache Commons, Apache Maven, Apache Tomcat, Apache Kafka
- Eclipse Foundation – Adoptium, Eclipse IDE, Jakarta EE, Eclipse Jetty, Eclipse Vert.x
- OpenJDK community – Java Platform, Standard Edition
- Oracle – GraalVM (Community Edition), JavaFX (OpenJFX)
- Red Hat / JBoss – Hibernate, Drools, Quarkus
Example source code
- Articles with example Java code
Java publications
Books about Java
- Bruce Eckel – Thinking in Java
- James Gosling – The Java Programming Language
- Joshua Bloch – Effective Java
- Kathy Sierra – Head First Java
- Herbert Schildt – Java: The Complete Reference, Java: A Beginner's Guide, Java 2 Programmer's Reference
Java programmers
- Arthur van Hoff
- Bill Joy
- Craig L. Russell
- Doug Lea
- Gilad Bracha
- Guy L. Steele Jr.
- James Gosling
- Joshua Bloch
- Martin Odersky
- Urs Hölzle
Java dialects and related languages
- Clojure – JVM Lisp dialect
- Groovy
- JRuby – JVM Ruby implementation
- Jython – JVM Python implementation
- Kotlin – JVM JetBrains language
- Scala – JVM language combining object-oriented and functional paradigms
See also
Outlines of other programming languages
- Outline of the C programming language
- Outline of the C sharp programming language
- Outline of the C++ programming language
- Outline of the JavaScript programming language
- Outline of the Perl programming language
- Outline of the Python programming language
- Outline of the Rust programming language