JVM学习(一)

      前几天在图书馆的书架上看到了这本很旧的书——深入java虚拟机(Inside theJava Virtual Machine,Second Edition),简单的翻了下确实 不错,因此回去后也把电脑桌面上那个jvm资料的快捷方式删掉,决定好好学习下这本书,下面写到的内容大为从这本书上摘录到的内容,写出来大家一起学习进步。

l  Java体系的重要特性:平台无关性,安全性,网络移动性

l  Java体系结构包括四个独立但相关的技术 :

Ø  JVM

JVM的主要任务是装载class文件,并且执行其中的字节码。字节码是由JVM中的执行引擎来执行的。不同的JVM,执行引擎可能被设计 的很不同。常见的引擎有:一次性执行引擎,这种引擎直接解释执行bytecode; JIT编译器,这种引擎会在将第一次执行的字节码编译成本地机器代码,编译出的本地代码会被缓存,当方法以后被调用 的时候 可以重用;第三种引擎是自适应优化器,在这种方法里,虚拟机开始的时候解释字节码,但是会监视运行中程序 的代码的执行,并且记录下使用最频繁的代码段,程序运行的时候,虚拟机只把那些活动最频繁的代码编译成本地代码。

Ø  Java class文件

独立于底层主机平台的二进制文件,它是JVM的“机器语言”。

Ø  Java API

Java API的class文件与本地平台密切相关,为了访问本地资源 ,Java API调用了本地方法。

   正是由于在每个特定的主机平台上都 明确地实现了JVM和Java API,才使Java程序成为平台无关性的程序。

   Java API与JVM一起构成了Java的运行时系统,它们也被 称为Java平台。

Ø  Java程序设计语言

l  Java体系结构的代价

所谓有得必有失,java语言为实现平台无关性,安全性等特性也付出了必要的代价。

Ø  性能(说java不如C++的人大多会拿这个说事,但其实我们知道现代JVM执行引擎的设计已经在一定程度上消除或缩小了这个差距)

Ø  最小公分母问题:即有些特性只在某一个或几个平台 上存在,而有些功能 在某个平台上不存在,但在大多数平台上存在,API的设计者在设计 的时候 必须 有所取舍,有所添加。

Ø  反编译相当容易(这个连360软件管家中都有一个java反编译器)

l  Java安全之——沙箱安全模型

沙箱模型使你可以接收任何来源的代码,但是当来处不可靠来源的代码运行时,沙箱限制它进行可能破系统的任何操作。组成Java沙箱的基本组件包括:

Ø  ClassLoader体系结构——在三个方面对Java的沙箱起作用

a)    它防止恶意代码去干涉善意代码——因为不同的ClassLoader装载的类存在于不同的namespace中,而不同的namespace中的类甚至都 不能察觉到彼此的存在,除非显式的提供了允许它们进行交互的机制(?怎样提供??)

b)    它守护了被 信任的类库的边界

这个主要 是通过ClassLoader的委托机制来实现的。(参考http://www.sunxin.org/forum/thread/19764.html

c)    它将代码归入某类(称为保护域),该类确定了代码可以进行哪些操作。

Ø  class文件检验器

用来保证装载的class文件内容有正确的内部结构,它在执行前对字节码进行一次分析,每遇到一个跳转指令时都 进行检验。

Ø  JVM中内置的安全机制

在运行时强制执行严格的类型规则,自动GC,数组边界检查,空引用检查等。

Ø  安全管理器和Java API

安全管理器是用于保护虚拟机外部资源 不被 虚拟机内部的恶意或者有漏洞的代码侵犯。

      好了,这次就这么多了,感觉还是有很多不懂的地方,路过的大侠还请多多指教。。

                 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值