Java架构介绍(一)
2014-04-15 10:02
232 查看
http://blog.csdn.net/rodsonl/article/details/22163199
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虚拟机的主要工作是加载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平台实现工作。
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平台实现工作。
相关文章推荐
- java多用户商城系统架构之第一篇——总的介绍
- Java分布式应用技术架构介绍
- Java 集合系列之 Set架构 TreeSet HashSet 详细介绍(源码解析)和使用示例
- 【Java安全技术探索之路系列:Java可扩展安全架构】之八:JCP(一):JCP架构介绍
- Java分布式应用技术架构介绍
- Java分布式应用技术架构介绍
- java.util.concurrent 架构介绍
- 【手写SORM框架】_思想介绍_架构介绍JAVA280
- 一个实际项目Java架构设计之ETL(Kettle)部分介绍
- Java分布式应用技术架构介绍
- JAVA Map架构和API介绍
- Java分布式应用技术架构介绍
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十一:JSSE(一):JSSE架构介绍
- 【Java安全技术探索之路系列:Java可扩展安全架构】之五:JCE(一):JCE架构介绍
- java后端系统架构之会话篇:sso单点登录会话介绍
- Java分布式应用技术架构介绍
- Java分布式应用技术架构介绍
- Java分布式应用技术架构介绍
- _00019 Storm架构介绍和Storm获取案例(简单的官方网站Java案例)
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结