Skip to content

Commit 91b5ccf

Browse files
committed
25.0.0.10_beta
1 parent 5e723b8 commit 91b5ccf

File tree

1 file changed

+39
-39
lines changed

1 file changed

+39
-39
lines changed

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

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
---
22
layout: post
3-
title: "TITLE"
3+
title: "Support for override library in the application classloader and support for Java 25 in 25.0.0.10-beta"
44
# Do NOT change the categories section
55
categories: blog
66
author_picture: https://avatars3.githubusercontent.com/IsmathBadsha
77
author_github: https://github.com/IsmathBadsha
8-
seo-title: TITLE - makes sure it ends with - OpenLiberty.io
9-
seo-description: DESCRIPTION
10-
blog_description: DESCRIPTION
8+
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.
1111
open-graph-image: https://openliberty.io/img/twitter_card.jpg
1212
open-graph-image-alt: Open Liberty Logo
1313
---
14-
= TITLE
14+
= Support for override library in the application classloader and support for Java 25 in 25.0.0.10-beta
1515
Ismath Badsha <https://github.com/IsmathBadsha>
1616
:imagesdir: /
1717
:url-prefix:
@@ -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-
BETA_RELEASE_SUMMARY
53+
Support for override libraries in the application classloader 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,8 +61,8 @@ BETA_RELEASE_SUMMARY
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-
* <<SUB_TAG_0, overrideLibrary support for application classloader>>
65-
* <<SUB_TAG_1, Beta support for Java 25>>
64+
* <<overrideLibrary, overrideLibrary support for application classloader>>
65+
* <<beta_support_java25, Beta support for Java 25>>
6666

6767
// // // // // // // //
6868
// In the preceding section:
@@ -79,23 +79,23 @@ See also link:{url-prefix}/blog/?search=beta&key=tag[previous Open Liberty beta
7979
// Blog issue: https://github.com/OpenLiberty/open-liberty/issues/32778
8080
// Contact/Reviewer: tjwatson
8181
// // // // // // // //
82-
[#SUB_TAG_0]
82+
[#overrideLibrary]
8383
== overrideLibrary support for application classloader
8484

85-
86-
For the 25.0.0.10-beta, a new library reference type is available for an application's `<classloader/>` configuration that is used to configure an override library. Similar to private library references, class insteances are unique to the application's classloader, independent of class instances from other classloaders. The referenced override library class path is searched before searching the application classloader's own class path. This allows a library path to override classes contained in an 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.
8786

88-
For example, if there is an `<webApplication/>` that contains a class `org.acme.needs.fix.SomeImpl` that needs to be overridden in order to fix an issue, but it is difficult or undesirable to rebuild the application to pull in the fix a new library JAR (e.g. someImplFix.jar) could be built to include the class files that need to be fixed. Then the following `server.xml` could be used to configure an `overrideLibraryRef` to fix the application without requiring the application to be rebuilt:
87+
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:
8988

90-
```xml
89+
[source, xml]
90+
----
9191
<webApplication location="appThatNeedsFix.war">
9292
<classloader overrideLibraryRef="someImplFix"/>
9393
</webApplication>
9494
9595
<library id="someImplFix">
9696
<path name="someImplFix.jar"/>
9797
</library>
98-
```
98+
----
9999

100100

101101
// DO NOT MODIFY THIS LINE. </GHA-BLOG-TOPIC>
@@ -104,38 +104,38 @@ For example, if there is an `<webApplication/>` that contains a class `org.acme.
104104
// Blog issue: https://github.com/OpenLiberty/open-liberty/issues/32681
105105
// Contact/Reviewer: gjwatts
106106
// // // // // // // //
107-
[#SUB_TAG_1]
107+
[#beta_support_java25]
108108
== Beta support for Java 25
109109

110-
Please provide a summary of the update, including the following points:
111-
112110
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.
113111

114112
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:
115113

116114
Test features:
117-
470: link:https://openjdk.org/jeps/470[PEM Encodings of Cryptographic Objects (Preview)]
118-
502: link:https://openjdk.org/jeps/502[Stable Values (Preview)]
119-
505: link:https://openjdk.org/jeps/505[Structured Concurrency (Fifth Preview)]
120-
507: link:https://openjdk.org/jeps/507[Primitive Types in Patterns, instanceof, and switch (Third Preview)]
121-
508: link:https://openjdk.org/jeps/508[Vector API (Tenth Incubator)]
122-
509: link:https://openjdk.org/jeps/509[JFR CPU-Time Profiling (Experimental)]
115+
116+
* 470: link:https://openjdk.org/jeps/470[PEM Encodings of Cryptographic Objects (Preview)]
117+
* 502: link:https://openjdk.org/jeps/502[Stable Values (Preview)]
118+
* 505: link:https://openjdk.org/jeps/505[Structured Concurrency (Fifth Preview)]
119+
* 507: link:https://openjdk.org/jeps/507[Primitive Types in Patterns, instanceof, and switch (Third Preview)]
120+
* 508: link:https://openjdk.org/jeps/508[Vector API (Tenth Incubator)]
121+
* 509: link:https://openjdk.org/jeps/509[JFR CPU-Time Profiling (Experimental)]
123122

124123
Delivered features:
125-
503: link:https://openjdk.org/jeps/503[Remove the 32-bit x86 Port]
126-
506: link:https://openjdk.org/jeps/506[Scoped Values]
127-
510: link:https://openjdk.org/jeps/510[Key Derivation Function API]
128-
511: link:https://openjdk.org/jeps/511[Module Import Declarations]
129-
512: link:https://openjdk.org/jeps/512[Compact Source Files and Instance Main Methods]
130-
513: link:https://openjdk.org/jeps/513[Flexible Constructor Bodies]
131-
514: link:https://openjdk.org/jeps/514[Ahead-of-Time Command-Line Ergonomics]
132-
515: link:https://openjdk.org/jeps/515[Ahead-of-Time Method Profiling]
133-
518: link:https://openjdk.org/jeps/518[JFR Cooperative Sampling]
134-
519: link:https://openjdk.org/jeps/519[Compact Object Headers]
135-
520: link:https://openjdk.org/jeps/520[JFR Method Timing & Tracing]
136-
521: link:https://openjdk.org/jeps/521[Generational Shenandoah]
137-
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`. That 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.
124+
125+
* 503: link:https://openjdk.org/jeps/503[Remove the 32-bit x86 Port]
126+
* 506: link:https://openjdk.org/jeps/506[Scoped Values]
127+
* 510: link:https://openjdk.org/jeps/510[Key Derivation Function API]
128+
* 511: link:https://openjdk.org/jeps/511[Module Import Declarations]
129+
* 512: link:https://openjdk.org/jeps/512[Compact Source Files and Instance Main Methods]
130+
* 513: link:https://openjdk.org/jeps/513[Flexible Constructor Bodies]
131+
* 514: link:https://openjdk.org/jeps/514[Ahead-of-Time Command-Line Ergonomics]
132+
* 515: link:https://openjdk.org/jeps/515[Ahead-of-Time Method Profiling]
133+
* 518: link:https://openjdk.org/jeps/518[JFR Cooperative Sampling]
134+
* 519: link:https://openjdk.org/jeps/519[Compact Object Headers]
135+
* 520: link:https://openjdk.org/jeps/520[JFR Method Timing & Tracing]
136+
* 521: link:https://openjdk.org/jeps/521[Generational Shenandoah]
137+
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.
139139
To avoid this, you can:
140140
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]).
141141
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)
@@ -186,7 +186,7 @@ If you're using link:{url-prefix}/guides/maven-intro.html[Maven], you can instal
186186
<plugin>
187187
<groupId>io.openliberty.tools</groupId>
188188
<artifactId>liberty-maven-plugin</artifactId>
189-
<version>3.8.2</version>
189+
<version>3.11.5</version>
190190
<configuration>
191191
<runtimeArtifact>
192192
<groupId>io.openliberty.beta</groupId>
@@ -226,7 +226,7 @@ buildscript {
226226
mavenCentral()
227227
}
228228
dependencies {
229-
classpath 'io.openliberty.tools:liberty-gradle-plugin:3.6.2'
229+
classpath 'io.openliberty.tools:liberty-gradle-plugin:3.9.5'
230230
}
231231
}
232232
apply plugin: 'liberty'

0 commit comments

Comments
 (0)