Skip to content

Commit 0d2cd7d

Browse files
authored
Merge pull request #4534 from OpenLiberty/25.0.0.10-beta-post
Update 25.0.0.10-beta-post into draft
2 parents cf008c7 + 85619e3 commit 0d2cd7d

File tree

2 files changed

+20
-27
lines changed

2 files changed

+20
-27
lines changed

blog_tags.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"blog_tags": [
33
{
44
"name": "announcements",
5-
"posts": ["25.0.0.9", "25.0.0.9-beta",
5+
"posts": ["25.0.0.10-beta", "25.0.0.9", "25.0.0.9-beta",
66
"25.0.0.8", "25.0.0.7",
77
"25.0.0.7-beta", "25.0.0.6",
88
"25.0.0.6-beta", "25.0.0.5",
@@ -169,7 +169,7 @@
169169
},
170170
{
171171
"name": "java-se",
172-
"posts": ["25.0.0.6", "25.0.0.6-beta", "25.0.0.4",
172+
"posts": ["25.0.0.10-beta", "25.0.0.6", "25.0.0.6-beta", "25.0.0.4",
173173
"25.0.0.4-beta", "24.0.0.10",
174174
"24.0.0.10-beta", "24.0.0.4",
175175
"24.0.0.4-beta", "24.0.0.3",
@@ -188,7 +188,7 @@
188188
},
189189
{
190190
"name": "release",
191-
"posts": ["25.0.0.9", "25.0.0.9-beta",
191+
"posts": ["25.0.0.10-beta","25.0.0.9", "25.0.0.9-beta",
192192
"25.0.0.8", "25.0.0.7",
193193
"25.0.0.7-beta", "25.0.0.6",
194194
"25.0.0.6-beta", "25.0.0.5",
@@ -261,7 +261,8 @@
261261
},
262262
{
263263
"name": "beta",
264-
"posts": ["25.0.0.9-beta", "25.0.0.7-beta", "25.0.0.6-beta",
264+
"posts": ["25.0.0.10-beta","25.0.0.9-beta",
265+
"25.0.0.7-beta", "25.0.0.6-beta",
265266
"25.0.0.4-beta", "25.0.0.3-beta",
266267
"25.0.0.2-beta", "25.0.0.1-beta",
267268
"24.0.0.12-beta", "24.0.0.11-beta",

posts/2025-09-23-25.0.0.10-beta.adoc

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ categories: blog
66
author_picture: https://avatars3.githubusercontent.com/IsmathBadsha
77
author_github: https://github.com/IsmathBadsha
88
seo-title: Support for override library in the application classloader and support for Java 25 in 25.0.0.10-beta - OpenLiberty.io
9-
seo-description: Support for override libraries in the application classloader and Java 25 compatibility are introduced in 25.0.0.10-beta.
10-
blog_description: Support for override libraries in the application classloader and Java 25 compatibility are introduced in 25.0.0.10-beta.
9+
seo-description: Support for override libraries in the application classloader to fix the application without requiring the application to be rebuilt and Java 25 compatibility are introduced in 25.0.0.10-beta.
10+
blog_description: Support for override libraries in the application classloader to fix the application without requiring the application to be rebuilt and Java 25 compatibility are introduced in 25.0.0.10-beta.
1111
open-graph-image: https://openliberty.io/img/twitter_card.jpg
1212
open-graph-image-alt: Open Liberty Logo
1313
---
@@ -50,7 +50,7 @@ Ismath Badsha <https://github.com/IsmathBadsha>
5050
// change the "IMAGE CAPTION" to a couple words of what the image is
5151
// // // // // // // //
5252

53-
Support for override libraries in the application classloader and Java 25 compatibility are introduced in 25.0.0.10-beta.
53+
Support for override libraries in the application classloader to fix the application without requiring the application to be rebuilt and Java 25 compatibility are introduced in 25.0.0.10-beta.
5454

5555
// // // // // // // //
5656
// Change the RELEASE_SUMMARY to an introductory paragraph. This sentence is really
@@ -61,7 +61,7 @@ Support for override libraries in the application classloader and Java 25 compat
6161

6262
The link:{url-about}[Open Liberty] 25.0.0.10-beta includes the following beta features (along with link:{url-prefix}/docs/latest/reference/feature/feature-overview.html[all GA features]):
6363

64-
* <<overrideLibrary, overrideLibrary support for application classloader>>
64+
* <<overrideLibrary, OverrideLibrary support for application classloader>>
6565
* <<beta_support_java25, Beta support for Java 25>>
6666

6767
// // // // // // // //
@@ -80,9 +80,9 @@ See also link:{url-prefix}/blog/?search=beta&key=tag[previous Open Liberty beta
8080
// Contact/Reviewer: tjwatson
8181
// // // // // // // //
8282
[#overrideLibrary]
83-
== overrideLibrary support for application classloader
83+
== OverrideLibrary support for application classloader
8484

85-
The 25.0.0.10-beta release introduces a new type of library reference for configuring an application's <classloader/>. This new reference type is called an override library reference. An override library reference works similarly to a private library reference, where class instances remain unique to the application's classloader. However, the key difference is in the search order, the override library class path is searched before the application’s own class path.This allows the library path to override classes that are already contained within the application.
85+
The 25.0.0.10-beta release introduces a new type of library reference for configuring an application's `<classloader/>`. This new reference type is called an override library reference. An override library reference works similarly to a private library reference, where class instances remain unique to the application's classloader. However, the key difference is in the search order, the override library class path is searched before the application’s own class path.This allows the library path to override classes that are already contained within the application.
8686

8787
For example, when a `<webApplication/>` contains a class like `org.acme.needs.fix.SomeImpl` that needs to be overridden in order to fix an issue, but rebuilding the application to include the fix is difficult or undesirable,as a new library JAR (e.g., someImplFix.jar) is built to include the corrected class files. Then the following `server.xml` could be used to configure an `overrideLibraryRef` to fix the application without requiring the application to be rebuilt:
8888

@@ -107,7 +107,7 @@ For example, when a `<webApplication/>` contains a class like `org.acme.needs.fi
107107
[#beta_support_java25]
108108
== Beta support for Java 25
109109

110-
Java 25 is the latest version of Java and a Long-Term-Support (LTS) release. It contains many new features and enhancements over previous versions of Java that you will want to review.
110+
Java 25 is the latest version of Java and a Long-Term-Support (LTS) release. It contains many new features and enhancements over previous versions of Java.
111111

112112
There are 18 new features (JEPs) in link:https://openjdk.org/projects/jdk/25/[Java 25]. Six are test features and twelve are fully delivered:
113113

@@ -135,19 +135,20 @@ Delivered features:
135135
* 520: link:https://openjdk.org/jeps/520[JFR Method Timing & Tracing]
136136
* 521: link:https://openjdk.org/jeps/521[Generational Shenandoah]
137137

138-
An important note about using the `CompletableFuture` and `SubmissionPublisher` classes provided in the Java 25 JDK. If you do not have an explicit Executor backing them, the default is to use the `ForkJoinPool.commonPool`.The pool defaults to a parallelism value equal to the number of available processors minus 1 (# available processors - 1). If your application runs in an environment where you have 2 (or fewer) processors, you could run into issues with concurrency in Java 25 since you will only have 1 thread available by default. This was not an issue in earlier versions of Java as the JDK would overlook the parallelism value and create an additional thread.
139-
To avoid this, you can:
140-
1. Use the `CompletableFuture` provided in Liberty's Jakarta Concurrency implementation, which does not have this issue. An easy way to do that is with a link:https://www.ibm.com/docs/en/was-liberty/core?topic=manually-configuring-managed-executors[DefaultManagedExecutorService] and using link:https://jakarta.ee/specifications/concurrency/3.1/apidocs/jakarta.concurrency/jakarta/enterprise/concurrent/managedexecutorservice#supplyAsync(java.util.function.Supplier[supplyAsync or runAsync]).
141-
2. Explicitly set the `ForkJoinPool.commonPool` parallelism value to whatever you need, `-Djava.util.concurrent.ForkJoinPool.common.parallelism=N` (where N is the minimum number of threads needed)
142-
3. Use an explicit backing Executor
138+
An important note about using the `CompletableFuture` and `SubmissionPublisher` classes in Java 25 JDK is that if there is no explicit Executor backing these classes, by default `ForkJoinPool.commonPool` will be used. The pool defaults to a parallelism value equal to the number of available processors minus 1 (# available processors - 1). If the application runs in an environment with 2 (or fewer) processors, there is a possibility of running into concurrency issue since Java 25 uses only 1 thread by default. This was not an issue in earlier versions of Java as the JDK would overlook the parallelism value and create an additional thread.
139+
140+
The above issue can be avoided by following the below steps:
141+
142+
. Use the `CompletableFuture` provided in Liberty's Jakarta Concurrency implementation, which does not have this issue. An easy way to do that is with a link:https://www.ibm.com/docs/en/was-liberty/core?topic=manually-configuring-managed-executors[DefaultManagedExecutorService] and using link:https://jakarta.ee/specifications/concurrency/3.1/apidocs/jakarta.concurrency/jakarta/enterprise/concurrent/managedexecutorservice#supplyAsync(java.util.function.Supplier[supplyAsync or runAsync]).
143+
. Explicitly set the `ForkJoinPool.commonPool` parallelism value to whatever you need, `-Djava.util.concurrent.ForkJoinPool.common.parallelism=N` (where N is the minimum number of threads needed)
144+
. Use an explicit backing Executor
143145

144146
For more information about this change, please reference the following links:
145147
https://bugs.openjdk.org/browse/JDK-8362881
146148
https://bugs.openjdk.org/browse/JDK-8319447
147149
https://bugs.openjdk.org/browse/JDK-8360593
148150

149-
150-
Since Java 25 is a milestone release of Java, we thought you might like to try it out a little early. So take advantage of trying out the new changes now and get more time to preview your applications and microservices running with Java 25.
151+
Take advantage of the changes in Java 25 in Open Liberty now and get more time to review your applications, microservices, and runtime environments on your favorite server runtime!
151152

152153
Just link:https://jdk.java.net/25/[download the latest release of Java 25], download and install the link:https://openliberty.io/downloads/#runtime_betas[25.0.0.10-beta] version of Open Liberty, edit your Liberty server's link:https://openliberty.io/docs/latest/reference/config/server-configuration-overview.html#server-env[server.env] file with JAVA_HOME set to your Java 25 installation directory and start testing!
153154

@@ -157,15 +158,6 @@ For more information on Open Liberty, please visit our link:https://openliberty.
157158

158159
// DO NOT MODIFY THIS LINE. </GHA-BLOG-TOPIC>
159160

160-
161-
162-
To enable the new beta features in your app, add them to your `server.xml`:
163-
164-
[source, xml]
165-
----
166-
167-
----
168-
169161
[#run]
170162
=== Try it now
171163

0 commit comments

Comments
 (0)