`
yefeng_laixi
  • 浏览: 15766 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

深入java虚拟机读书笔记——第一章 java体系结构介绍

阅读更多

java技术的核心就是java虚拟机——所有的java程序都在其上运行。
Java的面向网络的核心就是java虚拟机,它支持java面向网络体系结构的三大支柱的所有方面:平台无关性,安全性和网络移动性。
 
不同的java虚拟机,有不同的执行引擎实现:
1. 由软件实现的虚拟机中,最简单的执行引擎是一次性解释字节码;
2. 即时编译器:执行引擎更快,跟消耗内存;第一次执行字节码时就会编译成本地机器代码,被缓存,可以重用;
3. 自适应优化器:监视运行中的程序活动,并记录下使用频繁的代码段,运行时,虚拟机会把活动最频繁的代码编译成本地的代码,其他代码继续保留字节码——由虚拟机继续解释他们。优点:使虚拟机在80%~90%的时间里执行被优化过的本地代码,只需要编译10%~20%对性能有影响的代码;
4. 有硬件芯片构成的虚拟机:它用本地代码执行java字节码,这种执行引擎实际上市内嵌在芯片里的。
Java虚拟机的基本结构:
 
Java的2种方法:java方法和本地方法;java方法是由java语言编写,编译成字节码,存储为class文件中的。本地方法是由其他语言(比如C,C++或者汇编语言)编写,编译成和处理器相关的机器代码;java方法与平台无关,但是本地方法不是的,本地方法是联系java、
程序和底层主机操作系统的链接方法,使java程序可以直接访问底层操作系统的资源,这样您的程序就变成与平台有关了,因为本地方法的动态库是平台相关的。
Java本地接口(Java native interface,JNI)——使得本地方法可以在特定主机系统的任何一个java平台实现上运行,只要平台供应商支持JNI。

Java有两种类型的类装载器:启动类装载器和用户定义的类装载器。启动类装载器是虚拟器实现的一个部分,通常用C/C++语言编写。它主要装载java api 的核心类库。用户定义的类装载器则是用Java语言编写的,能够编译为class文件,能够被虚拟机装载,还能够像其他对象一样实例化

Java class 文件主要在平台无关性和网络移动性方面使java更适应于网络。


Java语言的优势(对比c++):
1. 没有通过使用强制转换指针或者通过进行指针运算直接访问内存的方法,避免内存操作引起崩溃
2. 自动垃圾回收,
3. 数组边界检查,实际也是指针运算带来的内存冲突
4. 对象引用的检查,防止空引用
Java语言的劣势:
1. 性能比不上本地代码,手段:预编译(编译为本地代码),虚拟机性能的提高,分布式系统。
2. 内存管理和线程调度缺陷:无法确定何时开始,多长时间。
3. 最小公分母问题
4. 反编译问题:混淆器。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics