Java Card
Java Card — технология, дающая возможность безопасным образом устанавливать и исполнять небольшие Java приложения (апплеты) на смарт-картах и других устройствах с весьма ограниченным объемом памяти. Среди платформ Java, Java Card является наименее требовательной к целевому устройству, но при этом обладает наименьшими возможностями. Эта платформа позволяет поставщику программировать устройства и делать их адаптированными под конкретное применение. Java Card широко используется в SIM-картах и банкоматах. Разработана компанией Шлюмберже[1], представлена публике 29 октября 1996 года[2] несколькими компаниями, включая тогдашнее подразделение Шлюмберже по производству смарт-карт (теперь компания Gemalto). Программная платформа Java Card описыватся спецификациями, разрабатываемыми компанией Sun Microsystems[3]. Кроме того, GlobalPlatform (организация по стандартизации) разрабатывает стандарты для безопасной установки апплетов Java Card на устройства.
Портируемость
Java Card описывает стандартную среду исполнения на смарт-картах с целью дать возможность одному и тому же приложению работать на различных устройствах, так же как апплеты Java SE/Java EE исполняются на различных по программной и аппаратной части компьютерах, а мидлеты Java ME - на различных телефонах. Как и в более сложных платформах Java, это достигается комбинацией виртуальной машины (Java Card Virtual Machine), и стандартизированной библиотеки классов, что позволяет апплету значительно абстрагироваться от особенностей конкретных моделей смарт-карт. Однако, это все же не дает полной гарантии переносимости приложения на любую смарт-карту, поскольку остаются такие факторы, как объем памяти, производительность, или доступность особых интерфейсов (например, коммуникационных протоколов или криптографических алгоритмов).
Безопасность
Безопасность данных на смарт-картах была одним из основных приоритетов при разработке Java Card. Она обеспечивается различными свойствами платформы:
- Cокрытие данных. Приложения запускаются в изолированной среде (виртуальная машина Java Card), и могут получать доступ к операционной системе и аппаратному обеспечению только через специализированные интерфейсы.
- Экран апплетов (англ. Application Firewall). Несколько апплетов может быть активно одновременно, однако они изолированы по модели «песочницы»: приложению выделяется контекст, к данным которого оно имеет доступ. Данные других приложений ограждены экраном. Для обеспечения совместной работы нескольких приложений есть механизм переключения контекстов, который выполняется через процесс, контролируемый виртуальной машиной [4].
- Криптография. Поддерживаются популярные алгоритмы шифрования, такие как DES, 3DES, AES, RSA. Также поддерживаются другие криптографические сервисы: цифровые подписи, генерирование электронных ключей и обмен ими.
- Механизм апплетов. Апплет Java Card — это по сути Конечный автомат, который обрабатывает входящие команды и отвечает, посылая данные или возвращая информацию о статусе.
Отличия Java Card от Java
Язык
На уровне языка Java Card — это подмножество более полных платформ Java: все языковые конструкции Java Card присутствуют в Java и ведут себя в точности так же. Более того, что при стандартной последовательности компиляции используется обычный компилятор Java ('javac.exe') без каких-либо специальных опций, и лишь потом результат обрабатывается специфичной для Java Card программой, чтобы получить файл, который можно будет установить на смарт-карту. Однако, многие возможности языка Java не поддерживаются в Java Card, напимер, типы char, double, float и long, ключевое слово transient, перечислимые типы (enum), массивы размерности больше 1, финализаторы, клонирование объектов, потоки.
Байткод
Байткод, выполняемый виртуальной машиной Java Card, функционально является подмножеством Байткода Java, однако он кодируется иным образом для минимизации размера приложения. Таким образом, апплет Java Card обычно занимает меньше места, чем гипотетический апплет Java SE, полученный компилированием того же исходного кода. Такая экономия памяти смарт-карты имеет и обратную сторону: отсутствие поддержки некоторых свойств языка (как описано выше), и ограничение по размеру апплета. Существуют возможности обойти ограничение на размер: например, разделив код приложения на пакеты не более 64 кБ каждый
Разработка
Приемы программирования, используемые в типичном приложении Java Card, значительно отличаются от применяемых в Java SE. Однако, тот факт, что Java Card является строгим подмножеством языка Java, значительно ускоряет обучение этой технологии, а также позволяет использовать среду Java SE для разработки и отладки приложений. Более того, можно совместно запускать и отлаживать в одной среде и приложение для Java Card и его серверную часть, которую предполагается выполнять на PC.
Однако, при этом следует периодически проверять, что приложение соответствует ограничениям Java Card, компилируя его в соответствующий байткод, а также проверять его работу на настоящей смарткарте, чтобы получить представление о производительности реального устройства.
Ссылки
- developers.sun.ru — Java Card на российском портале разработчиков Sun Microsystems
- Опубликована спецификация Java Card 3.0
Примечания
- ↑ U.S. provisional application Serial No. 60/029,057, filed Oct. 25, 1996, non-provisional application No. 957512 filed on 10/24/1997, issued as patent
- ↑ Sun Microsystems Announces Java Card API , Business Wire, Oct. 29, 1996
- ↑ Обзор платформы Java Card на сайте компании Sun
- ↑ http://java.sun.com/javacard/faqs/
Java |
||
---|---|---|
Платформы | Java Card · Java ME · Java SE · Java EE | Файл:Wave.svg |
Технологии Sun | Java · Java Development Kit · OpenJDK · WTK · Java Virtual Machine · JavaFX · JAXP | |
Основные сторонние технологии | GNU Classpath · GNU компилятор для Java · Kaffe · TopLink · Apache Harmony · Apache Struts · Spring Framework · Hibernate · JBoss · Processing · Dozer · AspectJ | |
История | История версий Java · Критика Java · Java Community Process · Sun Microsystems · Свободные реализации Java | |
Свойства языка | Байткод · Синтаксис · Апплеты · Сервлеты · Мидлеты · JavaServer Pages · Web Start · Enterprise JavaBeans | |
Скриптовые языки | Java Tcl · Jython · JRuby · BeanShell · Groovy · Judoscript · Sleep · Bean Scripting Framework · Yoix · Rhino | |
Конференции Java | JavaOne |
ca:Java Card de:Java Card en:Java Card es:Java Card fa:جاوا کارت it:Java Card ja:Javaカード pt:Java Card zh:Java Card
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....