JCDK25.0 Download JCDK25.0 Release Notes JCDK25.0 User Guides Developer Forum
The Java Card Development Kit 25.0 is Now Available
Oracle’s Java Card team is excited to announce the release of the Java Card Development Kit (JCDK) v25.0, which consists of three components: Tools, Simulator, and Eclipse Plug-in. Please refer to the JCDK 25.0 Release Notes for more information on updates and fixes.
What’s New?
Conversion of Version 54 Class Files (from JDK 10)
Converting Java class files into Java Card CAP and Export files is at the heart of the Java Card technology and makes the Converter tool provided in the Java Card Development Kit Tools a critical component of its deployment model (see Unique Verification and Deployment Model for more information).
Java Card is based on a subset of the Java language because the Java Card Virtual Machine, Runtime Environment, and APIs are designed to run security services on tamper-resistant, secure hardware with limited memory and CPU resources to meet the highest levels of security certification requirements. For these reasons, the Java Card Virtual Machine supports a limited number of Java bytecodes. For example, there is no need to support multianewarray because multi-dimensional arrays are not supported or monitorenter/monitorexit because threads are not supported. Consequently, the class file version serving as input to the Converter tool does not need to be aligned with the latest Java class file version including the latest bytecodes. Until now, the previously supported class file version was up to version 51, requiring the use of ‘-release 7’ when compiling source code.
Since JDK 7, there are some Java language innovations that do not rely on new Java bytecodes, which may prove helpful in developing Java Card Applications. This is the principle that led the latest update of the JCDK 25.0 Converter tool to increase its supported class file version up to version 54, allowing the use of `-release` up to 10 when compiling source code and benefitting from some Java language features like:
- Functional Interface Annotation (JDK 8)
- Native Annotation (JDK 8)
- Repeated Annotation (JDK 8)
- Deprecated Annotation (JDK 9)
- Diamond operator for anonymous inner classes (JDK 9)
- “var” keyword (JDK 10)
Note: The samples provided with the Simulator are now compiled based on class file version 54 (JDK 10).
Integration with Visual Studio Code
Visual Studio Code (VS Code) has become the most dominant free IDE in recent years with an upstream Open-Source edition and a substantial marketplace for third-party extensions. The Oracle Java Platform Support extension brings full featured Java development (edit-compile-debug and test cycle) for Maven and Gradle projects to VS Code.
The Java Card Development Kit v25.0 provides a launch configuration which together with the Oracle Java extension permits to develop, debug and test a Java Card application integrated within VS Code while benefiting from features like formatting and linting. The launch configuration exposes the following commands:
- “Convert and Verify Applet” – to build and verify a Java Card CAP file based on Java sources
- “Start Java Card Simulator” – to start the Simulator to run a Java Card application
- “Start Java Card Simulator Debug Mode” – to start the Simulator and the debug proxy to debug a Java Card application.
- “Run Java Card Client” – to run a Java Client application communicating with the Simulator to load the built CAP file and send commands to it. This command is bound to the samples of the Java Card Development Kit but a developer can adapt it to match different needs.
Extended Cryptography Support
This latest version provides two main enhancements regarding cryptography:
- The support of the Counter – CTR mode for AES symmetric ciphering. This mode is well suited for stream ciphers and permits to process blocks of data that may not have been received in their final order, which allows for pipelining and parallelization.
- The GlobalPlatform security mechanism used to protect the integrity of the Java Card applications installed on the platform, Load File Data Block Hash (LFDBH), now supports SHA-384 and SHA-512 algorithms in addition to SHA-1 and SHA-256.
