Skip to content

Working towards Java $N plus 1 ‐ organizational issues

Stephan Herrmann edited this page Sep 9, 2025 · 7 revisions

For various reasons (incl. legal reasons), development for the next, unreleased Java version happens in branches named BETA_JAVA23, BETA_JAVA24 etc.

This page captures organizational aspects of this work (work in progress).

Branches

describe basic process here

Versions

  • versions of productive bundles o.e.j.core and o.e.j.c.compiler.batch should use the following pattern to ensure that the beta branch is always ahead of master:
    • master: X.Y.Z -- where Z is incremented by 100 when needed
    • beta: X.Y.(Z+50)
      • this version, however is not considered an official release, mainly used for producing a patch build
    • when merging beta back to master then versions and @since tags will be incremented to X.(Y+1).0
      • this version should be used by clients consuming new API from the previous beta branch
  • test bundles can keep the same X.Y.Z as in master, as there is no context that will "see" versions from both branches

Builds

Changes to be done in pom.xml & test.xml:

  • /pom.xml add properties
    • <eclipse-p2-repo.url>https://download.eclipse.org/eclipse/updates/4.xx-Y-builds</eclipse-p2-repo.url>
      • needed mostly in jdt.ui and jdt.debug to be able to see new API from jdt.core
      • indeed referencing the exact Y-build stream avoids break down during switch of streams
    • <skipAPIAnalysis>true</skipAPIAnalysis>
  • *.tests.*/pom.xml
    • create test profile test-on-javase-N
  • */test.xml
    • update vmargs property like value="-Dcompliance.jre.17=1.8,11,17 ... -Dcompliance.jre.N=1.8,11,17,21,N"

PR builds

Changes to be done in Jenkinsfile

  • select JDK to run on: jdk 'openjdk-jdkN-latest'
  • select test profile for the new java version: -Ptest-on-javase-N
  • update set of compliance levels to test: -Dcompliance=1.8,11,17,21,N

Y-Builds

P-Builds

For those who can't access the job configuration, this is what it does (aside from parameter declarations and a few printouts):

git clone https://github.com/eclipse-jdt/eclipse.jdt.git -b BETA_JAVA25
cd eclipse.jdt/org.eclipse.jdt.releng/patchbuild
./build.sh

Publishing

Remove beta disclaimers

In jdt.core this consists of

  • Remove BETA Disclaimers in class headers
  • And update the APIs to remove BETA tags
  • Fix the version in API filter

jdt.ui also needs to update the isBetaVersion() method in ComplianceConfigurationBlock

Beta disclaimers must be removed also in https://github.com/eclipse-jdt/eclipse.jdt/tree/BETA_JAVA25/org.eclipse.jdt.releng/patchbuild - see the README for details.

Final build

Be prepared to use the fresh openjdk GA download for tests on latest (early access will have expired just then).

Marketplace Entry

Clone this wiki locally