《深入java虚拟机第二版》第一、二章学习笔记

《深入java虚拟机第二版》第一、二章学习笔记

第一、java体系结构四个独立技术
java程序设计语言、java class文件格式、java应用编程接口、java虚拟机。
首先,用java程序设计语言编写一个程序,然后使用java编译器编译为一个java class 文件。然后通过本地或网络传递class文件。而java虚拟机通过类装载装载java class文件和java API的class文件,java虚拟机通过执行引擎去执行class文件中的字节码。同时java虚拟机也要装载动态库(包含本地方法),java虚拟机上运行的程序包含上面三个部分
而这种执行引擎有三种执行方式。请参考具体书籍。

其次,要注意java有两种方法:java方法和本地方法。java方法由java语言编写,编译成字节码,存储在class文件中,而本地方法是由C,C++或汇编程序编写的,编译成和处理器相关的机器代码,保存在动态链接库中,虚拟机装载包含这个本地方法的动态库。所以本地方法是平台相关的。

第二、类装载器的体系结构,两种类装载器,一种叫做启动类装载器,一种是用户定义的类装载器。启动类装载器是java虚拟机的一部分。启动类装载器使用某种默认的方式从本地磁盘中装载类。并且不同的用户自定义的类装载拥有不同的命名空间,这就提供了安全性的性能。

第三、.class文件适合网络移动和安全的原因。
因为.class文件紧凑,所以下载快捷。而相应的类加载它知道如何向HTTP服务器请求class文件,只有当浏览器遇到java applet的页面时,才决定是否需要下载class文件。并且由于java应用程序通常为每个提供class文件的网络地址分别创建不同的用户定义类装载器,而不同的类装载器拥有不用的命名空间,所以安全性得到保障

第四、java平台不关性的原因。
1.java平台自己扮演了一个运行时java程序与其下的硬件和操作系统之间的缓冲角色。
2.java语言本身:它的基本数据类型的值域和行为都是由语言自己定义的,而不像C++这种其int型的值域由它的占位宽度决定。
3.java的.class文件与java虚拟机所在平台无关

第五、java平台如何理解,java虚拟机+运行时库,
比如java 2平台就是 sun公司把虚拟机1.2版本及组成标准API(Java平台保证在所有平台上可用的基本库集合为标准的API,并不是所有的运行时库都能在任意平台上执行。)的那些.class文件称为Java2平台标准版。即J2SE,而另外的J2ME、J2EE不同于J2SE就在于它们对于API的支持不一样。

你可能感兴趣的:(java,虚拟机)