0

当然,Java SE HashMap 有一个“昂贵”的散列函数,它的可变大小可能会导致内存不足错误,但是相对于其恒定大小具有简单散列的恒定大小 Map 呢?

4

1 回答 1

1

RAM / EEPROM 资源在智能卡上非常有限(或者在 Javacard 2.x 版本范围的生命周期内非常有限,即使现在情况更好了,只有几 KB 的 RAM 和几十……几百 KB 的操作系统,javacard库和客户应用程序和数据)。Javacard 2.1 于 1999 年出现...

因此,Javacard API 专注于提供对智能卡主要功能的访问:通信、交易、加密、应用程序管理等,所有这些更高级别的概念(如地图)都被忽略了,以最大限度地减少代码、数据静态或运行时的内存消耗。

此外,您无法轻松修复智能卡操作系统和 javacard 标准库上的错误(其中大多数在 200X 年代早期就在 ROM 中)。更多小工具 API = 增加问题风险和部署和测试成本。

顺便说一句,在 Javacard 222 VM 规范第 21 节中找到:

""" 为什么需要子集

如果可以使用所有 Java 编程语言编写智能卡程序,那将是理想的,但 Java 虚拟机的完整实现太大而无法适应当今可用的最先进的资源受限设备。

典型的资源受限设备具有大约 1.2K 的 RAM、16K 的非易失性存储器(EEPROM 或闪存)和 32K-48K 的 ROM。用于实现字符串操作、单精度和双精度浮点运算以及线程管理的代码将大于此类设备上的 ROM 空间。即使它可以适应,也不会为类库或应用程序代码留下空间。RAM 资源也非常有限。唯一可行的选择是将 Java Card 技术实现为 Java 平台的子集。"""

于 2011-01-22T00:48:13.040 回答