二JAVA虚拟机家族

JAVA虚拟机家族转自:http://www.infoq.com/cn/articles/jvm-family/

其余信息也是搜索自网上,但出处记不得了

____________________________________________________________________________

二,Java虚拟机家族

http://www.infoq.com/cn/articles/jvm-family/

从1996年初Sun发布的JDK 1.0中所包含的Sun Classic VM算起,JVM虚拟机经历了以下的发展

  • 虚拟机始祖:Sun Classic / Exact VM

Sun Classic VM: 世界上第一款商用Java虚拟机. 这款虚拟机只能使用纯解释器方式来执行Java代码,如果要使用JIT编译器那就必须进行外挂,但是假如外挂了JIT编译器,JIT编译器就完全接管了虚拟机的执行系统,解释器便不再工作了。

Exact VM因它使用准确式内存管理(Exact Memory Management,也可以叫Non-Conservative/Accurate Memory Management)而得名,即虚拟机可以知道内存中某个位置的数据具体是什么类型。

  • 武林盟主:Sun HotSpot VM

它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。

HotSpot VM既继承了Sun之前两款商用虚拟机的优点(如前面提到的准确式内存管理),也有许多自己新的技术优势,如它名称中的HotSpot指的就是它的热点代码探测技术.

  • 百家争鸣:BEA JRockit / IBM J9 VM

JRockit VM曾经号称“世界上速度最快的Java虚拟机”, JRockit内部不包含解析器实现,全部代码都靠即时编译器编译后执行。除此之外,JRockit的垃圾收集器和MissionControl服务套件等部分的实现,在众多Java虚拟机中也一直处于领先水平。

在2008年和2010年,Oracle分别收购了BEA和Sun公司,这样Oracle就同时拥有了这个星球上最优秀的两款Java虚拟机:JRockit VM和HotSpot VM。Oracle宣布在不久的将来(大约应在JDK 8的时候)会完成这两款虚拟机的整合工作,使之优势互补。整合的方式大致上是在HotSpot的基础上,移植JRockit的优秀特性,譬如使用JRockit的垃圾回收器与MissionControl服务,使用HotSpot的JIT编译器与混合的运行时系统。

  • IBM J9 VM

IBM主力发展的Java虚拟机,J9原本是内部开发代号,正式名称是“IBM Technology for Java Virtual Machine”,简称IT4J,与BEA JRockit专注于服务端应用不同,IBM J9的市场定位与Sun HotSpot比较接近,它是一款设计上从服务端到桌面应用再到嵌入式都全面考虑的多用途虚拟机,J9的开发目的是作为IBM公司各种Java产品的执行平台,它的主要市场在和IBM产品(如IBM WebSphere等)搭配以及在IBM AIX和z/OS这些平台上部署Java应用。

 

三,HotSpot VM架构

3个主要组件:VM Runtime, JIT 编译器,内存管理器(垃圾收集器)

3.1 VM Runtime

线程管理:在HotSpot VM的线程模型中,java线程(java.lang.Thread实例)被一对一映射为本地操作系统线程。Java线程启动时,会创建一个本地操作系统线程,当该Java线程终止时,这个操作系统线程会被回收。操作系统调度所有的线程并将它们分配给可用的CPU。

3.2垃圾收集器

1,Java堆中存储的对象不可以被显式的销毁,而是由垃圾回收器(内存管理系统)负责收集。

2,HotSpot VM架构采用分代垃圾回收器。

 

 四,J2EE: Java2平台企业版(Java 2 Platform,Enterprise Edition)

J2EE: Java2平台企业版(Java 2 Platform,Enterprise Edition)

java是一种编程语言 ,最基本的,用它可以做很多事情

用Java做的事情大多数可以分为三类:
J2ME针对嵌入式设备及消费类电器,大部分用做手机软件编写的平台,可以理解为用来写小软件的
J2SE针对普通PC应用,大部分用来做桌面软件,或者初学者练习的
J2EE就是企业开发经常用的,包含很多内容和技术
JSP只是J2EE里面很小的一部分

Sun公司在1998年发表JDK1.2版本的时候, 使用了新名称Java 2 Platform,即“Java2平台”,修改后的JDK称为Java 2 Platform Software Developing Kit,即J2SDK。并分为标准版(Standard Edition,J2SE), 企业版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。J2EE便由此诞生。

J2EE包含许多组件,主要可简化且规范应用系统的开发与部署,开发人员可将更多的时间花在商业逻辑和表示逻辑上,其余的工作则由系统资源(J2EE组建)自动处理。

J2EE三大类组件:

客户端应用程序和applet是运行在客户端的组件;

Java Servlet和Java Server Pages (JSP) 是运行在服务器端的Web组件;

Enterprise Java Bean (EJB )组件是运行在服务器端的业务组件。

支撑J2EE的13种核心技术:

1:JDBC(Java Database Connectivity)

JDBC API为访问不同数据库提供了统一的路径,像ODBC一样,JDBC开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具有平台无关性.

2:JNDI(Java Name and Directory Interface)

JNDI API 被用于执行名字和目录服务.它提供了一致的模型来存取和操作企业级的资源DNS和LDAP,本地文件系统,或应用服务器中的对象.

3:EJB(Enterprise JavaBean) ----FIL现在不用EJB,因为其对象过于笨重,底层都是Servlet模式。
商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现。
J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE 中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean)组件。

把EJB 这个概念变成大白话:就是,把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了,用C/S 形式的软件客户端对服务器上的"类"进行调用。

4:RMI(Remote Method Invoke)

远程方法请求,RMI协议调用远程对象上的方法.它使用了序列化的方式在客户端和服务器之间传递数据. EJB 是运行在独立服务器上的组件,客户端是通过网络对EJB 对象进行调用的。在Java中,能够实现远程对象调用的技术是RMI,而EJB 技术基础正是RMI。通过RMI 技术,J2EE将EJB 组件创建为远程对象,客户端就可以通过网络调用EJB 对象了。

RMI 是将各种任务与功能的类放到不同的服务器上,然后通过各个服
务器间建立的调用规则实现分布式的运算

5:Java IDL/CORBA(通用对象请求代理架构是软件构建的一个标准 )

在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起.他们可以创建Java对象并使之可在CORBA ORB中展开,或者他们还可以创建Java类并和其它ORB一起展开的CORBA对象客户.后一种方法提供了另外一种途径,通过它Java可以被用于将你的新的应用程序和旧的系统集合在一起.

6:JSP

JSP页面由HTML标准通用标记语言下的一个应用)代码和嵌入其中的Java代码组成.服务器在

页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端浏览器.

7:Java Servlet

一个Servlet是一个Java类。它处理Http(s)请求并作出响应,包括返回一个HTML页面或转交给其他URL处理。
Servlet必须运行在一个Web Container例如Tomcat中。
Servlet必须是javax.servlet.http.HttpServlet的子类,
你可以继承doGet()或者doPost()方法,两者分别对应于Http(s)中的Get请求和Post请求。

Servlet 是一种小型的Java程序,它扩展了web服务器的功能.作为一种服务器的应用,当被请求时开始执行,这和CGI Perl脚本很相似.Servlet提供的功能大多和JSP类似,不过实现的方式不同.JSP通常是大多数的HTML代码中嵌入少量的Java代码,而servlet全部由java写成并且生成HTML.

开发J2EE程序有一个部署(deploy)的概念,实际上是开发——部署——运行的三部曲。大多数服务器支持Hot deploy。你只需要在相应的Application目录(具体路径依赖于服务器)下面建立一个符合WAR或EAR格式(参见16,17)的目录,启动服务器,就可以通过浏览器访问了。

EAR是一个完整的J2EE应用程序,包括Web部分和EJB部分。WAR只是其中的Web部分。

8:XML

XML标准通用标记语言的子集)是一种可以用来定其它标记语言的语言.它被用来在不同的商务过程中共享数据.XML的发展和java是相互独立的,但是,它和java具有的相同目标是平台独立性.

9:JMS

MS是用于和面向对象消息的中间件相互通信的应用程序接口.它既支持点对点的域,有支持发布/订阅类型的域,并且提供了下列类型的支持:消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持.JMS还提供了另一种方式来对新系统和旧后台系统相互集成.

10:JTA

JTA定义了一种标准API,应用程序由此可以访问各种事务监控.

11:JTS

JTS是CORBA OTS事务监控的基本实现.JTS规定了事务管理的实现方法.该事务管理器是在高层支持java Transaction API规范,并且在较低层次实现OMG OTS specification 和Java印象.JTS事务管理器为应用程序服务器,资源管理器,独立的应用以及同学资源管理器提供了事务服务.

12:JavaMail

JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类.不仅支持SMTP服务器,也支持IMAP服务器.

13:JAF(JavaBeans Activation Framework)

JavaMail利用JAF来处理MIME编码的邮件附件.MIME的字节流可以被转换成java对象,大多数应用都可以不需要直接使用JAF。

总结:

a.EJB实现原理: 就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。

b.RMI实现原理 :就是通过Java对象可序列化机制实现分布计算。

c.服务器集群: 就是通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。

 

五,JAR、WAR、EAR的使用和区别

区别:Jar、war、EAR、在文件结构上,三者并没有什么不同,它们都采用zip或jar档案文件压缩格式。但是它们的使用目的有所区别:

  Jar文件(扩展名为. Jar,Java Application Archive)包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等

  War文件(扩展名为.War,Web Application Archive)包含全部Web应用程序。在这种情形下,一个Web应用程序被定义为单独的一组文件、类和资源,用户可以对jar文件进行封装,并把它作为小型服务程序(servlet)来访问。

  Ear文件(扩展名为.Ear,Enterprise Application Archive)包含全部企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和Web应用程序的集合。

持J2EE的应用服务器有IBM WebSphere Application Server,Oracle Weblogic SERVER,Jboss,SUN GlassFish,东方通 TongWeb等。

Livesite 是Teamsite发布到was上的一个包。

 

posted on 2015-05-08 14:02  小虾皮儿  阅读(174)  评论(0)    收藏  举报

导航