java虚拟机:java的平台无关性,安全性和网络移动性

平台无关性:

依靠java平台来实现。java平台是java程序和硬件环境、操作系统之间的缓冲,通过javaAPI,java程序可以访问底层计算机资源。

java的三个基础API集合:
1、企业版J2EE,包含了在企业服务环境中技术,比如servlet,Enterprise JavaBean
2、标准版J2SE
3、微型版J2ME,包含了非常少的JavaAPI,在不同的行业可以扩展建立自己的API

调用本地方法会使java变得与平台相关。

保证程序的平台无关性采取的步骤:
1、选择目标宿主机,也就是你的程序最后要运行的主机和设备集合
2、在目标宿主机中选择自认为足够好的java平台,在该版本的java平台上编写运行程序(目标运行时环境)
3、对每个目标宿主机,选择一些程序将要运行的java平台实现。
4、编写程序,只通过标准API来访问计算机,不用本地方法
5、编写程序不依赖于垃圾回收机制和线程优先级
6、编写好的界面,能在所有目标宿主机上都运行
7、在所有目标宿主机和目标运行时环境上测试。

安全性:

java的安全机制经过了三个时段
java1.0-基本沙箱,java1.1-代码签名和认证,java1.2-细粒度访问控制

基本沙箱:用户不必管要下哪些代码,下了以后,如果是不信任的,沙箱会限制这个代码的行为,比如不能进行硬盘读写,不能访问其来源网址,不能连网,不能创建新的进程,不能装载新的动态连接库
用户可以自定义沙箱,1.1引入了代码签名和认证以后,通过自定义的沙箱可以使得被信任的代码获得更多的访问系统资源的权限。


类装载器中的保护措施:
a. 只有被同一个类加载器加载的(也就是在同一个命名空间的)类之间才能互相访问
b. 防止不可靠的代码用自己的版本替代受信任的类,原因:
    java的类加载流程图为:双亲-孩子类装载委派链
    
    要装载一个类时,首先需要访问其双亲类装载器,知道启动类装载器。启动类装载器先检查是否存在这个类,如果有就装载,没有才会交给标准扩展类装载器,依次向下。所以如果自定义了一个Integer类意图替换API中的Integer类是不成功的。因为装载时,启动类装载器会首先装载了API中的Integer类。

c. 防止在受信任的包中插入恶意的类,比如可以防止恶意代码java.lang.Virus访问java.lang中的受信任类。原因是:
首先理解一个概念:运行时包->由同一个类装载器装载的,属于同一个包的,多个类型的几何。
根据类装载器的装载原理可以知道,java.lang.Virus将最后被网络类装载器装载,但是java.lang包中的其他被信任类是被启动类装载器装载的,因此无法访问java.lang包中的类型和包内可见的成员。

类检查器:包括四趟
第一趟:class文件的结构检查
             检查的是class文件的二进制流。包括class的基本结构,文件的完整性(实际长度与声明长度是否相等)。在类被装载时检查。
第二趟:类型数据的语义检查
             方法描述符是否符合上下文无关文法等等。在连接过程中检查。
第三趟:字节码验证
             验证的对象是字节码(操作码+操作数)。在连接过程中检查。
第四趟:符号引用的验证
             符号间引用是否正确,直观的理解是,一个对象调用的另一个对象的方法是否存在,调用是否正确。如果存在就把符号引用替换为直接引用(例如一个指向类、字段或者方法的指针或者偏移量)。在动态连接时检查。

java内置的安全特性:
a. 类型安全的引用转换
b. 结构化的内存访问(无指针运算)
c. 数组边界检查,空引用检查
d. 自动垃圾回收
安全管理器:
前三个都是保证java程序能安全的运行,不被恶意代码侵犯,但是安全管理器是保证虚拟机外部的资源不被内部运行的恶意或者有漏洞代码侵犯。
主要为:当没有设置安全管理器时,java代码可以直接运行有潜在危险的代码访问外部资源。如果设置了安全管理器时,就需要调用安全管理器中的check方法,如果允许就进行访问,否则该方法将立即终止。

代码签名和认证:
签名和认证可以让用户确认,某些团体担保的class文件是值得信任的,简化沙箱对这段代码实施的限制。jar文件签名的过程:受信任的团体拥有私钥,并把公钥发布给用户

认证过程:

公钥的发布用数字证书的发布,避免第三方替换公钥,数字证书的安全性查看“数字证书原理”

网络移动性:

计算机网络对软件应用的影响:
最初时,计算机软件位于大型计算机系统上,用户登录,通过分时技术得到相应的服务。
后来随着个人计算机的普及,人们往往在个人计算机上就拥有不同的软件。但是面临着软件升级的麻烦。
以后的软件应用方式也许会变成,在需要用软件的时候实时从服务器上下载,这样就可以避免升级的麻烦,也可以享受到最新的版本。(当然用户也会失去一些控制权力,倘若用户不想升级呢)

java的体系结构使得上述可以实现:
首先是java的平台无关性使得软件不需要为网络上众多系统提供不同的版本,其次是java的安全性,使得用户可以放心地从服务器上下载class文件。
同时,java体系结构中还有以下特性使得软件的网络移动性成为可能:
1、java支持动态连接和动态扩展,用软件时,用户不需要一下子下载整个软件,而只需要在需要某个class文件的时候下载即可。
2、java的class文件是紧凑的,这使得一个class文件更小,能更快下载。
3、如果每次都是一个一个class文件下载,而每次下载一个class文件都进行网络连接的三次握手的话,下载时间也会变长。为了解决这个问题,java1.1包含了对jar的支持,一次可以下载多个class文件,减少用户等待时间。尤其是那些在软件运行前就需要的class文件。
java applet就是网络移动性代码的一个很好的实现。

java jini:网络移动对象的实例
理解的过程:可以在网络上注册服务,用户可以查找服务。感觉是java在网络环境下,面向对象编程的又一次改革。

java的网络移动性是java设计的中心,虽然java有很多其他的优点,但是java可以实现在网络下软件的移动性。感觉好强大~~~


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
30个基于JAVA语言设计的工程项目软件源码源代码+WORD论文说明文档资料: JAVA SMART系统-系统框架设计与开发(源代码+论文).rar java Smart系统-题库及试卷管理模块的设计与开发(源代码+论文).rar java一个简单的即时通讯工具的设计与开发(源代码+论文).rar JAVA五子棋手机网络对战游戏的设计与实现(源代码+论文).rar java作业管理系统设计(源代码+论文).rar JAVA医药管理系统设计(论文+源代码).rar JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT).rar JAVA小区物业管理系统(源代码+论文).rar JAVA小区门户网站(源代码+论文).rar Java游戏设计打飞机程序(源代码+论文).rar JAVA物业管理系统设计与实现(论文+源代码).rar JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告).rar java银行帐目管理系统(源代码+论文).rar JAVA音像店租赁管理系统的设计与实现(源代码+论文).rar 基于J2EE的B2C电子商务系统开发(论文+系统+开题报告+文献综述+任务书+答辩PPT+中期报表+外文文献+说明书).rar 基于JAVA CS远程监控系统软件的实现(源代码+论文).rar 基于Java ME无线网络移动端的俄罗斯方块游戏的实现(源代码+论文).rar 基于Java ME无线网络移动端的俄罗斯方块游戏的实现(论文,源代码).rar 基于Javamail的邮件收发系统(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT).rar 基于Java的两个通用安全模块的设计与实现(源代码+论文).rar 基于Java的两个通用安全模块的设计与实现.rar 基于Java的五子棋游戏的设计(源代码+论文).rar 基于Java的在线购物系统的设计与实现(源代码+论文).rar 基于Java的在线购物系统的设计与实现(源代码+系统).rar 基于JAVA的安全电子商务(论文).rar 基于JAVA网络通讯系统设计与实现(论文+系统).rar 基于java的聊天系统的设计于实现(系统+论文).rar 基于Java的视频会议系统(程序+论文).rar 基于Java的远程视频会议系统(系统+论文).rar 基于Misty1算法的加密软件(JAVA)的实现(源代码+论文).rar

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值