| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- |
| Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. |
| --> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>Краткое учебное руководство по разработке на Java Card - учебный курс по IDE NetBeans</title> |
| <link type="text/css" rel="stylesheet" media="all" href="../../../netbeans.css"> |
| <meta name="author" content="Tim Boudreau"> |
| <meta name="description" content="Getting started with Java development on Smart Cards with the NetBeans Java Card plugin"> |
| <meta name="keywords" content="Java Card, smart card, Java, emulator, platform, netbeans plugin"> |
| </head> |
| <body> |
| <h1>Краткое руководство пользователя по разработке приложений Java Card</h1> |
| |
| <p><img alt="Смарт-карта Java" src="../../../images_www/articles/74/javacard/java-smart-card-sm.jpg" style="float:right"></p> |
| |
| <p><em>Составитель: Тим Бодро (Tim Boudreau), редактор: Рут Кастерер (Ruth Kusterer)</em></p> |
| <p> |
| Java Card – интересная для работы платформа JVM, работающая на <a href="http://en.wikipedia.org/wiki/Smart_card">смарт-картах</a> и небольших устройствах, помещающихся на ладони. Java Card 3.0 существует в двух вариантах: |
| </p> |
| <dl> |
| <dt><strong>Классический</strong></dt> |
| <dd> |
| Такой же, как и более ранние версии Java Card. Платформа крайне ограничена. Например, отсутствует <tt>java.lang.String</tt>, нет метода <tt>java.lang.Object.hashCode()</tt>, и не поддерживаются числа с плавающей точкой. |
| </dd> |
| <dt><strong>Расширенный</strong></dt> |
| <dd> |
| Новые, более мощные смарт-карты - все это новые возможности Java Card 3.0. Поддерживается более полная реализация платформы Java. Наиболее любопытна встроенная поддержка сервлетов. Можно написать веб-приложение с помощью хорошо знакомого интерфейса API, которое будет выполняться на смарт-карте. |
| </dd> |
| </dl> |
| |
| <h3>Содержание</h3> |
| <ul> |
| <li><a href="#reqs" title="Требуемое программное и аппаратное обеспечение">Требуемое программное и аппаратное обеспечение</a></li> |
| <li><a href="#setup" title="Настройка среды проекта">Настройка среды проекта</a></li> |
| <li><a href="#types" title="Общие сведения о типах проектов Java Card">Общие сведения о типах проектов Java Card</a></li> |
| <li><a href="#projects" title="Работа с проектом">Работа с проектом</a></li> |
| <li><a href="#special" title="Использование особых возможностей подключаемых модулей">Использование особых возможностей подключаемых модулей</a></li> |
| <li><a href="#sdk" title="Взаимодействие с пакетами SDK сторонних поставщиков">Взаимодействие с пакетами SDK сторонних поставщиков</a></li> |
| <li><a href="#related" title="Связанные ссылки">Связанные ссылки</a></li> |
| </ul> |
| |
| <h2><a name="reqs"></a>Требования</h2> |
| <p><b>Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.</b></p> |
| <img alt="Содержимое на этой странице применимо к IDE NetBeans 6.8 и 6.9" class="stamp" height="114" src="../../../images_www/articles/69/netbeans-stamp.gif" title="Содержимое этой страницы применимо к IDE NetBeans 6.8 и 6.9" width="114"> |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Программное обеспечение или материал</th> |
| <th class="tblheader" scope="col">Требуемая версия</th> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">IDE NetBeans</a></td> |
| <td class="tbltd1">6.9</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://java.sun.com/javacard/downloads/index.jsp">Пакет Java Card SDK</a></td> |
| <td class="tbltd1">3.02 </td> |
| </tr> |
| <tr> |
| <td class="tbltd1">Подключаемый модуль Java Card для среды NetBeans</a></td> |
| <td class="tbltd1">1.3 </td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Комплект для разработки приложений на языке Java</a> (JDK)</td> |
| <td class="tbltd1">Версия 6 </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2><a name="setup"></a>Настройка среды проекта</h2> |
| <p>Поскольку у смарт-карты отсутствует пользовательский интерфейс, требуется либо иметь устройство чтения смарт-карт для чтения и записи карт, либо использовать эмулятор, включенный в Java Card Reference Implementation (RI). В этом учебном курсе будет использоваться эмулятор. </p> |
| <p><b class="notes">Примечание.</b> Подключаемый модуль Java Card работает в любой операционной системе, но эмулятор Java Card Reference Implementation доступен только для Windows. Тем не менее, можно настроить его как платформу Java на других операционных системах, указав в среде NetBeans на RI, установленный в разделе Windows, в системах Mac или Linux, однако в таком случае не будет возможности запуска приложений. </p> |
| |
| <h3>Установка подключаемых модулей в IDE NetBeans</h3> |
| <ol> |
| <li>Загрузите и установите IDE NetBeans 6.9.</li> |
| <li>После установки в меню "Сервис" выберите пункт "Подключаемые модули".</li> |
| <li>Под заголовком Available Plugins находятся два подключаемых модуля, связанных с Java Card: Java Card и Java Card Runtime Bundle. |
| <ul> |
| <li>Java Card представляет собой подключаемый модуль, добавляющий поддержку проектов Java Card к IDE NetBeans.</li> |
| <li>Java Card 3.0.2 Runtime Bundle требуется только при отсутствии установленной копии Java Card Reference Implementation. |
| </li> |
| </ul> |
| <p><img alt="Установка подключаемого модуля Java Card для среды NetBeans" src="../../../images_www/articles/74/javacard/install-javacard-plugins.png"></p> |
| </li> |
| <li>После установки подключаемого модуля требуется перезапустить среду IDE, а затем продолжить выполнение учебного курса.</li> |
| </ol> |
| <h3>Регистрация платформы Java Card</h3> |
| <p>Если Java Card 3.0.2 Runtime Bundle был загружен с помощью диспетчера подключаемых модулей, то пакет Java Card SDK уже настроен в качестве платформы. Однако, если платформа была загружена с веб-сайта <a href="http://java.sun.com/javacard/devkit/">java.sun.com</a>, можно использовать меню Tools > Java Platforms, чтобы добавить платформу Java Card в среду IDE так же, как добавляется любая платформа Java.</p> |
| <p><img alt="Установка платформы Java Card" src="../../../images_www/articles/74/javacard/installPlatform.png"></p> |
| <p>После настройки платформа Java Card появляется на вкладке "Службы" в среде IDE. Если вкладка "Службы" не отображается, выберите пункт "Службы" в меню "Окна". </p> |
| <p><img alt="Установленные платформы и устройства Java Card" src="../../../images_www/articles/74/javacard/services-tab.png"></p> |
| <p> На одной "платформе" может быть несколько "устройств". Проект развертывается на конкретном устройстве конкретной платформы. </p> |
| <h2><a name="types"></a>Общие сведения о типах проектов Java Card</h2> |
| |
| <p> |
| В меню "Файл" выберите пункт "Создать" и выберите категорию Java Card. Можно создавать несколько типов проектов Java Card. Все они собираются с помощью <a href="http://ant.apache.org/">Apache Ant</a>, так же, как проекты NetBeans Java SE. |
| </p> |
| <p><img alt="Типы проектов Java Card в NetBeans" src="../../../images_www/articles/74/javacard/choose-project-type.png"> </p> |
| <p> |
| Классический апплет — традиционный апплет Java Card для небольших устройств, как апплеты в Java Card 2.0 и ранее. Классическая библиотека подобна классическим проектам апплетов, но без апплета, просто код, который нужно поместить на устройство, который может разделяться между апплетами. |
| </p> |
| <p> |
| Расширенный апплет и библиотека — то же самое с расширенным API Java Card 3.0, т.е. с возможностью использования java.lang.String и прочего. Загрузочный путь к классам различается для классических и расширенных проектов, поэтому, например, автозавершение кода не будет предлагать java.lang.String в классических проектах, но будет в расширенных. |
| </p> |
| <p><img alt="Создание проекта апплета Java Card" src="../../../images_www/articles/74/javacard/create-applet-app.png" width="600"> </p> |
| <p> |
| Проекты веб-приложений - это наиболее интересная и захватывающая функция Java Card 3.0. Пользователи получают проект схемы с реализованным сервлетом и доступ к полному API сервлета. С этими приложениями проще работать, чем с апплетами — на стороне клиента не требуется дополнительный код для взаимодействия с устройством, достаточно веб-браузера. Приложения можно тестировать локально с помощью Reference Implementation и веб-браузера. |
| </p> |
| <p><img alt="Создание проекта веб-приложения Java Card" src="../../../images_www/articles/74/javacard/create-web-app.png" width="600"> </p> |
| |
| |
| <h2><a name="projects">Работа с проектом</a></h2> |
| |
| <p>В этом учебном курсе будет создан веб-проект.</p> |
| <p> В новом веб-проекте введите имя проекта "Веб-приложение Card" и укажите путь к проектам NetBeans. Нажмите кнопку "Готово". Проект отображается на вкладке "Проект". |
| </p> |
| <p> |
| Щелкните правой кнопкой мыши узел проекта на вкладке "Проект" и выберите в контекстном меню пункт "Свойства". В разделе "Выполнить" окна "Свойства проекта" можно изменить платформу и устройство для развертывания проекта. Нажмите кнопку "Закрыть" для сохранения изменений. |
| </p> |
| <p> |
| Работа с веб-приложением Java Card похожа на работу с любым веб-приложением, развертываемом в контейнере сервлетов. Нажмите кнопку "Выполнить" на панели инструментов для запуска примера "Hello World". При запуске веб-приложения Java Card открывается веб-браузер с выходным сообщением сервлета: <tt>Hello from webapplication1.MyServlet</tt>. |
| </p> |
| <p><img alt="Редактирование кода в проекте веб-приложения Java Card" src="../../../images_www/articles/74/javacard/editor.png" width="600"> </p> |
| <p> |
| При запуске проектов с типом апплетов в IDE NetBeans можно использовать два удобных интерфейса: вывод данных в командной строке и консоль Java Card. Консоль используется для взаимодействия с апплетом. Можно отправлять данные в шестнадцатеричном формате и получать ответные сообщения. |
| </p> |
| <p> |
| Совет. RI содержит дополнительные образцы проектов, которые готовы к открытию и запуску в IDE NetBeans. |
| </p> |
| <p><img alt="Свойства выполнения проекта Java Card" src="../../../images_www/articles/74/javacard/run-customizer.png" width="600"> </p> |
| |
| <h2><a name="special">Использование особых возможностей подключаемых модулей</a></h2> |
| <p> |
| Java Card включает два "магических" понятия, отсутствующих в других платформах Java: |
| </p> |
| <dl> |
| <dt><strong>Идентификаторы приложений (AID)</strong></dt> |
| <dd>Эти уникальные идентификаторы выглядят следующим образом: //aid//720A75E082/0058AEFC20. Первая часть шестнадцатеричного кода — идентификатор поставщика (его можно получить в <a href="http://iso.org/">International Standards Organization (ISO)</a>); вторая часть — уникальное значение, выбранное разработчиком. Идентификаторы AID используются для идентификации классов апплетов, пакетов Java (только для классических апплетов и библиотек), уникальных экземпляров апплетов (можно развертывать один апплет многократно на одном устройстве — идентификатор AID экземпляров будет использоваться для выбора апплета). |
| </dd> |
| <dt><strong>Сценарии APDU</strong></dt> |
| <dd>Это сценарии отправки данных апплету. Они содержат большое количество набранного вручную шестнадцатеричного кода; сценарий должен выбрать конкретный экземпляр апплета и отправить ему данные. Вместо написания сценария можно использовать консоль Java Card. |
| </dd> |
| </dl> |
| <p> |
| Хотя эти два момента довольно сложны, подключаемые модули NetBeans помогают абстрагироваться от этих сложностей следующим образом: |
| </p> |
| <ul> |
| <li> |
| <p> |
| При создании проекта автоматически создаются корректные значения AID апплета, AID классического пакета и один AID экземпляра. |
| </p> |
| </li><li> |
| <p> |
| При переходе на вкладку 'Апплеты' диалогового окна 'Свойства проекта', проект сканирует его путь к классам для всех найденных подклассов апплета карт Java Card: |
| </p> |
| <p><img alt="Поиск подклассов апплета в проекте Java Card" src="../../../images_www/articles/74/javacard/customize-applets-pre.png" width="600"></p> |
| </li><li> |
| <p> |
| После их обнаружения можно выбрать в диалоговом окне апплеты, которые действительно развертываются, и настроить значения AID, параметры развертывания и так далее. Введенные значения проверяются средой IDE, поэтому ввести некорректные данные сложно. |
| </p> |
| <p><img alt="Настройка развертывания апплетов в проекте Java Card" src="../../../images_www/articles/74/javacard/customize-applets.png" width="600"> </p> |
| </li><li> |
| <p> |
| Если требуется развертывать два экземпляра одного апплета, можно настроить и такое поведение. Однако в простых случаях, когда нужно развертывать только один экземпляр, нет необходимости задумываться об этом. |
| </p> |
| <p><img alt="Настройка развернутых экземпляров апплетов для проекта Java Card NetBeans " src="../../../images_www/articles/74/javacard/customize-instances.png" width="600"></p> |
| </li><li> |
| <p> |
| Для тестирования апплетов не нужно писать вручную сценарии APDU — можно использовать консоль для прямого взаимодействия с апплетами. |
| </p> |
| <p><img alt="Открытие консоли APDU" src="../../../images_www/articles/74/javacard/open-console.png"></p> |
| <p> <img alt="Консоль APDU" src="../../../images_www/articles/74/javacard/shell.png"> </p> |
| </li><li> |
| <p> |
| "AID пакета" для классических проектов (в которых может быть только один пакет Java) также обрабатывается средой IDE, но есть возможность настройки. |
| </p> |
| <p><img alt="Настройка AID классического пакета" src="../../../images_www/articles/74/javacard/create-project-package-aid.png" width="600"> </p> |
| </li><li> |
| <p> |
| Часть всех значений AID в проектах — присвоенный организацией ISO ID поставщика (RID). Для ускорения начала работы среда IDE генерирует случайное значение RID, пригодное для разработки и тестирования. При наличии официального RID, можно ввести его в меню "Сервис > Параметры", и оно будет использоваться для всех новых проектов. Нажмите кнопку "Создать" в окне "Свойства проекта" для обновления значений в существующих проектах. |
| </p> |
| <p><img alt="Настройка глобального RID, используемого всеми AID для проектов Java Card" src="../../../images_www/articles/74/javacard/global-rid.png" width="600"></p> |
| </li> |
| </ul> |
| |
| <h2><a name="sdk">Взаимодействие с пакетами SDK сторонних поставщиков</a></h2> |
| <p> |
| В настоящее время средствами поддерживается только Java Card 3.0.2 Reference Implementation, но они имеют расширяемый API для интеграции карт поставщиков. Определения платформы и устройства — простые файлы свойств, импортируемые сценарием сборки. |
| </p> |
| <p> |
| Развертывание осуществляется с помощью задач Ant, предоставляемых поставщиком смарт-карт. Это означает, что созданные проекты могут выполняться вне среды IDE и жесткая привязка к среде отсутствует. Исходный код задач Ant, являющихся частью Java Card RI, можно загрузить на <a href="http://kenai.com/projects/javacard">портале проекта Java Card</a> вместе с примерами проектов NetBeans. |
| </p> |
| <p> |
| Вы поставщик смарт-карт и создали средства развертывания Java Card? Обратитесь к автору подключаемого модуля <a href="mailto:tboudreau@sun.com">Тиму Бодро (Tim Boudreau)</a> для получения сведений <a href="http://wiki.netbeans.org/JavaCardPlatformIntegration">об интеграции смарт-карт</a>. Интеграция может осуществляться на нескольких уровнях, в зависимости от потребностей в поддержке карты в среде IDE. |
| </p> |
| |
| <div class="feedback-box"><a href="/about/contact_form.html?to=6&subject=NetBeans%20Java%20Card%20Development%20Quick%20Start%20Guide">Отправить отзыв по этому учебному курсу</a></div> |
| <br style="clear:both;" /> |
| |
| <h2><a name="related"></a>Дополнительные ссылки</h2> |
| <ul> |
| <li> Авторами этих модулей по большей части является <a href="https://blogs.oracle.com/javacard/">Анки Нелатуру (Anki Nelaturu)</a> и остальные члены команды Java Card. </li> |
| <li><a href="http://java.sun.com/javacard">Официальный портал Java Card Sun</a> — новости, инструментарии разработчика, справочные ресурсы, спецификации, разделы часто задаваемых вопросов. </li> |
| <li><a href="http://kenai.com/projects/javacard/pages/Home">Портал проекта Java Card</a> — исходный код, примеры проектов, форумы, документация. </li> |
| <li> <a href="http://wiki.netbeans.org/JavaCardPlatformIntegration">Интеграция платформы для поставщиков карт</a></li> |
| <li> <a href="http://java.sun.com/developer/technicalArticles/javacard/javacard-servlets/">Развертывание сервлетов на смарт-картах: переносные веб-серверы с Java Card 3.0</a></li> |
| </ul> |
| </body> |
| </html> |