Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Java (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== History == {{See also|Java (software platform)#History}} [[File:Duke (Java mascot) waving.svg|thumb|upright=0.5|Duke, the Java mascot]] [[File:James Gosling 2008.jpg|thumb|[[James Gosling]], the creator of Java, in 2008]] [[James Gosling]], Mike Sheridan, and [[Patrick Naughton]] initiated the Java language project in June 1991.<ref>{{cite web |title=Java technology: The early years |last=Byous |first=Jon |date=c. 1998 |work=Sun Developer Network |publisher=[[Sun Microsystems]] |url=https://java.sun.com/features/1998/05/birthday.html |access-date=2005-04-22 |url-status=dead |archive-url=https://web.archive.org/web/20050420081440/http://java.sun.com/features/1998/05/birthday.html |archive-date=April 20, 2005}}</ref> Java was originally designed for interactive television, but it was too advanced for the digital cable television industry at the time.<ref>Object-oriented programming {{cite web |title=The History of Java Technology |date=c. 1995 |work=Sun Developer Network |url=http://www.java.com/en/javahistory/ |access-date=2010-04-30 |url-status=dead |archive-url=https://web.archive.org/web/20100210225651/http://www.java.com/en/javahistory/ |archive-date=February 10, 2010}}</ref> The language was initially called ''[[Oak (programming language)|Oak]]'' after an [[oak]] tree that stood outside Gosling's office. Later the project went by the name ''Green'' and was finally renamed ''Java'', from [[Java coffee]], a type of coffee from [[Indonesia]].<ref>{{cite web |last1=Murphy |first1=Kieron |date=1996-10-04 |url=https://www.infoworld.com/article/2077265/so-why-did-they-decide-to-call-it-java-.html |title=So why did they decide to call it Java? |work=[[JavaWorld]] |access-date=2020-07-13 |archive-date=July 13, 2020 |archive-url=https://web.archive.org/web/20200713234202/https://www.infoworld.com/article/2077265/so-why-did-they-decide-to-call-it-java-.html |url-status=live}}</ref> Gosling designed Java with a [[C (programming language)|C]]/[[C++]]-style syntax that system and application programmers would find familiar.<ref>Kabutz, Heinz; [http://www.artima.com/weblogs/viewpost.jsp?thread=7555 ''Once Upon an Oak''] {{Webarchive|url=https://web.archive.org/web/20070413072630/http://www.artima.com/weblogs/viewpost.jsp?thread=7555 |date=April 13, 2007}}. Artima. Retrieved April 29, 2007.</ref> Sun Microsystems released the first public implementation as Java 1.0 in 1996.<ref name="oraclejavahistory">{{cite web |url=http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml |archive-url=https://web.archive.org/web/20070310235103/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml |url-status=dead |archive-date=2007-03-10 |title=JAVASOFT SHIPS JAVA 1.0 |access-date=2018-05-13}}</ref> It promised [[write once, run anywhere]] (WORA) functionality, providing no-cost run-times on popular [[Computing platform|platforms]]. Fairly secure and featuring configurable security, it allowed network- and file-access restrictions. Major [[web browser]]s soon incorporated the ability to run [[Java applet]]s within web pages, and Java quickly became popular. The Java 1.0 compiler was re-written [[Bootstrapping (compilers)|in Java]] by [[Arthur van Hoff]] to comply strictly with the Java 1.0 language specification.<ref>{{cite book |url={{Google books|rXGMFYXFDwMC|plainurl=yes}} |title=Object-oriented Programming with Java: Essentials and Applications |publisher=Tata McGraw-Hill Education |page=34}}</ref> With the advent of Java 2 (released initially as J2SE 1.2 in December 1998{{snd}} 1999), new versions had multiple configurations built for different types of platforms. [[Java 2 Enterprise Edition|J2EE]] included technologies and APIs for enterprise applications typically run in server environments, while J2ME featured APIs optimized for mobile applications. The desktop version was renamed J2SE. In 2006, for marketing purposes, Sun renamed new J2 versions as ''[[Java Platform, Enterprise Edition|Java EE]]'', ''[[Java Platform, Micro Edition|Java ME]]'', and ''[[Java Platform, Standard Edition|Java SE]]'', respectively. 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.<ref>{{cite web|url=http://www.open-std.org/JTC1/SC22/JSG/|title=JSG – Java Study Group|work=open-std.org|access-date=August 2, 2006|archive-url=https://web.archive.org/web/20060825082008/http://www.open-std.org/JTC1/SC22/JSG/|archive-date=August 25, 2006|url-status=live}}</ref><ref>{{cite web |title=Why Java Was – Not – Standardized Twice |url=http://www.computer.org/csdl/proceedings/hicss/2001/0981/05/09815015.pdf |access-date=June 3, 2018 |archive-url=https://web.archive.org/web/20140113101235/http://www.computer.org/csdl/proceedings/hicss/2001/0981/05/09815015.pdf |archive-date=January 13, 2014 |url-status=live}}</ref><ref>{{cite web |url=http://www.zdnet.com/news/what-is-ecma-and-why-microsoft-cares/298821 |title=What is ECMA—and why Microsoft cares |website=[[ZDNet]] |access-date=May 6, 2014 |archive-url=https://web.archive.org/web/20140506215226/http://www.zdnet.com/news/what-is-ecma-and-why-microsoft-cares/298821 |archive-date=May 6, 2014 |url-status=live}}</ref> Java remains a [[de facto standard|''de facto'' standard]], controlled through the [[Java Community Process]].<ref>{{cite web |url=http://www.jcp.org/en/home/index |title=Java Community Process website |publisher=Jcp.org |date=May 24, 2010 |access-date=2010-06-09 |archive-url=https://web.archive.org/web/20060808070528/http://www.jcp.org/en/home/index |archive-date=August 8, 2006 |url-status=live}}</ref> At one time, Sun made most of its Java implementations available without charge, despite their [[proprietary software]] status. Sun generated revenue from Java through the selling of licenses for specialized products such as the Java Enterprise System. 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 [[GNU General Public License|GPL-2.0-only]] license. On May 8, 2007, Sun finished the process, making all of its JVM's core code available under [[free software]]/open-source distribution terms, aside from a small portion of code to which Sun did not hold the copyright.<ref>{{cite web |url=http://grnlight.net/index.php/programming-articles/115-javaone-sun-the-bulk-of-java-is-open-sourced |title=JAVAONE: Sun – The bulk of Java is open sourced |publisher=GrnLight.net |access-date=2014-05-26 |archive-url=https://web.archive.org/web/20140527220942/http://grnlight.net/index.php/programming-articles/115-javaone-sun-the-bulk-of-java-is-open-sourced |archive-date=May 27, 2014 |url-status=usurped}}</ref> Sun's vice-president Rich Green said that Sun's ideal role with regard to Java was as an ''evangelist''.<ref>{{cite web|url=http://onjava.com/pub/a/onjava/2002/04/17/evangelism.html|title=Sun's Evolving Role as Java Evangelist|publisher=[[O'Reilly Media]]|archive-url=https://web.archive.org/web/20100915162748/http://onjava.com/pub/a/onjava/2002/04/17/evangelism.html|archive-date=September 15, 2010|url-status=live|access-date=August 2, 2009 }}</ref> Following [[Oracle Corporation]]'s acquisition of Sun Microsystems in 2009–10, Oracle has described itself as the steward of Java technology with a relentless commitment to fostering a community of participation and transparency.<ref>{{cite web |url=https://www.oracle.com/us/technologies/java/|title=Oracle and Java|work=oracle.com|publisher=Oracle Corporation |access-date=2010-08-23|quote=Oracle has been a leading and substantive supporter of Java since its emergence in 1995 and takes on the new role as steward of Java technology with a relentless commitment to fostering a community of participation and transparency. |url-status=dead|archive-url=https://web.archive.org/web/20100131091008/http://www.oracle.com/us/technologies/java/ |archive-date=January 31, 2010}}</ref> This did not prevent Oracle from filing a lawsuit against Google shortly after that for using Java inside the [[Android SDK]] (see the ''[[#Android|Android]]'' section). On April 2, 2010, James Gosling resigned from [[Oracle Corporation|Oracle]].<ref>{{cite web|url=http://nighthacks.com/roller/jag/entry/time_to_move_on |title=Time to move on... |last=Gosling |first=James |date=April 9, 2010 |work=On a New Road |access-date=2011-11-16 |author-link=James Gosling |url-status=dead |archive-url=https://web.archive.org/web/20101105031239/http://nighthacks.com/roller/jag/entry/time_to_move_on |archive-date=November 5, 2010}}</ref> In January 2016, Oracle announced that Java run-time environments based on JDK 9 will discontinue the browser plugin.<ref>{{cite web|url=https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free|title=Moving to a Plugin-Free Web|first=Dalibor|last=Topic|access-date=March 15, 2016|archive-url=https://web.archive.org/web/20160316164325/https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free|archive-date=March 16, 2016|url-status=live}}</ref> Java software runs on most devices from laptops to [[data center]]s, [[Video game console|game consoles]] to scientific [[supercomputer]]s.<ref>{{cite web|title=Learn About Java Technology|url=http://www.java.com/en/about/|publisher=Oracle|access-date=November 21, 2011|archive-url=https://web.archive.org/web/20111124090716/http://www.java.com/en/about/|archive-date=November 24, 2011|url-status=live}}</ref> [[Oracle Corporation|Oracle]] (and others) highly recommend uninstalling outdated and unsupported versions of Java, due to unresolved security issues in older versions.<ref>{{Cite web|url=https://www.java.com/en/download/faq/remove_olderversions.xml|title=Why should I uninstall older versions of Java from my system?|publisher=Oracle|access-date=2021-09-24|archive-date=February 12, 2018|archive-url=https://web.archive.org/web/20180212011608/https://java.com/en/download/faq/remove_olderversions.xml|url-status=live}}</ref> === Principles === There were five primary goals in creating the Java language:<ref name="design_goals" /> <!-- these are quoted directly from the source, please do not remove or change any of them! --> # It must be simple, [[object-oriented programming|object-oriented]], and familiar. # It must be [[Robustness (computer science)|robust]] and secure. # It must be architecture-neutral and portable. # It must execute with high performance. # It must be [[Interpreter (computing)|interpreted]], [[thread (computing)|threaded]], and [[Dynamic programming language|dynamic]]. === Versions === {{Main|Java version history}} {{As of|2024|11}}, Java 8, 11, 17, and 21 are supported as [[long-term support]] (LTS) versions, with Java 25, releasing in September 2025, as the next scheduled LTS version.<ref>{{cite web |title=Oracle Java SE Support Roadmap |publisher=Oracle |date=September 13, 2021 |url=https://www.oracle.com/java/technologies/java-se-support-roadmap.html|access-date=September 18, 2021|archive-url=https://web.archive.org/web/20210919090451/https://www.oracle.com/java/technologies/java-se-support-roadmap.html |archive-date=2021-09-19|url-status=live}}</ref> Oracle released the last zero-cost public update for the [[legacy system|legacy]] version [[Java 8]] LTS in January 2019 for commercial use, although it will otherwise still support Java 8 with public updates for personal use indefinitely. Other vendors such as [[Adoptium]] continue to offer free builds of OpenJDK's long-term support (LTS) versions. These builds may include additional security patches and bug fixes.<ref>{{cite web |title=Temurin™ Support; Adoptium |url=https://adoptium.net/support/ |website=adoptium.net |access-date=29 March 2024 |archive-url=https://web.archive.org/web/20240329061257/https://adoptium.net/support/ |archive-date=29 March 2024 |url-status=live}}</ref> Major release versions of Java, along with their release dates: {| class="wikitable" ! Version !! Date |- | JDK [[beta version|Beta]] || 1995 |- | JDK 1.0 || January 23, 1996<ref>{{cite web|url=http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml |title=JAVASOFT SHIPS JAVA 1.0|website=sun.com |access-date=2008-02-05 |url-status=dead |archive-url=https://web.archive.org/web/20070310235103/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml |archive-date=March 10, 2007}}</ref> |- | JDK 1.1 || February 19, 1997 |- | J2SE 1.2 || December 8, 1998 |- | J2SE 1.3 || May 8, 2000 |- | J2SE 1.4 || February 6, 2002 |- | J2SE 5.0 || September 30, 2004 |- | Java SE 6 || December 11, 2006 |- | Java SE 7 || July 28, 2011 |- | Java SE 8 (LTS) || March 18, 2014 |- | Java SE 9 || September 21, 2017 |- | Java SE 10 || March 20, 2018 |- | Java SE 11 (LTS) || September 25, 2018<ref>{{cite news|url=https://blogs.oracle.com/java-platform-group/introducing-java-se-11|title=Introducing Java SE 11|first=Sharat|last=Chander|website=oracle.com|access-date=September 26, 2018|archive-url=https://web.archive.org/web/20180926093144/https://blogs.oracle.com/java-platform-group/introducing-java-se-11|archive-date=September 26, 2018|url-status=live}}</ref> |- | Java SE 12 || March 19, 2019 |- | Java SE 13 || September 17, 2019 |- | Java SE 14 || March 17, 2020 |- | Java SE 15 || September 15, 2020<ref>{{cite news|url=https://blogs.oracle.com/java-platform-group/the-arrival-of-java-15|title=The Arrival of Java 15!|date=September 15, 2020|publisher=[[Oracle Corporation|Oracle]]|access-date=2020-09-15|archive-date=September 16, 2020|archive-url=https://web.archive.org/web/20200916092332/https://blogs.oracle.com/java-platform-group/the-arrival-of-java-15|url-status=live |last1=Chander |first1=Sharat }}</ref> |- | Java SE 16 || March 16, 2021 |- | Java SE 17 (LTS) || September 14, 2021 |- | Java SE 18 || March 22, 2022 |- | Java SE 19 || September 20, 2022 |- | Java SE 20 || March 21, 2023 |- | Java SE 21 (LTS) || September 19, 2023<ref>{{Cite web|url=https://openjdk.org/projects/jdk/21/|title=JDK 21|website=openjdk.org|access-date=September 20, 2023|archive-date=September 20, 2023|archive-url=https://web.archive.org/web/20230920173515/https://openjdk.org/projects/jdk/21/|url-status=live}}</ref> |- | Java SE 22 || March 19, 2024 |- | Java SE 23 || September 17, 2024 |- | Java SE 24 || 18 March 2025<ref name="jdk24">{{cite web | url=https://openjdk.org/projects/jdk/24/ | title=JDK 24 }}</ref> |}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)