Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible.
The original and reference implementation Java compilers, virtual machines, and class libraries were released by Sun under proprietary licenses.
Oracle, which bought Sun in 2010, offers its own HotSpot Java Virtual Machine.
James Gosling, Mike Sheridan, and Patrick Naughton initiated the Java language project in June 1991.
[25] It promised write once, run anywhere (WORA) functionality, providing no-cost run-times on popular platforms.
[26] With the advent of Java 2 (released initially as J2SE 1.2 in December 1998 – 1999), new versions had multiple configurations built for different types of platforms.
In 1997, Sun Microsystems approached the ISO/IEC JTC 1 standards body and later the Ecma International to formalize Java, but it soon withdrew from the process.
On November 13, 2006, Sun released much of its Java virtual machine (JVM) as free and open-source software (FOSS), under the terms of the GPL-2.0-only license.
[34] In January 2016, Oracle announced that Java run-time environments based on JDK 9 will discontinue the browser plugin.
[35] Java software runs on most devices from laptops to data centers, game consoles to scientific supercomputers.
Other vendors such as Adoptium continue to offer free builds of OpenJDK's long-term support (LTS) versions.
Standard libraries provide a generic way to access host-specific features such as graphics, threading, and networking.
Once no references to an object remain, the unreachable memory becomes eligible to be freed automatically by the garbage collector.
It is guaranteed to be triggered if there is insufficient free memory on the heap to allocate a new object; this can cause a program to stall momentarily.
This allows the garbage collector to relocate referenced objects and ensures type safety and security.
The Javadoc style of commenting allows the user to run the Javadoc executable to create documentation for the program and can be read by some integrated development environments (IDEs) such as Eclipse to allow developers to access documentation within the IDE.
Most of the time, this means generating HTML pages in response to HTTP requests, although there are a number of other standard servlet classes available, for example for WebSocket communication.
Where prior implementations of these looks and feels may have been considered lacking, Swing in Java SE 6 addresses this problem by using more native GUI widget drawing routines of the underlying platforms.
[64] JavaFX has support for desktop computers and web browsers on Microsoft Windows, Linux, and macOS.
In addition to enabling more efficient code, certain runtime exceptions are prevented from occurring, by issuing compile-time errors.
This has led to increased adoption of higher-level abstractions like Spring Data JPA, which aims to simplify database operations and reduce boilerplate code.
The growing popularity of such frameworks suggests limitations in the standard JPA implementation's ease-of-use for modern Java development.
[73] The class library contains features such as: Javadoc is a comprehensive documentation system, created by Sun Microsystems.
[81] Oracle Corporation owns the official implementation of the Java SE platform, due to its acquisition of Sun Microsystems on January 27, 2010.
The implementation started when Sun began releasing the Java source code under the GPL.
Historically, Sun's trademark license for usage of the Java brand insists that all implementations be compatible.
This resulted in a legal dispute with Microsoft after Sun claimed that the Microsoft implementation did not support Java remote method invocation (RMI) or Java Native Interface (JNI) and had added platform-specific features of their own.
The Java language is a key pillar in Android, an open source mobile operating system.
[84] District Judge William Alsup ruled on May 31, 2012, that APIs cannot be copyrighted,[85] but this was reversed by the United States Court of Appeals for the Federal Circuit in May 2014.
[86] On May 26, 2016, the district court decided in favor of Google, ruling the copyright infringement of the Java API in Android constitutes fair use.