Documentation



Java Card Development Kit Release Notes

Java Card Development Kit

Release Notes

for Java Card 3 Platform, Classic Edition, Version 3.0.5u1

E62057-02

September 2015

2 Introduction

These release notes describe the Java Card Development Kit for the Java Card 3 Platform, Version 3.0.5u1, Classic Edition. This version of the Java Card Development Kit is a maintenance release and includes bug fixes. It also contains a string annotation tool and string support as specified in Version 3.0.5 of the Java Card API specification, Classic Edition. This release does not include the Trimming Tool.

Java Card technology combines a subset of the Java programming language with a runtime environment optimized for smart cards and similar small-memory embedded devices. The goal of Java Card technology is to bring many of the benefits of the Java programming language to the resource-constrained world of smart cards. The Java Card API is compatible with international standards such as ISO/IEC 7816, and industry-specific standards such as Europay, Master Card, and Visa (EMV).

Java Card 3 Platform, Version 3.0.5u1, Classic Edition is the latest evolution of Java Card technology and consists of versions 3.0, 3.0.1, 3.0.4 and 3.0.5 of the specifications and versions 3.0.1 through 3.0.5u1 of the development kit.

The Java Card 3 Platform, Version 3.0.5u1, Classic Edition is based on an evolution of the Java Card Platform, Version 2.2.2, architecture and targets resource-constrained devices. These release notes are only for Version 3.0.5u1, Classic Edition.

The updated Java Card Development Kit is based on specifications for the Java Card 3 Platform, Version 3.0.5, Classic Edition.

3 New Features In This Release

The following are new features in Java Card 3 Platform, Classic Edition since version 3.0.4:

  • Added the following new features in version 3.0.5 of the Java Card 3 Platform, Classic Edition API:

    • Elliptic curve domain conservation

    • PIN extensions for banking

    • Secure basic operations

    • Secure variables and arrays

    • Support of Java 7 language improvements

    • Utilities for analyzing an APDU's CLA byte

    • Static cryptography

    • Diffie-Hellmann support

    • One-to-many biometry support

  • Added support for new cryptographic algorithms:

    • AES-CMAC

    • PACE

    • SHA-3

    • AEAD_CCM

    • AEAD_GCM

  • Aligned the platform and its documentation with the latest ISO/IEC 7816-4 specification. In particular, the Java Card 3 Platform specifications in this release refer to the 2013 release of the ISO/IEC 7816-4 specification and align with the vocabulary of that specification.

  • Added new methods in version 3.0.5 of the Java Card 3 Platform, Classic Edition API.

  • Added support in the Java Card 3.0.5 and later tool chain for the following Java language enhancements that were introduced in Java SE 7 and are further described at https://docs.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html#javase7:

    Note:

    These features are available when compiling with the Java SE 7 (or higher) compiler with the source code release level set to 1.7 or 7:
    • Binary Literals – The integral types (byte, short, int, and long) can also be expressed using the binary number system. To specify a binary literal, add the prefix 0b or 0B to the number.

    • Underscores in Numeric Literals – Any number of underscore characters (_) can appear anywhere between digits in a numerical literal. This feature enables you, for example, to separate groups of digits in numeric literals, which can improve the readability of your code.

    • Type Inference for Generic Instance Creation – You can replace the type arguments required to invoke the constructor of a generic class with an empty set of type parameters (<>) as long as the compiler can infer the type arguments from the context. This pair of angle brackets is informally called the diamond.

    • Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods – The Java SE 7 complier generates a warning at the declaration site of a varargs method or constructor with a non-reifiable varargs formal parameter. Java SE 7 introduces the compiler option -Xlint:varargs and the annotations @SafeVarargs and @SuppressWarnings({"unchecked", "varargs"}) to suppress these warnings.

    • Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking – A single catch block can handle more than one type of exception. In addition, the compiler performs more precise analysis of rethrown exceptions than earlier releases of Java SE. This enables you to specify more specific exception types in the throws clause of a method declaration.

  • In addition to the String Constant Annotations introduced in Java Card 3.0.4, the Java Card 3.0.5 and later tool chain supports the following compile-time pre-defined annotations (provided JCDK_HOME/lib/api_classic_annotations.jar is added to the compiler's classpath):

    • |@Deprecated| – A program element annotated @Deprecated is one that programmers are discouraged from using, typically because it is dangerous, or because a better alternative exists. Compilers warn when a deprecated program element is used or overridden in non-deprecated code.

    • |@Override| – Indicates that a method declaration is intended to override a method declaration in a supertype.

    • |@SuppressWarnings|– Indicates that the named compiler warnings should be suppressed in the annotated element and in all program elements contained in the annotated element.

    • |||@SafeVarag |– A programmer assertion that the body of the annotated method or constructor does not perform potentially unsafe operations on its varargs parameter.

3.1 Bug Fixes

The following fix has been made in the Java Card 3 Platform, Classic Edition since the release of version 3.0.5:

  • Fixed an issue of the bytecode verifier ignoring mismatches between cap and export files in some cases.

4 System Requirements

This product is targeted for use on a PC running the Microsoft Windows 7 operating system.

The following software must be installed for the Java Card Development Kit to work:

5 Installation

The Java Card specifications, documentation, and Java Card Development Kit must be downloaded and installed individually.

  • The Java Card 3 Platform documentation is provided on https://docs.oracle.com/javacard. Install the documentation by downloading and extracting the contents of the documentation .zip files into directories of your choice. See Section 7, "Documentation" for a description of the Java Card documentation that is provided on the Oracle Java Card documentation web site.

  • The Java Card Development Kit installer is provided on the Oracle Technology Network download site for the Java Card platform (http://www.oracle.com/technetwork/java/embedded/javacard/downloads/). Install the development kit by downloading and running the Java Card Development Kit. .msi installer. See the Java Card Development Kit User's Guide, Java Card 3 Platform, Classic Edition, Version 3.0.5 for procedures used to install the Java Card Development Kit.

5.1 Contents of the Development Kit

This release of the Java Card Development Kit contains tools and features required to support developing classic Java Card applet applications on a smart card. The following table describes the development kit files and directories that are installed in the root installation directory (JC_CLASSIC_HOME).

Directory/File Description
api_export_files Contains the export files for the Java Card 3.0.5 API packages. If you have a development kit that includes cryptography, this also includes the directory api_export_files\javacardx\crypto.
bin Contains all shell scripts or batch files for running the tools (such as the apdutool, capdump, and converter), and the cref binary executables.
docs Contains subdirectories each with compilations of the Javadoc tool files for the APDU I/O API, the Java Card 3.0.5 API, and the Java Card Client RMI API.
eclipse-plugin The repository for the Java Card plugin for Eclipse.
legal Contains license files.
lib Contains all Java programming language JAR files required for running tools by using the shell scripts or batch files provided in the bin directory.
samples Contains sample applets and applications.
COPYRIGHT.html Copyright file for the development kit. Also the directory shared contains related files.

6 Known Issues

The following issue has been identified in this release of the Java Card 3 Platform:

  • The Converter generates incorrect code when the source code uses int expressions and the class is compiled with the -g option.

    Occasionally the converter generates incorrect code which fails verification. The workaround is to either not compile the class with the -g option or avoid using the int type.

7 Documentation

The following table describes Java Card documentation that is provided on the Oracle Java Card documentation web site (https://docs.oracle.com/javacard.).

Note:

Open the HTML versions of the documentation by clicking on the toc.htm file rather than the traditional index.htm file.
Document Description
Java Card 3 Platform Development Kit User's Guide, Classic Edition, Version 3.0.5 This document describes how to use the Java Card Development Kit to develop applications for Java Card 3 Platform, Classic Edition, Version 3.0.5 and later. It is available in both PDF and HTML formats. You can download the PDF and HTML .zip files from the Oracle Java Card documentation web site at https://docs.oracle.com/javacard.
Java Card 3 Platform Programming Notes, Classic Edition, Version 3.0.5 This document contains tips and guidelines for developers of Java Card applets, applications, and vendor-specific frameworks. This document is not required for developers to use the Java Card Development Kit; but it does provide useful tips and guidelines for developers who are creating Java Card applets, applications, and vendor-specific frameworks. It is available in both PDF and in HTML formats. You can download the PDF and HTML .zip files from the Oracle Java Card documentation web site at https://docs.oracle.com/javacard.
Java Card 3 Platform Specifications bundle This bundle contains the Java Card Runtime and the Java Card Virtual Machine specifications for the Java Card 3 Platform, Classic Edition, Version 3.0.5 and later. These specifications are only available in PDF format. You can download both the .zip file containing these documents and their Release Notes from the Oracle Java Card documentation web site at https://docs.oracle.com/javacard.
API documentation The API documentation for the Java Card 3 Platform is provided in the development kit installation (see Section 5.1, "Contents of the Development Kit") and is only available in HTML format. You can also download the API documentation from the Oracle Java Card documentation web site at https://docs.oracle.com/javacard.

8 Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support

Oracle customers that have purchased support have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.

9 Product Information

The public Java Card technology web site is http://www.oracle.com/technetwork/java/embedded/javacard/overview/index.html.

We greatly appreciate your feedback on this reference implementation. Send email with your feedback for this release to:

javacard-docs_ww@oracle.com


Java Card Development Kit Release Notes for Java Card 3 Platform, Classic Edition, Version 3.0.5u1, Release 1.0

E62057-02

Copyright © 1998, 2015, Oracle and/or its affiliates. All rights reserved.

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable:

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

This software or hardware and documentation may provide access to or information about content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services, except as set forth in an applicable agreement between you and Oracle.