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?

History of Java

General Java concepts

See also: Java Language fundamentals on Wikibooks and Java syntax

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 controversiesSun 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

Notable projects using Java

Java open-source development communities

Example source code

  • Articles with example Java code

Java publications

Books about Java

Java programmers

Java dialects and related languages

See also

Outlines of other programming languages

External links