Upgrade to JDK 17 for ARM Architecture #5976
Description
Background
Java-Tron currently only supports Oracle JDK 8. However, despite the wide usage of JDK 8, it is no longer the most preferable option for development for multiple reasons and limitations. For instance, the End of Public Updates process for legacy releases and the End of Commercial Use under the Oracle Technology Network License Agreement for Java SE both hold that. On the contrary, JDK 17 is the LTS (Long Term Support) version of Oracle announced for free commercial use in 2021. It has significant improvements in performance, stability, and security, with advantages as follows:
- Free Java License: Free Use License for All Users.
Caution
Oracle JDK Development Kit 17.0.12 is the last planned update of JDK 17 under the NFTC. Updates after September 2024 will be licensed under the Java SE OTN License (OTN) and production use beyond the limited free grants of the OTN license will require a fee. I suggest moving to OpenJDK 17, see more distributions.
- LTS: Long-Term-Support, Premier Support Until September 2026 or later.
- AArch64 Port
Important
- JEP 237: Linux/AArch64 Port(Release 9)
- JEP 388: Windows/AArch64 Port(Release 16)
- JEP 391: macOS/AArch64 Port(Release 17)
- Garbage Collectors
Important
- Language
Important
- JEP 306: Restore Always-Strict Floating-Point Semantics(Release 17)
- JEP 409: Sealed Classes(Release 17)
- JEP 361: Switch Expressions(Release 14)
Related Issues and PRs
- Expand ARM Architecture Compatibility #5954
- Node not syncing post mandatory upgrade #5807
- fix(readme): update description of JDK 1.8 version in use #5338
- A fatal error has been detected by the Java Runtime Environment #4746
- Debian, openjdk, javax.annotation.Generated cannot find symbol #4498
- Node sync not happening at all #4472
- Full node sync failed - Peer stats: all 0, active 0, passive 0 #4524
- OpenJDK, newer Java versions #4211
- Run java-tron using OpenJDK #4133
- * What went wrong: Could not initialize class org.codehaus.groovy.runtime.InvokerHelper #3897
- Syncing Issue #3604
- Upgrade to JDK 11 #3542
- Upgrade to JDK 11 #3540
- 🚀 A series of performance improvement plans #3528
- Can't Connect to Any Peer #3514
- GreatVoyage-v4.1.1 java error on Ubuntu 20.04.1 LTS (Focal Fossa) #3504
- Error creating bean with name 'blockMsgHandler': Injection of autowired dependencies failed #2379
- Failed to deploy #2311
- Oracle Java (JDK) 8 Installer PPA (DISCONTINUED) #2164
- Error when running full node. Exception encountered during context initialization - cancelling refresh attempt #1179
- Odyssey-v2.0.5 compile Error #1105
- Added info under
Prepared dependenciessection, to suggest Linux Ubuntu's users, using Oracle JDK 8, instead of OpenJDK 8, to avoid error build #339 - Java 10? - currently unable to compile java-tron with JDK 10 #295
Scope of Impact
- Build and deployment processes
- Core application codes
- Third-party dependencies
- Development and testing environments
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
CarlChaoCarl commentedon Aug 28, 2024
@halibobo1205
As far as I know
For besu, Java 21 or later is required to build Besu
Will java-tron limit the java version, or is it still compatible with java8
abn2357 commentedon Aug 28, 2024
When do you plan to begin this upgrade?JDK 8 is unable to keep up with the times.
thuthu24 commentedon Aug 28, 2024
halibobo1205 commentedon Aug 29, 2024
@CarlChaoCarl Java 17 or later is required to build Java-Tron.
halibobo1205 commentedon Aug 29, 2024
@abn2357 The current phase is under discussion, and the evaluation will be based on the workload.
halibobo1205 commentedon Sep 3, 2024
Try to work with both JDK8 and JDK17.
halibobo1205 commentedon Sep 3, 2024
Here are some common considerations:
Caution
Jdk17 may have subtle differences in floating-point precision and behavior.
Comprehensive testing is necessary for applications that rely on precise floating-point calculations.
Important
2. Default Behavior Changes
Important
3. JVM options Changes
Important
4. Third-party dependencies
Ensure all third-party libraries and dependencies support JDK17.
Some incompatible dependencies may need to be updated or replaced.
Important
5. Gradle plugins
Ensure all Gradle plugins support JDK17.
Some incompatible plugins may need to be updated or replaced.
Important
6. Build and deployment process:
Important
7. Cross-JDK testing
Murphytron commentedon Sep 3, 2024
This issue has been added to the core devs community call #23, welcome to share the latest progress @halibobo1205, and discuss together with @CarlChaoCarl @abn2357 @thuthu24.
halibobo1205 commentedon Sep 4, 2024
Caution
8. Strong data consistency and finality
Final data consistency is required for blockchain, and the world state usually guarantees it. Unfortunately, Java-Tron doesn't have a world state.
We need to think about how to ensure final data consistency.
halibobo1205 commentedon Sep 4, 2024
Caution
Jdk17 may have subtle differences in floating-point precision and behavior.
Comprehensive testing is necessary for applications that rely on precise floating-point calculations.
StrictMathto Avoid Cross-JDK Consistency Issues. To ensure Cross-JDK compatibility for Java-Tron, I suggest a new proposal to convertMathtoStrictMath, just like for cross-platform compatibilityhalibobo1205 commentedon Sep 5, 2024
Important
Commercial Use
under the Java SE OTN License (OTN), only free for:
( i) Personal Use,
(ii) Development Use,
(iii) Oracle Approved Product Use, and/or
(iv) Oracle Cloud Infrastructure Use.
Tron's other behavior should be identified as Commercial Use.
halibobo1205 commentedon Sep 5, 2024
Important
JDK version compatibility
7 remaining items
halibobo1205 commentedon May 12, 2025
JDK 9-17 release checklist
RELEASE NOTES: JDK 9
RELEASE NOTES: JDK 10
RELEASE NOTES: JDK 11
RELEASE NOTES: JDK 12
RELEASE NOTES: JDK 13
RELEASE NOTES: JDK 14
RELEASE NOTES: JDK 15
RELEASE NOTES: JDK 16
RELEASE NOTES: JDK 17
halibobo1205 commentedon May 16, 2025
Traced by #5954