• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Java的魔力:字节码

发布: 2007-7-14 21:19 | 作者: 佚名    | 来源: 网络转载     | 查看: 36次 | 进入软件测试论坛讨论

领测软件测试网      Java 解决上述两个问题——安全性和可移植性的关键在于Java 编译器的输出并不是可执行的代码,而是字节码(bytecode )。字节码是一套设计用来在Java 运行时系统下执行的高度优化的指令集,该Java 运行时系统称为Java 虚拟机(JavaVirtual Machine,JVM)。在其标准形式下,JVM是一个字节码解释器。这可能有点让人吃惊,因为像C++之类语言的编译结果是可执行的代码。事实上,出于对性能的考虑,许多现代语言都被设计为编译型,而不是解释型。然而,正是通过JVM运行Java 程序才有助于解决在Inte.net 上下载程序的主要问题。这就是Java 输出字节码的原因。
    将一个Java 程序翻译成字节码,有助于它更容易地在一个大范围的环境下运行程序。原因非常直接:只要在各种平台上都实现Java 虚拟机就可以了。在一个给定的系统中,只要系统运行包存在,任何Java 程序就可以在该系统上运行。记住:尽管不同平台的Java 虚拟机的细节有所不同,但它们都解释同样的Java 字节码。如果一个Java 程序被编译为本机代码,那么对于连接到Internet 上的每一种CPU 类型,都要有该程序的对应版本。这当然不是一个可行的解决方案。因此,对字节码进行解释是编写真正可移植性程序的最容易的方法。
    对Java 程序进行解释也有助于它的安全性。因为每个Java 程序的运行都在Java 虚拟机的控制之下,Java 虚拟机可以包含这个程序并且能阻止它在系统之外产生副作用。正如你将看到的,Java 语言特有的某些限制增强了它的安全性。
    被解释的程序的运行速度通常确实会比同一个程序被编译为可执行代码的运行速度慢一些。但是对Java 来说,这两者之间的差别不太大。使用字节码能够使Java 运行时系统的程序执行速度比你想象的快得多。
    尽管Java 被设计为解释执行的程序,但是在技术上Java 并不妨碍动态将字节码编译为本机代码。SUN 公司在Java 2 发行版中提供了一个字节码编译器——JIT(Just In Time,即时)。JIT 是Java 虚拟机的一部分,它根据需要、一部分一部分地将字节码实时编译为可执行代码。它不能将整个Java 序一次性全部编译为可执行的代码,因为Java 要执行各种检查,而这些检查只有在运行时才执行。记住这一点是很重要的,因为JIT 只编译它运行时需要的代码。尽管如此,这种即时编译执行的方法仍然使性能得到较大提高。即使对字节码进行动态编译后,Java 程序的可移植性和安全性仍能得到保证,因为运行时系统(该系统执行编译)仍然能够控制Java 程序的运行环境。不管Java 程序被按照传统方式解释为字节码,还是被动态编译为可执行代码,其功能是相同的。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网