您的位置:首页 > 运维架构 > 网站架构

Java架构介绍(一)

2014-04-15 10:02 232 查看
http://blog.csdn.net/rodsonl/article/details/22163199

java语言平台架构

java语言的平台架构由下面四部分组成:

java编程语言
java的class文件格式
java应用程序接口(API)
java虚拟机

这四部分的关系如下图所示:



可以看到,java编程环境分为两个时期,编译时和运行时,程序中的java源文件(A.java, B.java)在编译期通过java提供的编译器编译成class文件(A.class, B.class)。class文件的内容就是大家常说的字节码,java虚拟机在运行时期加载并执行相应的class文件,如果java源程序中调用了java api的方法,则在程序执行期间会加载该方法的Java API class文件。

Java虚拟机和Java API一起为编译过的Java程序提供了一个平台,这个平台被称为Java运行时系统,也叫Java平台。因为Java平台可以用软件实现,所以java程序可以在很多不同种类的计算机上运行,也就是我们常说的Java平台无关性,如下图所示:



Java虚拟机

Java虚拟机是一个抽象的计算机,它的规范中包含每个Java虚拟机必须有的功能,但是也给实现的设计者留下了很多选择。例如,虽然所有的Java虚拟机必须能够执行Java的字节码,但是他们可以使用任意的技术实现这个功能。Java虚拟机可以完全由软件实现,也可以不同程度地使用硬件来实现。

Java虚拟机的主要工作是加载class文件并执行class文件里面的字节码。Java虚拟机包含一个类加载器,用来加载程序中和Java API里面的class文件,只有程序中使用到的Java API class文件才会被加载到虚拟机。这些字节码在执行引擎中被执行。如下图所示:



执行引擎是Java虚拟机的一部分,他可以有不同的实现方式。在以软件实现的Java虚拟机中,最简单的执行引擎只是每次解释字节码。另一种比较快速但是需要更多内存消耗的执行引擎是即时编译器(just-in-time complier)。在这种方案中,方法在第一次被调用时,该方法的字节码被编译成本地机器码。方法的本地机器码会被缓存起来,这样下次同样的方法被调用时,这些机器码就可以被重用。第三种类型的执行引擎具有自适应优化的功能。用这种方法,虚拟机开始解释字节码,但会监听运行程序的活动并识别出被大量使用的代码区域。当程序运行时,虚拟机只会编译并优化这些被大量用到的代码。其他的没有被大量使用的代码依然以字节码的形式被虚拟机解释执行。这种自适应优化的方法使Java虚拟机能够使用80%~90%的时间来执行被高度优化过的本地代码,并且只需要通过编译10%~20%的对性能影响较大的代码。

以软件的形式实现的Java虚拟机是在操作系统之上的,Java程序通过调用native方法与系统进行交互。在Java中有两种类型的方法:Java和native。java方法是以java语言编写,编译成字节码,并存储在class文件中。native方法是用其他语言编写的,如C,C++,并且被编译成特定处理器的本地机器码。native方法被存储在动态链接库中,动态链接库的形式由特定的平台指定。Java方法是平台独立的,而native方法则依赖与具体平台。如下图所示,native方法是java程序与操作系统沟通的桥梁。



使用native方法可以让应用程序直接访问操作系统下的资源,但这样,你的程序会依赖于指定平台,因为包含native方法的动态链接库是平台指定的。另外,native方法的使用也使你的程序依赖于具体java平台的特定实现。Java Native Interface(JNI)使得native方法可以在特定的系统中与任意的java平台实现工作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: