Java is a high-level, class-based, object-oriented programming language and a runtime platform designed with portability and safety in mind. First introduced by Sun Microsystems, it emphasizes the write-once, run-anywhere principle: source code is compiled to an intermediate bytecode that executes on a Java Virtual Machine (JVM) rather than being compiled directly to a platform-specific machine language. This abstraction enables the same Java programs to run on many operating systems and processor architectures with a compatible JVM.

Key characteristics

Java's design goals include simplicity, strong typing, automatic memory management, and a rich standard library. Important characteristics are:

  • Object orientation: Java models data and behavior as objects and classes, providing encapsulation, inheritance and polymorphism.
  • Portability: Java compiles to bytecode, not native machine code, and the JVM interprets or just-in-time compiles that bytecode on each platform.
  • Automatic memory management: A garbage collector reclaims unused memory, reducing a class of errors common in manual memory management languages.
  • Robust standard library: Extensive APIs for collections, I/O, networking, concurrency, security and graphical user interfaces.

History and development

Development began in the early 1990s under the name Oak; the language was later renamed Java and publicly released by Sun Microsystems. Sun was subsequently acquired by Oracle Corporation, which maintains the official reference implementation and stewarding of the Java platform. Over time Java has evolved through both short-term feature releases and designated long-term support (LTS) releases that organizations rely on for stability.

Versions, distribution and implementations

Oracle provides one distribution of the Java Development Kit (JDK) and JVM, but a number of open-source and commercial builds coexist. Community projects and vendors produce alternative distributions and long-term support schedules. Tooling around Java includes compilers that emit bytecode, build systems and package managers, and multiple implementations of the JVM optimized for different workloads.

Common uses and ecosystem

Java is widely used in server-side applications, enterprise systems, desktop software, large-scale data processing, embedded devices and Android app development. The language's maturity has produced a broad ecosystem of frameworks, libraries and application servers that support web services, microservices, distributed systems and high-performance backend systems.

Relationships and comparisons

Java's syntax and some idioms will be familiar to programmers experienced in languages such as C, C++ and C#, but Java's runtime model and memory management differ in important ways. It is strictly typed and uses automatic garbage collection, which contrasts with manual memory management in C and C++. Java emphasizes backward compatibility so that older programs often run on newer JVMs with little or no change.

Further reading and resources

For official documentation, tutorials and downloads consult an authoritative source such as Java documentation or the original vendor pages like Sun Microsystems and Oracle. To read about object-oriented principles and design, see materials linked from object-oriented programming and explanations of objects in programming. Comparisons and language relatives include discussions of C, C++ and C#. Information about platform support and operating systems can be found via OS compatibility references; Java's role in mobile development and Android is discussed on pages such as Android and mobile platform analyses like mobile OS market. Technical details about compiling Java to bytecode and the distinction from native machine code are documented in resources about the Java compiler and native code generation versus machine code.