Skip to content

JavaCard SDK and JDK version compatibility

Martin Paljak edited this page Feb 27, 2024 · 13 revisions

The recommended JDK for business use (JavaCard 3+) is JDK-11

For legacy JavaCard work (including JavaCard 2.X.X) JDK-8 is required.

For new projects targeting newer JavaCards (3.0.4+) JDK-17 should be used.

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

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

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 1.7 JDK-8, JDK-11, JDK-17
  • 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