论坛首页 Java企业应用论坛

深入Java虚拟机(一)

浏览 3099 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-06  
        这两天一直在看一本书《深入Java虚拟机》,从底层来审视整个Java,贯通和学会了很多新的知识点。虽然还没有看完,但已经有了很多的收获。

        Java体系结构包括Java语言、Java API、Java class文件、Java虚拟机四个部分。Java设计的初衷在于实现网络化应用,想避开Microsoft和Intel在桌面领域的统治地位,转而主要应用于嵌入式设备和消费类电器设备,只是没想到现在桌面应用和Web应用反而成了其最火的地方。为了实现其最初设定的目标,即便于网络化应用,Java的设计着重考虑了三个方面:平台无关性、安全性和网络移动性。

        平台无关性,主要通过为不同的操作系统、硬件设备设计不同的Java平台(JVM和Java API),让Java应用程序通过访问Java API而不是本地方法来实现。当然,Java程序编译成平台无关的class文件也是其关键设计。

        安全性,因为考虑到要在网络中下载class文件或调用RMI来实现网络化应用,因此如何避免恶意的Java代码破坏本地系统成为Java安全性设计的一个关键。Java的安全性通过沙箱体系来实现,沙箱体系包括:类装载器(class loader)结构、class文件检验器、内置于Java虚拟机和Java语言的安全特性、安全管理器及Java API。沙箱体系结构也是随着Java平台的版本而发展的,从特别严格的1.0版本,到允许数字签名的1.1版本,到后来基于代码签名和认证的策略体系的1.2版本。详细内容就不罗列了。

        网络移动性。平台无关性和安全性,解决了网络计算环境下软件开发人员所面临的两大挑战。而网络移动性则使得Java可以把握网络所带来的巨大机遇。网络移动性包含代码移动性和对象移动性两个方面。代码移动性是指Java应用程序可以通过网络动态下载java class文件,并集成到应用程序中,使得Java应用程序的功能可以在运行时可动态扩展,这样非常便于程序版本的发布和升级,现在微软的Smart Client就是基于同样的设计理念。代码移动性是通过用户自定义类装载器来实现的。对象移动性是指Java应用程序可以通过RMI、Jini等技术手段实现跨JVM的方法调用,现在的SOA、EJB、WebService都应该是这个概念的延伸和发展。

       书中提到:“理解Java体系结构的关键,就在于理解代码和对象的网络移动能力是Java设计的中心。虽然Java可以提供很多有价值的优点(比如提高程序员生产力,提高程序的健壮性),甚至有时候你根本不会和远程的网络发生关系,但Java体系的主要焦点还是网络。”

       由此,我们可以看出在90年代Java的设计初衷,虽然现在看来这些理念已经不足以支撑现代的应用了,但是在那个时代,这些网络化应用的设计思想是非常先进的,后来的很多技术正式这些思想的延伸。

       具体的内容,大家可以学习《深入Java虚拟机》(Inside the Java Virtual Machine, Second Edition),作者 Bill Venners(美),翻译 曹晓刚 蒋靖,机械工业出版社。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics