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

Type of language Programming language – artificial language designed to communicate instructions to a machine, more so a computer. Object-oriented programming – built mostly around objects and classes. Class-based programming – types and code are organized into classes. Compiled – source code is compiled to an intermediate representation: JVM 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 Objectshttps://www.geeksforgeeks.org/java/classes-objects-java/ Concurrency Constructors Fieldshttps://www.geeksforgeeks.org/java/java-lang-reflect-field-class-in-java/ Garbage collectionhttps://www.geeksforgeeks.org/java/garbage-collection-in-java/ Generics Interface (Java) Java virtual machine Java Class Library, standard library Java Development Kit Java Runtime Environment Javadoc Java package Java Platform Module System Java variables JVM bytecode Lambda expressionshttps://www.geeksforgeeks.org/java/lambda-expressions-java-8/ Methodshttps://www.geeksforgeeks.org/java/methods-in-java/ 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 unreliablehttps://www.geeksforgeeks.org/java/disadvantages-of-java-language/

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 Google Guava 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

Java Community Process Java version history Outline of computer programming Outline of software Outline of software engineering List of Kotlin software and tools List of programmers

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

External links Oracle – Java OpenJDK – reference implementation and community Java.com – runtime download and general info

References