java虚拟机简介

来源:互联网 发布:逆波兰式算法 java 编辑:程序博客网 时间:2024/05/16 08:43

Java是Sun Microsystems创建的一种编程语言和开发环境。它启动于1995年,可以在各种不同的机器、操作系统的网络环境中进行开发,具有解释型语言(如Basic语言)和编译型语言(如C语言)的特性。Java摒弃了C++中各种弊大于利的功能和许多很少用到的功能,用Java开发的程序可以在网络上传输,并运行于任何客户机上。作为一个崭新的平台和编程语言,它可以生成面向对象的、基于组件的应用程序,从而给计算机行业带来了强烈冲击。

Java程序员使用Java语言创建Java小程序(运行于浏览器内部的组件)和Java应用程序。Java小程序和应用程序运行于称为Java VM(虚拟机)的系统内部。只有VM必须设计为与任何特定平台兼容。一台VM一旦安装在计算设备中,任何Java小程序都将运行于此VM内部。可以将VM当作Java应用程序运行于其中的软件箱。

在图J-1中描绘了Java的结构模型。顶部是小程序和应用程序,它们通过Java Core API和Java标准扩展API连接到Java基本平台(黑色区域)。Java虚拟机位于平台的中心。端口定位接口位于Java虚拟机和0S(操作系统)或浏览器之间。此端口定位接口是不依赖于平台的。与它相连接的是依赖于平台的适配器。OS和JavaOS提供用户接口、文档系统和网络功能。不同的机器都可以通过网络连接,如图中所示。“桌面OS上的Java”表示PC或Macintosh计算机,而“JavaOS上的Java”表示瘦客户机。

image:bk071241fwh_1.jpg

Java已成长为成熟的、受到广泛支持的开发环境。成百上千的公司正在开发Java 工具、代码库和其他增强组件以加速应用程序的开发。由于多个平台支持Java,因此移植问题简化了。使用Java的组件模型进行快速应用程序开发和部署成为可能,而且可重复使用组件来生成或增强其他应用程序。

JavaOS是一个相对较小的操作系统,它直接在硬件平台上执行Java应用程序。 它的宗旨是供可负担的Java内部网、国际互联网以及嵌入式装置使用,它从根本上减少了客户机系统管理,使用户能够在网络上任意登录,并使用他们熟悉的工作空间。此操作系统可以存储在Flash ROM上,或者可以从网络进行引导。对于大量运行Java的设备(包括计算机、“智能”电话、个人数字助理、公用电话亭和娱乐系统)而言,它是最小最快的操作系统。 Java OS还提供运行HotJava浏览器和HotJavaViews环境,定制化处理每种特性以适应企业独特需求的能力。用户可以在其它多种计算平台,运行为Java OS设计的流行应用程序。

JavaOS结构由下面几部分组成:一个微型内核和内存管理器、设备驱动程序、Java虚拟机、JavaOS图形和JavaOS多窗口系统、联网类,以及支持全部Java应用程序的编程接口。

从广义的角度来说,Jini是一种新技术,它以Java编程语言为基础;从狭义的角度来看,Jini是一段Java程序;从技术的角度看,Jini使用Sun的100%纯Java,是Java虚拟机(JVM)中的一系列类库,带有JVM或嵌入式Java的计算机和其它设备都可以使用Jini。它提供一种方法来将数字设备连接到即时的、可扩展的、面向Java的网络,这些网络使用户可以立即访问网络资源和服务。根据Sun的说法,该技术旨在支持“将数字信息传入和传出”的任何设备,能将全系列的基于Java的家用电器连接起来,其中包括PC、立体声设备、电话、打印机和数字照相机。设备在连接时向此网络注册,从而使得它们对于其他设备可用。例如,当挂接打印机并进行注册时,打印机使其驱动程序在网络上可用,而且当客户端需要使用此打印机时,此驱动程序可下载到客户端。

Java在行业范围内受到支持。Java Fund是一个包括IBM、Netscape. Oracle和一起进行Java开发的其他公司在内的提供商的行业联盟。

Java虚拟机

VM类似于运行在软件上的CPU——软件CPU。Java作为一个软件进程运行在硬件CPU的顶端,运行Java VM的应用程序从而可以运行在任何计算机平台之上,只要已为此处理器编写VM,就不用考虑硬件CPU。这些应用程序都可运行。这种方法的优点是程序员可以编写运行在许多不同计算机平台上的一个应用程序,而不是编写不同版本的应用程序以运行在不同的计算平台上。

Java VM可以很好地模拟CPU,以致它甚至可以将Java代码转换为非常类似于CPU级的机器语言的一种语言。它创建的类似于机器的语言专用于VM设计使用的硬件CPU。VM具有一个上层和一个下层。上层与所有Java应用程序兼容,而下层与特定的CPU兼容。VM对处理器进行硬件调用,这些调用执行标准的CPU操作。但VM对Java应用程序隐藏平台细节。这些应用程序从而只需要对Java VM进行调用。

JavaBeans

JavaBeans是使用Java编程语言编写的组件,它们运行在任何启用Java的平台上。在JavaBeans规范中定义了事件和属性等特征。JavaBeans重点是允许开发者在开发工具中可视化的操纵组件。JavaBeans规范详细地解释了组件间事件登记、传递、识别和属性使用、定制和持久化的应用编程接口和语意。组件技术为应用程序开发提供了一种生成块的方法。组件可重复使用,并能以各种方式组合来创建运行在“容器”(如Web浏览器)中的完整应用程序或小程序。组件类似于任何对象技术,可通过自己的外部接口为其他组件提供服务。

JavaBeans模型由下面的成分组成:组件本身、容器(它们是装配对象的外壳);脚本(它允许开发人员编写指令使组件可以交互操作)。容器是这样的地方:组件可以在其中注册自身,并发布它们的接口,以便其他组件知道如何与它们进行交互。 企业JavaBeans称为“豆荚”,它们旨在运行于服务器上,而不是像应用程序运行于用户系统上或者像小程序运行在浏览器内部。Java 2平台企业版(J2EE)是定义JavaBeans如何在网络和Internet环境中进行交互的平台。   JavaBeans是一个完整的组件模型,它支持常见组件结构功能,如属性、事件、方法和持续性,如下所述。

接口发布和发现 当组件被置于JavaBean容器中时,注册该对象以便其他对象可以识别它。也发布其接口,以便其他对象可以使用这些接口。

事件处理 允许对象通过传递消息进行通信。

持续性 提供一种方法来存储有关事件或对象的信息,以供以后使用。

布局控制 提供对容器内组件的可视外观和布局的控制。

应用程序生成器控制 允许组件公开其属性和行为给开发工具,从而使开发人员可以快速生成应用程序。

企业 JavaBeans 组件模型在逻辑上扩展了 JavaBeans 组件模型 以支持服务器组件。服务器组件是设计运行在服务器上可重用 的,预包装的程序功能片断。它们能和其它组件组合生成定制的 应用系统。服务器组件与开发组件类似, 但它们通常更大更完 善。企业 JavaBeans 组件(企业 bean)与 JavaBeans 组件不同, 不能被可视化 Java IDE 所操纵。但是,利用 EJB 兼容的 Java 用程序服务器所提供的工具,它们能在实施时组装和定制。

InfoBus是一个小型Java编程接口,它允许Web页上或Java应用程序中的协作小程序或Beans相互之间进行数据通信。InfoBus是一个通信机制,旨在运行于单个客户端或单个服务器中。它不是网络通信机制。网络技术将在下一节中讨论。

InfoBus将JavaBeans分类为“数据提供者”和“数据消费者”。数据提供者从本地存储区(如DBMS、电子表格和纯文件)访问数据。这些数据放在InfoBus上,数据消费者从此处检索数据。这项技术允许数据消费者独立于所使用的数据进行操作。例如,JavaBean不需要知道SQL(结构化查询语言)即可从SQL数据库访问数据。

出于安全原因,开发人员可以控制组件的行为到精细的程度,所使用的规则确定组件可以访问什么资源。这允许不受信任的小程序可与受信任的应用程序结合使用。

Java2平台企业版(J2EE)

J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBC、API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。

J2EE是一个结构化的平台,它在多层的企业环境中定义Java组件模型。J2EE可与Microsoft.NET在目的和使用范围方面相媲美。Sun与IBM、BEA Systems、0racle Corporation和其他许多供应商协作开发了此平台。

J2EE包括Sun的Enterprise JavaBeans(EJB),后者定义如何使用Java编程语言生成基于Internet或基于内部网的应用程序。许多平台都在此环境中受到支持,其中包括Sun、Linux、IBM、Apple和Windows以及PDA、蜂窝电话和各种嵌入式及专用系统。

J2EE支持事务管理、生存周期管理、资源池和其他功能,井将这些功能自动提供给组件。优点是开发人员不需要自己编写这些功能的代码,而是设计组件访问它们。这使开发人员可以专心于业务逻辑和用户接口设计。

基本上,J2EE平台是由组件、容器和连接器设计的。组件是应用程序和小程序。容器在组件和客户端之间进行操作,以对二者提供服务。连接器使J2EE平台可移植,其方法是为现有产品提供API。

J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。图J-2表示J2EE模型。J2EE 典型的四层结构是:运行在客户端机器上的客户层组件;运行在J2EE服务器上的Web层组件;运行在J2EE服务器上的业务逻辑层组件以及运行在EIS服务器上的企业信息系统(Enterprise information system)层软件。左边是运行Java小程序和应用程序的Web客户端或内部系统。这些连接到中间层,而中间层通过JDBC (Java数据库连接)和SQL/Java等数据连接器连接到后端数据库和旧版的系统。

使用Web浏览器的客户端通过标准HTML与Web服务器进行交互,或者运行已经从此服务器下载的Java小程序。这些Java小程序也可以与Web服务器进行交互。JSP (Java服务器页)动态地生成Web页,所使用的信息是从EJB和后端数据库获取的。运行完全Java应用程序的客户端在Web服务器上连接Java服务器小程序。组件通过Web标准进行通信,而Web标准包括HTTP和HTML,以及下列各项。

RMI(远程方法调用) RMI是在Java环境中进行分布式对象计算的基础。它定义Java组件如何可以在多JavaVM环境中进行交互操作。RMI提供工具,程序员需要这些工具创建分布式Java应用程序(对象),而这些应用程序可以调用其他Java应用程序(这些应用程序正运行在其他Java虚拟机上,如在整个Internet中的远程主机)上的方法。对方法的调用类似于请求另一个程序做一些事情。Java对象必须首先获取对另一个Java对象的引用,才能调用其方法。它可以通过另一个Java应用程序获取这些引用,或者可以通过内置到RMI中的命名服务获取这些引用。

JMS(3avs消息传递服务) JMS是用于J2EE环境的面向消息的通信协议,它是RMI的替代协议。它是一组Java应用接口,它提供创建、发送、接收、读取消息的服务。JMS既支持点对点的消息通信,也支持发布/订阅式的消息通信。点对点类似于电子邮件。此消息进入队列,并由收件人收取。通过使用发布和订阅,客户端可以在某些特定信息更改时请求服器进行更新。这是订阅部分。当信息更改时,服务器发布它并通知订阅者。发布和订阅给Internet带来了极大的好处,因为这样可以减少由人和组件引起的、必须不停地与服务器进行确认以查看信息是否已更改的通信量。

IIOP(Internet Inter-ORB协议) IIOP是一种传输层协议。它用于CORBA 2.0及兼容平台上。它在TCP/IP上承载GIOP(常规Inter-ORB协议)(GIOP指定ORB之间的消息交换格式)。0MG修改了II0P,以便它也可以用作RMI的传输工具,从而使Java和CORBA之间的交互操作成为可能。通过使用IIOP, Java组件可以与CORBA环境中的程序进行交互,而这些程序是使用C++和COBAL等非Java语言编写的。RMI 在只有Java的环境中工作,而IIOP在异类环境之间提供交互操作性。

IIOP协议是要建立以下几个部分:一个IIOP到HTTP的网关,使用这个网关可以让CORBA客户访问WWW资源;一个HTTP到IIOP的网关,通过这个网关可以访问CORBA资源;一个为IIOP和HTTP提供资源的服务器,一个能够将IIOP作为可识别协议的浏览器。

XML(可扩展标记语言) XML是一个元标记语言,用于定义结构化数据,这些数据提供高级方法查看和操作数据。XML实际上是Web上表示结构化信息的一种标准文本格式,它没有复杂的语法和包罗万象的数据定义。它是可移植的数据。在分布式计算环境中,XML已变成网络中传输数据的关键部分。Sun的JAXP(用于XML分析的Java 应用程序编程接口)是一个开发工具,可帮助Java开发人员生成支持XML的Java应用程序。XML在电子商务和Web发布应用程序中尤其有用。

业务逻辑层包含企业JavaBeans组件,这些组件提供各种业务服务。这些组件可能在商务上可用,或者在企业内部生成。它们用于组装常规业务应用程序。例如,可以通过组合组件(这些组件提供“购物车”服务、客户服务功能、信用卡事务服务和其他特殊的用户接口)生成电子商务站点。

来自"http://baike.eccn.com/eewiki/index.php/Java"