位置:51电子网 » 技术资料 » 其它综合

能下载程序代码的Java虚拟机(JVM)

发布时间:2008/11/19 0:00:00 访问次数:977

  java虚拟机是java技术的基本的要素,它模拟java处理机并可在任意的有足够处理能力的处理器上用软件 来实现。如果希望在一种新类型的处理器上运行java字节码,则必须把java虚拟机jvm(jat,a virtual machine)移植到这种处理器去。它通常用c编程语言来写,所以实际的移植所需只不过是少量的修改并重新 编译源代码。java虚拟机在pc机上的大小约在100~200kb之间,与之相比智能卡的jvm的大小可参1阅表。


表1 po和智能卡java虚拟机大小的比较

  java的虚拟机有着一个真正的处理器的所有部件,有其自已的按字节码形式的指令组,也有诸如程序计数 器和累加器之类的寄存器。要处理的数据以类文件的形式传送给虚拟机。文件中含有固定常数,执行的方法 和不同附加信息的字节码。表2给出了类文件的结构概要。

  java字节码只占有很少量的空间,紧凑的如同机器代码。由于存在着虚拟机和用本机代码的机器相比总的 存储空间余额要坏些,差别随着程序代码量相对虚拟机(vm)变小而自然增大。

  字节码基本上非常类似于普通处理器的机器指令,例如有堆栈管理、逻辑和算术运算、访问虚拟java处理 器寄存器的命令、乃至于访问数组的方法。jim lindholm和frank yellin[lindholm 97[详尽地描述了 java虚拟机和字节码。


表2 类文件的结构概要

  由于智能卡微控制器系统资源的严重限制,和pc机原来的java vm比起来java卡vm必须做某些剪裁。java卡 vm不具有收集不再需要的自动归还的存储碎片集中存储器的能力。对类文件的支持也大大降低。在智能卡中 只有少量数据类型可用,而字节码本身也从149条指令缩减为16条。相比之下,智能卡jyivi的功能限制,如 表3、表4和表5所示。

  表3 和完整的java相比,智能卡java的功能限制

  表4 智能卡java的数据类型,所需的存储且和数值范围(数据类型int是可选的)

  表5 智能卡java的限制摘要(目前展示的限制并不会限制智能卡软件的开发)

  智能卡的卡上java vm的程序大小对于8051机器代码用c语言建立时大约为6~8 kb。另外还需要用约200字节的bam,具有javacard。framework和javacardx.frame 1o「ork类的api主要由java字节码组成,大约要占3~4 kb的存储量。此外,至少需要有一个具有传输协议,加密算法和许多与硬件紧密相关的功能的基本操作系统,当用汇编语言编程时,为此所需的编码量的范围在6~8 kb之间。

  这个比较小的程序的正确性有着非同寻常的重大意义,因为在java vm中的一个差错或安全漏洞就会破坏把java结合到智能卡以提供一安全环境的整个观念。设计和实现必须在很大程度上是无差错的。通常用itsec和通用准则评估来核实这一点。当然,java vm较少的程序代码明显地简化了这一过程,特别是由于可以形式化描述vm的完整的功能,许多java智能卡的制造商已经宣布了由认证方来测试他们的实现的意图,在这种情况下的目标是itsec⒘认证。

  由于智能卡的存储量较少,有必要把java虚拟机分为卡内部分和卡外部分。很容易在智能卡之外的卡外vm中进行静态测试而不影响其性能也不会失掉安全性。vm两部分的链接由cap格式的数据来形成,它们必须受到加密保护,最好是采用数字签名,使其在传输时不会受到篡改。否则将会在约定的起点出现一个攻击者,因为使用受操纵的数据有可能绕开卡内vm的安全机制。

  java是面向堆栈的,当然就需要堆栈(stack)以及堆阵(heap)。在智能卡中为每个支程序分别建立和管理其堆栈。堆栈主要用于在调用方法时传送数据,而堆阵则充当对象的存储区。堆栈的一般大小为200~300字节的ram,而堆阵则为12kb的eeprom。比较小的支程序,无论如何可很容易地把堆栈控制在50~60字节而堆阵则为数干字节。

  java ym包含了四个基本部分:字节码校验器;装人器:字节码解释器和安全管理器;其安排如图1所示。

  字节码校验器的任务是执行对传送给java vm的类文件的多种静态检验。字节码校验器首先检查文件格式。接着,它检查常数组合,检查字节码的语法正确性,并检查方法的变量以及对象继承的层次。然而也可承担其他审查。这些都由frank yellin[yellin 96]详细做了描述。


图1 java卡虚拟机的各个部件

  在字节码校验器结束后,装入器取得已校验的数据并以cap格式把它们传送给智能卡中实际的解释器,为了安全起见,

  java虚拟机是java技术的基本的要素,它模拟java处理机并可在任意的有足够处理能力的处理器上用软件 来实现。如果希望在一种新类型的处理器上运行java字节码,则必须把java虚拟机jvm(jat,a virtual machine)移植到这种处理器去。它通常用c编程语言来写,所以实际的移植所需只不过是少量的修改并重新 编译源代码。java虚拟机在pc机上的大小约在100~200kb之间,与之相比智能卡的jvm的大小可参1阅表。


表1 po和智能卡java虚拟机大小的比较

  java的虚拟机有着一个真正的处理器的所有部件,有其自已的按字节码形式的指令组,也有诸如程序计数 器和累加器之类的寄存器。要处理的数据以类文件的形式传送给虚拟机。文件中含有固定常数,执行的方法 和不同附加信息的字节码。表2给出了类文件的结构概要。

  java字节码只占有很少量的空间,紧凑的如同机器代码。由于存在着虚拟机和用本机代码的机器相比总的 存储空间余额要坏些,差别随着程序代码量相对虚拟机(vm)变小而自然增大。

  字节码基本上非常类似于普通处理器的机器指令,例如有堆栈管理、逻辑和算术运算、访问虚拟java处理 器寄存器的命令、乃至于访问数组的方法。jim lindholm和frank yellin[lindholm 97[详尽地描述了 java虚拟机和字节码。


表2 类文件的结构概要

  由于智能卡微控制器系统资源的严重限制,和pc机原来的java vm比起来java卡vm必须做某些剪裁。java卡 vm不具有收集不再需要的自动归还的存储碎片集中存储器的能力。对类文件的支持也大大降低。在智能卡中 只有少量数据类型可用,而字节码本身也从149条指令缩减为16条。相比之下,智能卡jyivi的功能限制,如 表3、表4和表5所示。

  表3 和完整的java相比,智能卡java的功能限制

  表4 智能卡java的数据类型,所需的存储且和数值范围(数据类型int是可选的)

  表5 智能卡java的限制摘要(目前展示的限制并不会限制智能卡软件的开发)

  智能卡的卡上java vm的程序大小对于8051机器代码用c语言建立时大约为6~8 kb。另外还需要用约200字节的bam,具有javacard。framework和javacardx.frame 1o「ork类的api主要由java字节码组成,大约要占3~4 kb的存储量。此外,至少需要有一个具有传输协议,加密算法和许多与硬件紧密相关的功能的基本操作系统,当用汇编语言编程时,为此所需的编码量的范围在6~8 kb之间。

  这个比较小的程序的正确性有着非同寻常的重大意义,因为在java vm中的一个差错或安全漏洞就会破坏把java结合到智能卡以提供一安全环境的整个观念。设计和实现必须在很大程度上是无差错的。通常用itsec和通用准则评估来核实这一点。当然,java vm较少的程序代码明显地简化了这一过程,特别是由于可以形式化描述vm的完整的功能,许多java智能卡的制造商已经宣布了由认证方来测试他们的实现的意图,在这种情况下的目标是itsec⒘认证。

  由于智能卡的存储量较少,有必要把java虚拟机分为卡内部分和卡外部分。很容易在智能卡之外的卡外vm中进行静态测试而不影响其性能也不会失掉安全性。vm两部分的链接由cap格式的数据来形成,它们必须受到加密保护,最好是采用数字签名,使其在传输时不会受到篡改。否则将会在约定的起点出现一个攻击者,因为使用受操纵的数据有可能绕开卡内vm的安全机制。

  java是面向堆栈的,当然就需要堆栈(stack)以及堆阵(heap)。在智能卡中为每个支程序分别建立和管理其堆栈。堆栈主要用于在调用方法时传送数据,而堆阵则充当对象的存储区。堆栈的一般大小为200~300字节的ram,而堆阵则为12kb的eeprom。比较小的支程序,无论如何可很容易地把堆栈控制在50~60字节而堆阵则为数干字节。

  java ym包含了四个基本部分:字节码校验器;装人器:字节码解释器和安全管理器;其安排如图1所示。

  字节码校验器的任务是执行对传送给java vm的类文件的多种静态检验。字节码校验器首先检查文件格式。接着,它检查常数组合,检查字节码的语法正确性,并检查方法的变量以及对象继承的层次。然而也可承担其他审查。这些都由frank yellin[yellin 96]详细做了描述。


图1 java卡虚拟机的各个部件

  在字节码校验器结束后,装入器取得已校验的数据并以cap格式把它们传送给智能卡中实际的解释器,为了安全起见,

相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!