corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Краткое руководство пользователя по разработке приложений Java Card

Смарт-карта с поддержкой Java

Составитель: Тим Бодро (Tim Boudreau), редактор: Рут Кастерер (Ruth Kusterer)

Java Card – интересная для работы платформа JVM, работающая на смарт-картах и небольших устройствах, помещающихся в ладонь. Java Card 3.0 существует в двух вариантах:

Классический
Такой же, как и более ранние версии Java Card. Платформа крайне ограничена. Например, отсутствует java.lang.String, нет метода java.lang.Object.hashCode(), не поддерживаются числа с плавающей точкой.
Расширенный
Предназначен для новых, более мощных смарт-карт. Поддерживает более полную реализацию платформы Java. Наиболее любопытна собственная поддержка сервлетов. Можно написать веб-приложение с помощью хорошо знакомого интерфейса API, которое будет выполняться на смарт-карте.

Содержание

Требования

Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.

Содержимое на этой странице относится к среде IDE NetBeans 6.8 и 6.9
Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans 6.9
Пакет Java Card SDK 3.02
Подключаемый модуль Java Card для среды NetBeans 1.3
Комплект для разработки приложений на языке Java (JDK) Версия 6

Настройка среды проекта

Поскольку у смарт-карты отсутствует пользовательский интерфейс, небоходимо либо иметь устройство чтения смарт-карт для чтения и записи карт, либо использовать эмулятор, включенный в Java Card Reference Implementation (RI). В этом учебном курсе будет использоваться эмулятор.

Примечание. Подключаемый модуль Java Card работает в любой операционной системе, но эмулятор Java Card Reference Implementation доступен только для Windows. Тем не менее, можно настроить его как платформу Java на других операционных системах, указав в среде NetBeans на RI, установленный в разделе Windows, в системах Mac или Linux, однако в таком случае не будет возможности запуска приложений.

Установка подключаемых модулей в среде IDE NetBeans

  1. Загрузите и установите среду IDE NetBeans 6.9.
  2. После установки в меню "Сервис" выберите пункт "Подключаемые модули".
  3. Под заголовком Available Plugins находятся два подключаемых модуля, связанных с Java Card: Java Card и Java Card Runtime Bundle.
    • Java Card — подключаемый модуль, добавляющий в среду IDE NetBeans поддержку проектов Java Card.
    • Java Card 3.0.2 Runtime Bundle требуется только при отсутствии установленной копии Java Card Reference Implementation.

    Установка подключаемого модуля Java Card в среде NetBeans

  4. После установки подключаемого модуля требуется перезапустить среду IDE, а затем продолжить выполнение учебного курса.

Регистрация платформы Java Card

Если Java Card 3.0.2 Runtime Bundle был загружен с помощью Plugin Manager, то пакет Java Card SDK уже настроен в качестве платформы. Однако, если платформа была загружена с веб-сайта java.sun.com, можно использовать меню Tools > Java Platforms, чтобы добавить платформу Java Card в среду IDE так же, как добавляется любая платформа Java.

Установка платформы Java Card

После настройки платформа Java Card появляется на вкладке "Службы" в среде IDE. Если вкладка "Службы" не отображается, выберите пункт "Службы" в меню "Окна".

Установленные платформы Java Card и устройства

На одной "платформе" может быть несколько "устройств". Проект развертывается на конкретном устройстве конкретной платформы.

Типы проектов Java Card

В меню "Файл" выберите пункт "Создать" и выберите категорию Java Card. Можно создавать несколько типов проектов Java Card. Все они собираются с помощью Apache Ant, так же как проекты NetBeans Java SE.

Типы проектов Java Card в среде NetBeans

Классический апплет — традиционный апплет Java Card для небольших устройств, как апплеты в Java Card 2.0 и ранее. Классическая библиотека — классический апплет, без апплета, просто код, который нужно поместить на устройство, который может разделяться между апплетами.

Расширенный апплет и библиотека — то же самое с расширенным API Java Card 3.0, т.е. с возможностью использования java.lang.String и прочего. Загрузочный путь к классам различается для классических и расширенных проектов, поэтому, например, автозавершение кода не будет предлагать java.lang.String в классических проектах, но будет в расширенных.

Создание проекта апплета Java Card

Проекты веб-приложений — возможно, самая интересная возможность Java Card 3.0. Предоставляется каркас проекта с реализацией Servlet, и есть доступ к полному API Servlet. С этими приложениями проще работать, чем с апплетами — на стороне клиента не требуется дополнительный код для взаимодействия с устройством, достаточно веб-обозревателя. Приложения можно тестировать локально с помощью Reference Implementation и веб-обозревателя.

Создание проекта веб-приложения Java Card

Работа с проектом

В этом учебном курсе будет создан веб-проект.

В новом веб-проекте введите имя проекта "Веб-приложение Card" и укажите путь к проектам NetBeans. Нажмите кнопку "Готово". Проект отображается на вкладке "Проект".

Щелкните правой кнопкой мыши узел проекта на вкладке "Проект" и выберите в контекстном меню пункт "Свойства". В разделе "Выполнить" окна "Свойства проекта" можно изменить платформу и устройство для развертывания проекта. Нажмите кнопку "Закрыть" для сохранения изменений.

Работа с веб-приложением Java Card похожа на работу с любым веб-приложением, развертываемом в контейнере сервлетов. Нажмите кнопку "Выполнить" на панели инструментов для запуска примера "Hello World". При запуске веб-приложения Java Card открывается веб-обозреватель с выходным сообщением сервлета: Hello from webapplication1.MyServlet.

Редактирование кода в проекте веб-приложения Java Card

При запуске проектов типа апплета среда IDE NetBeans предлагает два полезных интерфейса: вывод в командную строку и консоль Java Card. Консоль используется для взаимодействия с апплетом. Можно отправлять данные в шестнадцатеричном формате и получать ответные сообщения.

Совет. RI содержит дополнительные примеры проектов, которые можно открыть и выполнить в среде IDE NetBeans.

Свойства выполнения проекта Java Card

Использование особых возможностей подключаемых модулей

Java Card включает два "магических" понятия, отсутствующих в других платформах Java:

Идентификаторы приложений (AID)
Эти уникальные идентификаторы выглядят следующим образом: //aid//720A75E082/0058AEFC20. Первая часть шестнадцатеричного кода — идентификатор поставщика (его можно получить в International Standards Organization (ISO)); вторая часть — уникальное значение, выбранное разработчиком. Идентификаторы AID используются для идентификации классов апплетов, пакетов Java (только для классических апплетов и библиотек), уникальных экземпляров апплетов (можно развертывать один апплет многократно на одном устройстве — идентификатор AID экземпляров будет использоваться для выбора апплета).
Сценарии APDU
Это сценарии отправки данных апплету. Они содержат большое количество набранного вручную шестнадцатеричного кода; сценарий должен выбрать конкретный экземпляр апплета и отправить ему данные. Вместо написания сценария можно использовать консоль Java Card.

Хотя эти два момента довольно сложны, подключаемые модули NetBeans помогают абстрагироваться от этих сложностей следующим образом:

  • При создании проекта автоматически создаются корректные значения AID апплета, AID классического пакета, и один AID экземпляра.

  • При выборе вкладки "Апплеты" в диалоговом окне "Свойства проекта" просматривается путь к классам и обнаруживаются все подклассы апплетов Java Card:

    Поиск подклассов апплетов в проекте Java Card

  • После их обнаружения можно выбрать в диалоговом окне апплеты, которые действительно развертываются, и настроить значения AID, параметры развертывания и так далее. Введенные значения проверяются средой IDE, поэтому ввести некорректные данные сложно.

    Настройка развертывания апплета в проекте Java Card

  • Если требуется развертывать два экземпляра одного апплета, можно настроить и такое поведение. Однако в простых случаях, когда нужно развертывать только один экземпляр, нет необходимости задумываться об этом.

    Настройка развертываемых экземпляров апплета в проекте JavaCard в среде NetBeans

  • Для тестирования апплетов не нужно писать вручную сценарии APDU — можно использовать консоль для прямого взаимодействия с апплетами.

    Открытие консоли APDU

    Консоль APDU

  • "AID пакета" для классических проектов (в которых может быть только один пакет Java) также обрабатывается средой IDE, но есть возможность настройки.

    Настройка AID классического пакета

  • Часть всех значений AID в проектах — присвоенный организацией ISO ID поставщика (RID). Для ускорения начала работы среда IDE генерирует случайное значение RID, пригодное для разработки и тестирования. При наличии официального RID, можно ввести его в меню "Сервис > Параметры", и оно будет использоваться для всех новых проектов. Нажмите кнопку "Создать" в окне "Свойства проекта" для обновления значений в существующих проектах.

    Настройка глобального RID, используемого во всех AID проектов Java Card

Взаимодействие с пакетами SDK сторонних поставщиков

В настоящее время средствами поддерживается только Java Card 3.0.2 Reference Implementation, но они имеют расширяемый интерфейс API для интеграции карт поставщиков. Определения платформы и устройства — простые файлы свойств, импортируемые сценарием сборки.

Развертывание осуществляется с помощью задач Ant, предоставляемых поставщиком смарт-карт. Это означает, что созданные проекты могут выполняться вне среды IDE, жесткая привязка к среде отсутствует. Исходный код задач Ant, являющихся частью Java Card RI, можно загрузить на портале проекта Java Card, вместе с примерами проектов NetBeans.

Вы поставщик смарт-карт и создали средства развертывания Java Card? Обратитесь к автору подключаемого модуля для получения сведений об интеграции смарт-карт. Интеграция может осуществляться на нескольких уровнях, в зависимости от потребностей в поддержке карты в среде IDE.


Дополнительные ссылки