Почему Java Card 2.x (теперь Classic Edition) не имеет реализации Map?

Конечно, в Java SE HashMap есть "дорогая" хеш-функция, и ее переменный размер может потенциально вызвать ошибки нехватки памяти, но как насчет карты постоянного размера с простым хэшированием относительно ее постоянного размера?

1 ответ

Ресурсы ОЗУ / ЭСППЗУ очень ограничены на смарт-картах (или были очень ограничены в течение срока действия версии Javacard 2.x, даже если сейчас дела обстоят лучше, было несколько КБ ОЗУ и десятки... пары сотен КБ для ОС, javacard libs и клиентское приложение и данные). Javacard 2.1 был там в 1999 году...

Поэтому API-интерфейсы Javacard направлены на предоставление доступа к основным функциям смарт-карт: обмен данными, транзакции, криптография, управление приложениями и т. Д., И все эти концепции более высокого уровня, такие как карты, были оставлены для минимизации потребления памяти для кода, для статических данных или времени выполнения.

Также вы не можете легко исправить ошибки на ОС смарт-карт и стандартных библиотеках javacard (большинство из них были в ROM в начале 200-х годов). Больше API гаджетов = увеличивает риск проблем и стоимость развертывания и тестирования.

Кстати, найдено в спецификации Javacard 222 VM, раздел 21:

"" "Почему требуется подмножество

Было бы идеально, если бы программы для смарт-карт могли быть написаны с использованием всего языка программирования Java, но полная реализация виртуальной машины Java слишком велика, чтобы вместить ее даже на самые передовые устройства с ограниченными ресурсами, доступные сегодня.

Типичное устройство с ограниченными ресурсами имеет порядка 1,2 КБ ОЗУ, 16 КБ энергонезависимой памяти (EEPROM или флэш-память) и 32–48 КБ ПЗУ. Код для реализации операций со строками, арифметики с плавающей запятой одинарной и двойной точности и управления потоками будет больше, чем пространство ПЗУ на таком устройстве. Даже если бы его можно было подогнать, не осталось бы места для библиотек классов или кода приложения. Ресурсы оперативной памяти также очень ограничены. Единственный возможный вариант - реализовать технологию Java Card как подмножество платформы Java."""

Другие вопросы по тегам