🌐
Oracle
docs.oracle.com › en › java › javase › 17 › install › version-string-format.html
Version-String Format
July 15, 2025 - Java SE platform has adopted time-based release model with the JDK being released every six months. As of JDK 10 and later, the format of the version string, which reflects the Java SE platform's time-based release model, is $FEATURE.$INTERIM.$UPDATE.$PATCH.
🌐
Oracle
oracle.com › java › technical details › java se
Consolidated JDK 17 Release Notes
April 21, 2026 - The full version string for this update release is 17.0.19+9 (where "+" means "build"). The version number is 17.0.19. This JDK conforms to version 17.1 of the Java SE Specification (JSR 392 MR 1 2024-07-02).
🌐
Oracle
docs.oracle.com › en › java › javase › 17 › docs › api › java.base › java › lang › Runtime.Version.html
Runtime.Version (Java SE 17 & JDK 17)
April 21, 2026 - As of Java SE 10, the second element of a version number is not the minor-release number but the interim-release counter, incremented for every interim release. ... Returns optional additional identifying build information. ... Parses the given string as a valid version string containing a version number followed by pre-release and build information.
🌐
Oracle
docs.oracle.com › en › java › javase › 17 › docs › › api › java.base › java › lang › module › ModuleDescriptor.Version.html
ModuleDescriptor.Version (Java SE 17 & JDK 17)
October 20, 2025 - A version string has three components: The version number itself, an optional pre-release version, and an optional build version. Each component is a sequence of tokens; each token is either a non-negative integer or a string.
🌐
Oracle
docs.oracle.com › en › java › javase › 17 › docs › api › java.base › java › lang › String.html
String (Java SE 17 & JDK 17)
April 21, 2026 - List<String> strings = List.of("Java", "is", "cool"); String message = String.join(" ", strings); // message returned is: "Java is cool" Set<String> strings = new LinkedHashSet<>(List.of("Java", "is", "very", "cool")); String message = String.join("-", strings); // message returned is: "Java-is-very-cool" Note that if an individual element is null, then "null" is added. ... delimiter - a sequence of characters that is used to separate each of the elements in the resulting String · elements - an Iterable that will have its elements joined together. ... Converts all of the characters in this String to lower case using the rules of the given Locale. Case mapping is based on the Unicode Standard version specified by the Character class.
🌐
Oracle
docs.oracle.com › javase › 9 › install › version-string-format.htm
2 Version-String Format
The format of the version-string is $MAJOR.$MINOR.$SECURITY.$PATCH. $MAJOR is the version number that is incremented for a major release, for example JDK 9, which contains significant new features as specified by the Java SE platform specification.
🌐
Oracle
oracle.com › java › technologies › javase › 17-0-18-relnotes.html
Java™ SE Development Kit 17, 17.0.18 Release Notes
January 20, 2026 - The full version string for this update release is 17.0.18+8 (where "+" means "build"). The version number is 17.0.18. This JDK conforms to version 17.1 of the Java SE Specification (JSR 392 MR 1 2024-07-02).
🌐
Ops
ops.java › releases
JDK Releases
April 21, 2026 - The Java version-string format has changed several times throughout the years.
Top answer
1 of 1
8

There are at most four components. They are "feature", "interim", "update" and "patch". From Oracle's docs:

Java SE platform has adopted time-based release model with the JDK being released every six months.

As of JDK 10 and later, the format of the version string, which reflects the Java SE platform's time-based release model, is $FEATURE.$INTERIM.$UPDATE.$PATCH.

  • $FEATURE is the version number that is incremented for every feature release. The feature release contains new features and changes to the existing features as specified by the Java SE platform specification. The version number is incremented every six months. For example, the version number for the March 2018 release is 10, the version number for the September 2018 release is 11, and so on.

  • $INTERIM is the version number that is incremented for every interim release, which contains bug fixes and enhancements. An interim release does not contain incompatible changes, feature removals, nor any changes to the standard APIs. The version number for the interim release is always zero (0) as the six-month release model does not include interim releases. However, this version number is reserved for future interim releases, if any.

  • $UPDATE is the version number that is incremented for an update release, which includes fixes for security issues, regressions, and bugs in new features. The version number is incremented one month after the $FEATURE release and every three months thereafter. For example, the full version string for the October update release is 17.0.1, the full version string for the January update release is 17.0.2, and so on.

  • $PATCH is the version number that is incremented for an emergency patch release to fix a critical issue.

The varying lengths of version numbers happen because trailing 0 elements are removed, as the docs go on to explain:

The version string doesn't have trailing zero elements. For example, if the value of $FEATURE is 17, the value of $INTERIM is 0, the value of $UPDATE is 1, and the value of $PATCH is 0, then the full version string is 17.0.1.

Prior to version 10, the version-string components were called "major", "minor", "security" and "patch" and had slightly different meaning:

The version-string scheme helps to easily distinguish major, minor, security, and patch update releases.

The format of the version-string is $MAJOR.$MINOR.$SECURITY.$PATCH.

  • $MAJOR is the version number that is incremented for a major release, for example JDK 9, which contains significant new features as specified by the Java SE platform specification. A major release contains new features and changes to existing features, which are planned and notified well in advance.

  • $MINOR is the version number that is incremented for each minor update, such as bug fixes, revisions to standard APIs, or implementation of features outside the scope of the relevant platform specifications. These specifications might be new JDK-specific APIs, additional service providers, new garbage collectors, and ports to new hardware architectures. For example, if an update is released for JDK 9, then the version-string (containing major and minor release numbers) is 9.1.

  • $SECURITY is the version number that is incremented for a security-update release, which contains critical fixes, including those necessary to improve security. For example, for a JDK 9 security-update release, the version format can be 9.1.2, where 2 is the value of security update.

  • $PATCH is the version number that is incremented for a release containing security and high-priority customer fixes, which have been tested together. For example, if JDK 9 has Minor version 1, Security release 1, and Patch update 1, then the version-string format will be 9.1.1.1.

The $PATCH version number is reset to zero when $SECURITY, $MINOR, or $MAJOR version numbers are incremented.

When the $MAJOR version number is incremented, the subsequent version numbers of $MINOR and $SECURITY elements are set to zero. However, when the $MINOR version number is incremented, the subsequent $SECURITY version number need not be set to zero. Regardless of the $MINOR version number, the higher security release value indicates a more secure release.

Find elsewhere
🌐
DEV Community
dev.to › msmittalas › new-way-to-use-strings-in-java-17-2i1l
New way to Use Strings in Java 17 - DEV Community
June 10, 2022 - Before Java 15, Writing SQL, HTML, JSON or any Polyglot scripts in String were difficult. It was ugly and difficult to read. For example : Following HTML in Java : ... With "JEP 378: Text Blocks" introduced in Java 15 ( Java 17 LTS), We can use two dimensional block of text.
🌐
Java Concept Of The Day
javaconceptoftheday.com › home › java new string methods – from java 8 to java 17
Java New String Methods - From Java 8 To Java 17
February 26, 2022 - From time to time, new methods are added to String class so that working with strings becomes effortless and simple. join() in Java 8, chars() and codePoints() in Java 9, isBlank(), lines(), repeat(), strip(), stripLeading() and stripTrailing() in Java 11, indent(), transform(), describeConstable() and resolveConstantDesc() in Java 12, formatted(), stripIndent() and translateEscapes() in Java 15 are some new Java string methods. In this post, we will see all the new methods added to String class from Java 8 to Java 17. Only one method is introduced to String class in Java 8 i.e. join(). ... This method is used to join the string elements separated by a delimiter. It has two versions.
🌐
Oracle
oracle.com › java › technical details › java se
JDK 17 Release Notes, Important Changes, and Information
See CSRs Approved for JDK 17 for the list of CSRs closed in JDK 17 and the Compatibility & Specification Review (CSR) page on the OpenJDK wiki for general information about compatibility. The full version string for this release is build 17+35 (where "+" means "build").
🌐
Oracle
oracle.com › java › technologies › javase › 17-0-4-relnotes.html
Java™ SE Development Kit 17, 17.0.4 Release Notes
The following sections summarize ... BPRs are also included in the current BPR. ... The full version string for this update release is 17.0.4+11 (where "+" means "build")....
🌐
Oracle
oracle.com › java › technologies › javase › 17-0-19-relnotes.html
Java™ SE Development Kit 17, 17.0.19 Release Notes
April 21, 2026 - The full version string for this update release is 17.0.19+9 (where "+" means "build"). The version number is 17.0.19. This JDK conforms to version 17.1 of the Java SE Specification (JSR 392 MR 1 2024-07-02).
🌐
Baeldung
baeldung.com › home › java › core java › new features in java 17
New Features in Java 17 | Baeldung
January 16, 2024 - As mentioned before, the new process targets the next LTS version to be version 21, and the plan is to release it by September 2023. In this article, we looked at the news about the new Java 17 version, going through its recent developments, ...
🌐
Oracle
oracle.com › java › technologies › javase › 17-0-17-relnotes.html
Java™ SE Development Kit 17, 17.0.17 Release Notes
October 21, 2025 - The BPR releases are listed below in date order, most current BPR first. Note that bug fixes in previous BPRs are also included in the current BPR. ... Fixes from the prior BPR are included in this version. ... The full version string for this update release is 17.0.17+8 (where "+" means "build").
🌐
Oracle
oracle.com › java › technologies › javase › 17-0-14-relnotes.html
Java™ SE Development Kit 17, 17.0.14 Release Notes
January 21, 2025 - The BPR releases are listed below in date order, most current BPR first. Note that bug fixes in previous BPRs are also included in the current BPR. ... Fixes from the prior BPR are included in this version. ... The full version string for this update release is 17.0.14+8 (where "+" means "build").
🌐
Oracle
oracle.com › java › technologies › javase › 17-0-9-relnotes.html
Java™ SE Development Kit 17, 17.0.9 Release Notes
security-libs/java.security ➜ ... bytes (8 MB) to 16000000 bytes (16 MB). ... The full version string for this update release is 17.0.9+11 (where "+" means "build")....
🌐
Oracle
oracle.com › java › technologies › javase › 17-0-13-relnotes.html
Java™ SE Development Kit 17, 17.0.13 Release Notes
This has now changed so that it ... before trying to use any vmBuf entries. ... The full version string for this update release is 17.0.13+10 (where "+" means "build")....