Java Card

Материал из Википедии — свободной энциклопедии

Java Card — версия Java-платформы для устройств с крайне ограниченными вычислительными ресурсами. По сравнению с другими версиями Java изменен байткод, требования к исполняющей платформе, состав стандартных библиотек.

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

Java Card дает возможность безопасным образом устанавливать и исполнять небольшие

SIM-картах и банкоматах. Разработана компанией Schlumberger[1], представлена публике 29 октября 1996 года[2] несколькими компаниями, включая тогдашнее подразделение Schlumberger по производству смарт-карт (теперь компания Gemalto). Программная платформа Java Card описывается спецификациями, разрабатываемыми компанией Sun Microsystems[3]. Кроме того, GlobalPlatform (организация по стандартизации) разрабатывает стандарты для безопасной установки апплетов
Java Card на устройства.

Портируемость

Java Card описывает стандартную среду исполнения на

интерфейсов
(например, коммуникационных протоколов или криптографических алгоритмов).

Java Card OpenPlatform (
JCOP
)

JCVM
.

Безопасность

Безопасность данных на смарт-картах была одним из основных приоритетов при разработке Java Card. Она обеспечивается различными свойствами платформы:

  • Сокрытие данных. Приложения запускаются в изолированной среде (
    интерфейсы
    .
  • Экран (экранирование) апплетов (англ. Application Firewall). Несколько апплетов может быть активно одновременно, однако они изолированы по модели «песочницы»: приложению выделяется контекст, к данным которого оно имеет доступ. Данные других приложений ограждены экраном. Для обеспечения совместной работы нескольких приложений есть механизм переключения контекстов, который выполняется через процесс, контролируемый виртуальной машиной [4].
  • цифровые подписи, генерирование электронных ключей
    и обмен ими.
  • Механизм апплетов. Апплет Java Card — это, по сути, конечный автомат, который обрабатывает входящие команды и отвечает, посылая данные или возвращая информацию о статусе.

Отличия Java Card от Java

Язык

На уровне языка Java Card — это подмножество более полных платформ

перечислимые типы (enum), многомерные массивы, финализаторы, клонирование объектов, потоки
.

Байткод

Байткод, выполняемый виртуальной машиной Java Card, функционально является подмножеством

Java SE
, полученный компилированием того же исходного кода. Такая экономия памяти смарт-карты имеет и обратную сторону: отсутствие поддержки некоторых свойств языка (как описано выше) и ограничение по размеру апплета. Существуют возможности обойти ограничение на размер: например, разделив код приложения на пакеты не более 64 кБ каждый.

Разработка

Приемы программирования, используемые в типичном приложении Java Card, значительно отличаются от применяемых в Java SE. Однако тот факт, что Java Card является строгим подмножеством языка Java, значительно ускоряет обучение этой технологии, а также позволяет использовать среду Java SE для разработки и отладки приложений. Более того, можно совместно запускать и отлаживать в одной среде и приложение для Java Card, и его серверную часть, которую предполагается выполнять на PC.

Однако при этом следует периодически проверять, что приложение соответствует ограничениям Java Card, компилируя его в соответствующий байткод, а также проверять его работу на настоящей смарткарте, чтобы получить представление о производительности реального устройства.

Ссылки

См. также

Примечания

  1. 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
  2. Sun Microsystems Announces Java Card API , Business Wire, Oct. 29, 1996
  3. Обзор платформы Java Card на сайте компании Sun. Дата обращения: 2 августа 2008. Архивировано 20 июля 2008 года.
  4. Java Card Technology FAQs. Дата обращения: 8 августа 2008. Архивировано 29 мая 2008 года.