Content deleted Content added
Xose.vazquez (talk | contribs) No edit summary |
→Java SE 25 (LTS): add JEPs and add to infobox, add release date |
||
(16 intermediate revisions by 9 users not shown) | |||
Line 2:
{{About|the Java programming language||History of Java (disambiguation){{!}}History of Java}}
The [[Java (programming language)|Java language]] has undergone several changes since [[Java Development Kit|JDK]] 1.0 as well as numerous additions of [[class (computer science)|classes]] and packages to the standard [[library (computer science)|library]]. Since J2SE 1.4, the evolution of the Java language has been governed by the [[Java Community Process]] (JCP), which uses ''Java Specification Requests'' (JSRs) to propose and specify additions and changes to the [[Java (software platform)|Java platform]]. The language is specified by the ''Java Language Specification'' (JLS); changes to the JLS are managed under [http://www.jcp.org/en/jsr/detail?id=901 JSR 901]. In September 2017, Mark Reinhold, chief
In addition to the language changes, other changes have been made to the [[Java Class Library]] over the years, which has grown from a few hundred classes in JDK 1.0 to over three thousand in J2SE 5. Entire new [[API]]s, such as [[Swing (Java)|Swing]] and [[Java2D]], have been introduced, and many of the original JDK 1.0 classes and methods have been [[deprecation|deprecated]], and very few APIs have been removed (at least one, for threading, in Java 22<ref name="removed_API_in Java_22"/>). Some programs allow the conversion of Java programs from one version of the [[Java (software platform)|Java platform]] to an older one (for example Java 5.0 backported to 1.4) (see [[Java backporting tools]]).
Regarding Oracle's [[Java Platform, Standard Edition|Java SE]] support roadmap,<ref name=oracle/> Java SE
|last=Smith| first=Donald|date=}}</ref>
In the case of [[OpenJDK]], both commercial long-term support and [[free software]] updates are available from multiple organizations in the broader [[OpenJDK#OpenJDK builds|community]].<ref name="OracleJava11LTS">{{cite web| title=What does LTS mean for OpenJDK? | last=Reinhold | first=Mark | url=https://mail.openjdk.java.net/pipermail/jdk-dev/2018-August/001824.html | date=2018-08-17 | access-date=2018-08-28}}</ref>
Java 23 was released on 17 September 2024. Java 24 was released on 18 March 2025.<ref>{{cite web | url=https://jdk.java.net/24/ | title=OpenJDK JDK 24.0.1 GA Release }}</ref>
== Release table ==
Line 23:
The first version was released on January 23, 1996.<ref name="pr10">{{cite press release|url=http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml |title=JavaSoft ships Java 1.0 |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><ref name=JavaHistory>{{cite book |last1=Ortiz |first1=C. Enrique |last2=Giguère |first2=Éric |title=Mobile Information Device Profile for Java 2 Micro Edition: Developer's Guide |year=2001 |publisher=[[John Wiley & Sons]] |isbn=978-0-471-03465-0 |url=https://archive.org/details/mobileinformatio0000orti |access-date=May 30, 2012 |url-access=registration }}</ref> The first stable version, JDK 1.0.2, is called Java 1.<ref name=JavaHistory/>
{{-}}
It included:
* core language features (basic java types in java.lang, and utility classes in java.util)
* support for graphics ([[Abstract_Window_Toolkit|AWT]] framework)
* support for creating a [[Java applet]]
* libraries for [[Input/output|I/O]] and [[Computer_network|networking]]
== JDK 1.1 ==
Line 33 ⟶ 40:
* [[inner class]]es added to the language
* [[JavaBeans]]
* [[Java Database Connectivity]] (JDBC) and support for [[sql]]
* [[Java remote method invocation]] (RMI) and [[serialization]]
* [[Reflective programming|reflection]] which supported Introspection only, no modification at runtime was possible. (The ability to modify objects reflectively was added in J2SE 1.2, by introducing the {{Javadoc|module=java.base|package=java.lang.reflect|class=AccessibleObject|text=AccessibleObject}} class and its subclasses such as the {{Javadoc|module=java.base|package=java.lang.reflect|class=Field|text=Field}} class.)
Line 136 ⟶ 143:
=== Versioning change ===
This version introduced a new versioning system for the Java language, although the old versioning system continued to be used for developer libraries:
{{
This correspondence continued through later releases (Java 6 = JDK 1.6, Java 7 = JDK 1.7, and so on).
Line 226 ⟶ 233:
|-
| Java SE 6 Update 14{{citation needed|date=June 2023}}|| 2009-05-28
|| HotSpot VM 14. This release includes extensive performance updates to the JIT compiler, compressed pointers for 64-bit machines, as well as ''experimental'' support for the [[Garbage-first collector|Garbage-First (G1)]]
The <code>-XX:+DoEscapeAnalysis</code> option directs the HotSpot [[JIT compiler]] to use [[escape analysis]] to determine whether local objects can be allocated on the [[Stack-based memory allocation|stack]] instead of the [[Dynamic memory allocation|heap]].{{citation needed|date=June 2023}}
Line 387 ⟶ 394:
| Java SE 7 Update 3{{citation needed|date=June 2023}}|| style="white-space:nowrap" |2012-02-14 || 14 security fixes<ref>{{Cite web|url=https://www.oracle.com/security-alerts/javacpufeb2012.html|title=Oracle Java SE Critical Patch Update Advisory – February 2012|website=oracle.com}}</ref>
|-
| Java SE 7 Update 4{{citation needed|date=June 2023}}|| 2012-04-26 || No security updates; HotSpot VM 23; JDK Support for Mac OS X; New Supported [[Garbage collection (computer science)|Garbage Collector]]: [[Garbage-first collector|Garbage-First (G1)]]
|-
| Java SE 7 Update 5{{citation needed|date=June 2023}}|| 2012-06-12 || 14 security fixes<ref>{{Cite web|url=https://www.oracle.com/security-alerts/javacpujun2012.html|title=Oracle Java SE Critical Patch Update Advisory – June 2012|website=oracle.com}}</ref>
Line 579 ⟶ 586:
|jeps = 8
}}
Java 8 was released on
Work on features was organized in terms of [[JDK Enhancement Proposal]]s (JEPs).<ref>{{cite web |url=https://jcp.org/en/jsr/detail?id=337 |title=JSR 337|access-date=2014-01-30}}</ref>
Line 869 ⟶ 876:
|Java SE 8 Update 441<ref>{{Cite web |title=Java SE Development Kit 8, Update 441 Release Notes |url=https://www.oracle.com/java/technologies/javase/8u441-relnotes.html |website=oracle.com}}</ref>
|2025-01-21
|
|-
|Java SE 8 Update 451<ref>{{Cite web |title=Java SE Development Kit 8, Update 451 Release Notes |url=https://www.oracle.com/java/technologies/javase/8u451-relnotes.html |website=oracle.com}}</ref>
|2025-04-15
|
|-
|Java SE 8 Update 461<ref>{{Cite web |title=Java SE Development Kit 8, Update 461 Release Notes |url=https://www.oracle.com/java/technologies/javase/8u461-relnotes.html |website=oracle.com}}</ref>
|2025-07-15
|
|-
Line 1,733 ⟶ 1,748:
* {{Java JEP|376|ZGC: Concurrent Thread-Stack Processing}}
* {{Java JEP|380|Unix-Domain Socket Channels}}
* {{Java JEP|386|Alpine Linux Port}}
* {{Java JEP|387|Elastic Metaspace}}
* {{Java JEP|388|Windows/AArch64 Port}}
Line 1,992 ⟶ 2,007:
'''''Bug fixes'''''
* 46 bug fixes<ref>{{Cite web|date=2024-01-16|title=JDK 17.0.10 Bug Fixes|url=https://www.oracle.com/java/technologies/javase/17-0-10-relnotes.html#bugfixes-R17_0_10|website=oracle.com}}</ref>
|-
| Java SE 17.0.11<ref>{{cite web|url=https://www.oracle.com/java/technologies/javase/17-0-11-relnotes.html|title=JDK 17.0.11 Release Notes|publisher=oracle.com|date=2024-04-16}}</ref>
| 2024-04-16
|
|-
| Java SE 17.0.12<ref>{{cite web|url=https://www.oracle.com/java/technologies/javase/17-0-12-relnotes.html|title=JDK 17.0.12 Release Notes|publisher=oracle.com|date=2024-07-16}}</ref>
| 2024-07-16
|
|-
| Java SE 17.0.13<ref>{{cite web|url=https://www.oracle.com/java/technologies/javase/17-0-13-relnotes.html|title=JDK 17.0.13 Release Notes|publisher=oracle.com|date=2024-10-15}}</ref>
| 2024-10-15
|
|-
| Java SE 17.0.14<ref>{{cite web|url=https://www.oracle.com/java/technologies/javase/17-0-14-relnotes.html|title=JDK 17.0.14 Release Notes|publisher=oracle.com|date=2025-01-21}}</ref>
| 2025-01-21
|
|-
| Java SE 17.0.15<ref>{{cite web|url=https://www.oracle.com/java/technologies/javase/17-0-15-relnotes.html|title=JDK 17.0.15 Release Notes|publisher=oracle.com|date=2025-04-15}}</ref>
| 2025-04-15
|
|}
Line 2,288 ⟶ 2,324:
'''''Bug fixes'''''
* 27 bug fixes<ref>{{Cite web|date=2024-04-16|title=JDK 21.0.3 Bug Fixes|url=https://www.oracle.com/java/technologies/javase/21-0-3-relnotes.html#bugfixes-R21_0_3|website=oracle.com}}</ref>
|-
|Java SE 21.0.4<ref>{{Cite web|date=2024-07-16|title=JDK 21.0.4 Release Notes|url=https://www.oracle.com/java/technologies/javase/21-0-4-relnotes.html|website=oracle.com}}</ref>
|2024-07-16
|
|-
|Java SE 21.0.5<ref>{{Cite web|date=2024-10-15|title=JDK 21.0.5 Release Notes|url=https://www.oracle.com/java/technologies/javase/21-0-5-relnotes.html|website=oracle.com}}</ref>
|2024-10-15
|
|-
|Java SE 21.0.6<ref>{{Cite web|date=2025-01-21|title=JDK 21.0.6 Release Notes|url=https://www.oracle.com/java/technologies/javase/21-0-6-relnotes.html|website=oracle.com}}</ref>
|2025-01-21
|
|-
|Java SE 21.0.7<ref>{{Cite web|date=2025-04-15|title=JDK 21.0.7 Release Notes|url=https://www.oracle.com/java/technologies/javase/21-0-7-relnotes.html|website=oracle.com}}</ref>
|2025-04-15
|
|}
Line 2,400 ⟶ 2,452:
| version name = Java SE 25
| lts = yes
| released = {{Start date and age|2025|9|16|df=y|br=yes|paren=yes}}
| jeps =
| features = {{Ubl|
* Module Import Declarations
* Flexible Constructor Bodies
}}
| removed = {{Ubl|
* 32-bit x86 Port
}}
| previews = {{Ubl |
* Primitive Types in Patterns, instanceof, and switch
* PEM Encodings of Cryptographic Objects
}}
| unreleased = yes
}}
# {{Java JEP|470|PEM Encodings of Cryptographic Objects (Preview)}}
# {{Java JEP|502|Stable Values (Preview)}}
# {{Java JEP|503|Remove the 32-bit x86 Port}}
# {{Java JEP|505|Structured Concurrency (Fifth Preview)}}
# {{Java JEP|506|Scoped Values}}
# {{Java JEP|507|Primitive Types in Patterns, instanceof, and switch (Third Preview)}}
# {{Java JEP|508|Vector API (Tenth Incubator)}}
# {{Java JEP|509|JFR CPU-Time Profiling (Experimental)}}
# {{Java JEP|510|Key Derivation Function API}}
# {{Java JEP|511|Module Import Declarations}}
# {{Java JEP|512|Compact Source Files and Instance Main Methods}}
# {{Java JEP|513|Flexible Constructor Bodies}}
# {{Java JEP|514|Ahead-of-Time Command-Line Ergonomics}}
# {{Java JEP|515|Ahead-of-Time Method Profiling}}
# {{Java JEP|518|JFR Cooperative Sampling}}
# {{Java JEP|519|Compact Object Headers}}
# {{Java JEP|520|JFR Method Timing & Tracing}}
# {{Java JEP|521|Generational Shenandoah}}
{{Clear}}
Line 2,433 ⟶ 2,515:
Both [[Jikes]] and [[Jikes RVM]] are open-source research projects that IBM developed.
Several other implementations exist that started as proprietary software, but are now open source. IBM initially developed [[OpenJ9]] as the proprietary J9,<ref>{{Cite web|url=https://developer.ibm.com/javasdk/downloads/|title=Downloads – Overview|date=July 18, 2016}}</ref> but has since relicensed the project and donated it to the [[Eclipse Foundation]]. [[JRockit]] is a proprietary implementation that was acquired by Oracle and incorporated into subsequent OpenJDK versions.
== References ==
{{reflist|refs=
<ref name=
<ref name=semeru>{{Cite web|url=https://www.ibm.com/support/pages/semeru-runtimes-support|title=IBM Semeru Runtimes lifecycle}}</ref>
<ref name=azul>{{Cite web|url=https://www.azul.com/products/azul-support-roadmap|title=Azul JDK roadmap}}</ref>
<ref name=corretto>{{Cite web|url=https://aws.amazon.com/corretto/faqs|title = Amazon Corretto support calendar}}</ref>
<ref name=redhat>{{Cite web|url=https://access.redhat.com/articles/1299013|title = Red Hat OpenJDK Life Cycle and Support Policy| date=19 November 2023 }}</ref>
|