Skip to content

JavaCard SDK and JDK version compatibility

Martin Paljak edited this page Oct 17, 2024 · 20 revisions

Note

The RECOMMENDED JDK for business use (JavaCard 2.2.X and 3+) is JDK-11

Tip

For new projects targeting modern JavaCards (3.0.4+) JDK-17 SHOULD be used.

For legacy JavaCard work (using JavaCard 2.X.X SDK-s as jckit/$JC_HOME OR targeting JavaCard 2.1.X) JDK-8 is REQUIRED.

See also end of life dates: https://endoflife.date/java. This project is only tested with LTS JDK-s. JDK-21 minimal class file target is 8, thus it is NOT usable with ant-javacard. Latest supported LTS JDK is JDK-17.

Important

Remember to set $JAVA_HOME to point to the right JDK!

Version map

The supported Java class file version mapping against major JDK releases is as follows (italics is class file version) :

JavaCard Kit Converter can convert (up to) Supported JDK-s
2.1.1 1.2 (46) JDK-8
2.1.2 1.2 JDK-8
2.2.1 1.2 JDK-8
2.2.2 1.5 (49) JDK-8
3.0.1 1.6 (50) JDK-8, JDK-11
3.0.4 1.6 JDK-8, JDK-11
3.0.5 1.6 JDK-8, JDK-11
3.1.0 1.7 (51) JDK-8, JDK-11, JDK-17
3.2.0 (24.0) 1.7 JDK-8, JDK-11, JDK-17
3.2.0 (24.1) 1.7 JDK-11, JDK-17

Notes

  • JDK-8 (52) minimum target version is 1.2, end-of-life is 2030
  • JDK-11 (55) minimum target version is 1.6 (supports JC 3.0.x), end-of-life is 2026
  • JDK-17 (61) minimum target version is 1.7 (supports JC 3.1.x), end-of-life is 2029
  • JDK-21 minimum target version is 1.8 (thus does NOT support any JC kit)
  • JC kit 3.1.0 includes new (v2.3) format export files for 3.0.4 and 3.0.5
  • JC kit 3.2.0 includes new (v2.3) format export files for 3.0.4, 3.0.5 and 3.1.0
  • JC kit 3.2.0 u1 (24.1) requires JDK-11 or JDK-17 to run
Clone this wiki locally