Java虚拟机之搜索class文件】的更多相关文章

Java命令 Java虚拟机的工作是运行Java应用程序.和其他类型的应用程序一样,Java应用程序也需要一个入口点,这个入口点就是我们熟知的main()方法.如果一个类包含main()方法,这个类就可以用来启动Java应用程序,我们把这个类叫作主类.最简单的Java程序是只有一个main()方法的类,如著名的HelloWorld程序. public class HelloWorld { public static void main(String[] args) { System.out.pr…
一.程序存储格式 统一的程序存储格式:不同平台的虚拟机于所有平台都统一使用程序存储格式——字节码(ByteCode); Java 虚拟机不关心 Class 文件的来源,而只和“Class文件"这种二进制文件格式关联,也就是说Java虚拟机只认识“Class"文件: Java 编译器可以把 Java 程序代码编译成虚拟机所需要的Class 文件: 二.Class 文件结构 Class 文件是以 8 个字节为单位的二进制流,紧凑排列,中间没有空隙:如果想查看一个 Class 文件除了通过…
英文原版:  https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html 直接谷歌翻译: Java SE规范 > Java虚拟机规范 第2章Java虚拟机的结构 上一页 下一个 第2章Java虚拟机的结构 这个文件指定了一个抽象机器. 它没有描述Java虚拟机的任何特定的实现. 要正确实现Java虚拟机,只需要能够读取class文件格式并正确执行其中指定的操作即可. 不属于Java虚拟机规范的实现细节将不必要地限制实现者的创造力.…
正文 一.无关性的基石 1.两种无关性 平台无关性: Java 程序的运行不受计算机平台的限制,"一次编写,到处运行". 语言无关性: Java 虚拟机只与 Class 文件关联,并不关心 Class 文件的来源是何种语言. 2.无关性的实现基础 各种不同平台的虚拟机 所有平台都统一使用的字节码存储格式 二.Class 类文件的结构 Class 类文件是一组以 8 字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件中,中间没有添加任何分隔符.当遇到需要占用…
第一章:Java体系结构介绍 1.Java为什么重要?       Java是为网络而设计的,而Java这种适合网络环境的能力又是由其体系结构决定的,可以保证安全健壮和平台无关的程序通过网络传播. 2.网络带来的机遇和挑战       平台无关性.安全性.网络移动性,Java体系的这三个方面共同使得Java和发展中的网络计算环境相得益彰. 3.Java体系结构       Java程序设计语言       Java class文件格式       Java应用编程接口(API)       Ja…
C/C++等纯编译语言从源码到最终执行一般要经历:编译.连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对中Class类文件的加载.连接都在运行时执行,虽然类加载和连接会占用程序的执行时间增加性能开销,但是却可以为java语言带来高度灵活性和扩展性,java的针对接口编程和类加载器机制实现的OSGi以及热部署等就是利用了运行时类加载和连接的特性,java的Class类在虚拟机中的生命周期如下: 上图中加…
C/C++等纯编译语言从源码到最终执行一般要经历:编译.连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对中Class类文件的加载.连接都在运行时执行,虽然类加载和连接会占用程序的执行时间增加性能开销,但是却可以为java语言带来高度灵活性和扩展性,java的针对接口编程和类加载器机制实现的OSGi以及热部署等就是利用了运行时类加载和连接的特性,java的Class类在虚拟机中的生命周期如下: 上图中加…
为什么需要安全性 Java的安全模型是其多个重要结构特点之一,它使Java成为适于网络环境的技术.Java安全模型侧重于保护终端用户免受从网络下载的.来自不可靠来源的.恶意程序(以及善于程序中的bug)的侵犯.为了达到这个目的,Java提供了一个用户可配置的“沙箱”,在沙箱中可以防止不可靠的Java程序.沙箱对不可靠程序的活动进行了限制,程序可以在沙箱的安全边界内做任何事,但是不能进行任何跨越这些便捷的举动.在Java 1.1中引入了基于代码签名和认证的信任模式. 基本沙箱 组成Java沙箱的基…
Java虚拟机运行时数据区 对象的创建 Java创建对象,在语言层面上使用new关键字.虚拟机遇到new关键字时,会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载.解析和初始化过.如果没有,那就必须先执行类加载过程.类加载通过之后,虚拟机将会为新生对象分配内存.对象所需的内存在类加载完成后就能完全确定.分配内存的方法有"指针碰撞"和"空闲列表"两种方式,如果Java堆是规整的,则采用前者:否则,采用后者.Java…
一.平台无关性的好处 Java技术在网络环境下非常有用,其中一个关键理由是,用Java创建的可执行二进制程序,能够不加改变地运行于多个平台. 这样的平台无关性随之带来许多的好处.这将极大地减轻系统管理员的工作:此外Java的平台无关性在嵌入式设备环境下也非常有用:从开发者的观点看,Java能够减少开发和在多个平台上部署应用程序的成本和时间. Java的平台无关性自然不言而喻.对于我们开发者来说,可能对下面的Java是如何实现支持平台无关的方法或原理更加感兴趣. 二.Java如何实现平台无关的支持…