什么是j2ee,j2ee是什么意思
JavaEE是java语言体系的企业级开发框架及规范,作为Java开发从业人员,对这个框架及规范的熟悉,是基础,是根基。很多Java开发从业人员根本说不清楚JavaEE本身及其含义,就去做企业级的开发,学习更高级的框架。就像是没有打牢地基就去盖房子,一是不管上层的房子建的多么漂亮,它肯定不牢固;二是盖房子的时候心里没有地基,只知道模仿别人垒砖,自己不知道这个房子怎么盖,盖多高;三是即使知道了怎么盖,但是不知道为什么这么盖,更不要提知道怎么对这个房子改变一下形状、如何装修,因为不知其然不知所以然,不知根本,自然不懂变通。这样,很多人会发现,学习高层框架(如spring、struts等)时,感觉云里雾里,对那些控制反转、依赖注入等说法和概念人云亦云,不知所以。所以学起来很痛苦,自然也没什么效果。最后,只能沦为在别人搭好的框架下做低级编码的纯粹的“码农”。本文我们概述JavaEE的框架,对地基进行剖析:
一、JavaEE产生的背景
讲到JavaEE,我们首先要讲到JDK。
JDK全称是Java Development Kit,即Java开发包,用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。JDK包含了Java运行环境(JRE)、Java工具和Java基础类库。
JDK有三大类:J2SE、J2EE和J2ME。
J2SE(Java 2 Platform Standard Edition) 标准版。J2SE包含了Java的核心类库,例如数据库连接、接口定义、输入/输出、网络编程等。主要用于开发客户端(桌面应用软件)。
J2EE(Java 2 Platform Enterprise Edition) 企业版。J2EE包含J2SE中的类,还包含用于开发企业级应用的类,例如EJB、servlet、JSP、XML、事务控制等。主要用于开发高访问量、大数据量、高并发量的企业级系统。
J2ME(Java 2 Platform Micro Edition) 微型版。只包含J2SE中的一部分类,主要用于嵌入式系统和移动平台的开发。
Java开发从业人员日常开发环境,多为J2EE。
自2005年,J2EE5.0版本推出以后,Sun公司正式将J2EE的官方名称改为“JavaEE”。
二、企业级应用系统的特点
第一节说到,JavaEE用于企业级应用的开发。那么,企业级应用程序的体系结构是怎样的呢?应用程序的体系结构是指应用程序内部各组件之间的组织方式,其经历了从两层结构到三层结构再到多层结构的演变过程:
1.两层体系结构应用程序
两层体系机构分为客户层(Client)和服务器层(Server),因此称为C/S模式。客户层的客户程序负责实现人机交互、应用逻辑、数据访问等职能;服务器层由数据库服务器来实现,唯一职能是提供数据库服务。见下图:
两层结构的应用程序存在诸多缺点,主要的是,集中在客户端的应用逻辑导致客户端程序肥大,动任何一处都要全盘统一部署。
2.三层体系结构应用程序
三层体系机构是在两层结构的应用程序层级数据库服务器层之间又添加了一个第三层-应用服务器层。这样,应用程序共分为:客户层、应用服务器层、数据服务器层三个层次。由于客户层应用程序通常由一个通用的浏览器(Browser)程序实现,因此这种体系结构又被称作B/S模式或“瘦客户机”模式。应用服务器层是位于客户层与数据库服务器层中间的一层,因此应用服务器被称作“中间件服务器”或“中间件”,应用服务器又被称作“中间件服务器”。
通过中间件服务器层的负载均衡及缓存数据能力,可以大大提高对客户端的响应速度。而且。基于三层分布体系的应用系统,可以通过应用服务器部署新的程序组件来扩展系统规模。当系统性能降低时,可以在中间件服务器层部署更多的应用服务器来提升系统性能,缩短客户端响应时间。
在三层体系结构下,应用服务器典型的有Tomcat、Websphere、Weblogic、JBoss等;数据库服务器典型的有DB2、Oracle、MySql、SqlServer等。在这种三种架构下,中间件层(图中的应用服务器层)其实承担了两个功能:一是作为应用服务器,处理业务逻辑;二是作为WEB服务器,处理客户端请求。
3.多层体系结构应用程序
将中间件服务器层按照程序应用逻辑进一步划分为若干子层,就形成了多层体系结构的应用程序。这种架构,典型的应用如:使用Tomcat作为应用服务器、Nginx作为WEB中间件,中间件服务器分工各有侧重,充分发挥各个中间件专长,可以大大提供系统运行效率和性能。
三、JavaEE是什么
(一)Java体系
现在行业里边做企业级软件开发的,很多人不清楚JavaEE到底是什么?是一套语言?是一套规范?是一套标准?弄懂这个问题很重要,这是深入Java体系开发的基础和前提。那咱们先简单缕一下Java体系:
首先,是开发语言,是Java,它有一些列的语法,就是这么代码应该遵循什么样的规则来写,不能随意写,就像沟通语言有主谓宾一样,Java作为一种开发语言,有它既定的规则。很多人说,这个Java语言很难或很简单,甚至有的人把C语言、C++、Java排出一个难易程度来。我认为,开发语言本身没有难易的说法,他就是一个人为创造的东西,认为制定的规则。它不像物理、化学等学科领域中的自然现象及规律,那是真理,起码在地球范围内是真理,比如万有引力、原子裂变反应等,研究“它为什么是这样?”是必要的、是有价值的,也是有难度的。但是,对于开发语言,很多人去研究,唉,int它为什么是整型呢?为什么private的类比public的类可用范围更小呢?为什么interface一定要实现呢?要我说,这种人为的开发语言,人造的语言规则,记住就好了,有时候不用研究那么透彻。假如去研究,无非就是去看开发语言的源码,包括它的虚拟机、编译器、运行库等,那是使用高级语言编写的程序的运行环境,那套源码相当复杂。Java语言作为更为抽象的高级开发语言,它是用C语言、C++语言、汇编语言编写的,越往底层,越靠近硬件。我们作为企业级应用程序的开发人员,更多的是要把精力放到业务逻辑上,Java语言的底层的深挖适可而止,但是他的编译及运行原理还是很有必要了解的。
其次,是用Java语言编写的程序的运行环境。也就是程序的编译、运行平台,其是就是我们常听到的JDK,全称是Java Development Kit,翻译过来是Java开发包,其实翻译过来的说法有些狭义,它不只是针对“开发”的。所谓的包,就是一系列的工具,这个“工具”是抽象的,它里边有体现Java上层语法的底层规则、支撑体现Java高级语言特征的基础的类库、程序的运行环境(JRE)、Java虚拟机(JVM)。JVM是跟操作系统打交道的;JRE是将.class格式的程序转换成机器语言,是程序和JVM的媒介;JDK包含前两者,并提供程序开发过程中使用到的基础工具和基础类库。这个JDK,根据支撑的程序的大小和适用场景,有三类,J2SE、J2EE和J2ME,这就是我们第一章的内容,大家可以回顾看一下,J2EE即JavaEE。弄清楚JVM、JRE、JDK的原理,也是很关键的。作为一个Java开发从业者,应该能说出个所以然来。
最后,我们再来看JavaEE,它就是一种JDK,而且是三类JDK中最牛的--支撑企业级系统的JDK。
(二)JavaEE是什么
了解了Java体系,我们再详细讨论,JavaEE是什么,首先明确,它不是开发语言。当然,我们也已经知道了,它是JDK,是构建和运行Java程序的环境。同时,它也发挥着非常重要的规范作用:
1.JavaEE是一个标准的中间件体系结构
JavaEE作为一个标准中间件体系结构,旨在简化和规范分布式多层企业应用系统的开发和部署。JavaEE规范了多层体系的应用开发,它将企业应用程序划分为多个不同的层,并在每一层上定义对应的组件来实现它,典型的JavaEE应用程序包括四层:客户层、表示逻辑层、业务逻辑层、企业信息系统层。表示层、业务层都在应用服务器上,他们由一些JavaEE标准组件JSP、Servlet、EJB等来实现;企业信息系统层用于用于企业信息的存储管理,主要包括:数据库、电子邮件系统、目录服务等。JavaEE组件访问企业信息系统层获取所需的数据信息。
2.JavaEE是企业分布式应用开发标准
一是JavaEE规范了分布式组件开发的标准。这些组件包括JSP、Servlet、EJB等。JavaEE标准规定了这些组件应该实现哪些接口,应该提供哪些方法。二是JavaEE规范了分布式组件运行环境-容器-提供的服务的标准。分布式组件的运行环境成为容器,容器通过提供标准的服务来支持分布式组件的运行。不同的组件由不同的容器来支撑运行,如JSP、Servlet组件运行在WEB容器中,EJB组件运行在EJB容器中。JavaEE已经被众多中间件开发厂商接受并实现,如Weblogic、Websphere、JBoss、Tomcat等。这些产品都遵循统一的JavaEE规范,因此,遵循JavaEE标准的分布式组件及其程序,可以部署在这些不同厂家生产但相互兼容的JavaEE容器环境内。
我们可以思考:一些主流的Java框架,如Struts、Hibernate、Spring等,与JavaEE是什么关系?弄懂这个问题,这对于我们学习框架,非常重要。在以后的文章中,我们会讨论。
四、JavaEE的规范
上一节我们了解到,JavaEE是程序的构建和运行环境,是一套标准,是一套规范。JavaEE有其编程思想和技术框架:
(一)组件-容器编程思想
JavaEE的基本软件单元是JavaEE组件,分为Web组件和EJB组件。组件运行的环境叫容器,也分为Web容器和EJB容器。容器为组件提供必需的底层基础功能,这些底层基础功能被称为服务。组件通过调用容器提供的标准服务来与外界交互。组件和容器都要遵循一个标准规范,即JavaEE规范。
JavaEE容器由专门的厂商实现。容器必须实现的基本接口和功能由JavaEE规范定义,但具体的实现完全由容器厂商自己决定。
所有的JavaEE组件都是都是在容器的Java虚拟机中进行初始化,组件通过调用容器提供的标准服务来与外界交互。容器提供的标准服务包括:命名服务、数据库连接服务、持久化服务、消息服务、安全服务等。
组件和容器之间是如何实现交互的呢?即容器如何知道要为组件提供何种服务,组件又是如何获取容器提供的服务呢?JavaEE采用“部署描述文件”来解决这一难题。每个发布到服务器上的组件,除了自身实现的代码文件外,还要包括一个XML文件,称为“部署描述文件”。我们应该对.xml文件不陌生,但是它存在的原因很少能讲清楚。现在大家只要知道,这是JavaEE规范即可。部署描述文件就像组件和容器之间达成的一个契约,容器根据部署描述文件的内容为组件提供服务,组件根据部署文件中的内容来调用容器提供的服务。
(二)JavaEE技术框架
JavaEE技术框架可以分为三部分:组件技术、服务技术、通信技术。
1.组件技术
JavaEE提供的组件主要包括三类:客户端组件、Web组件、EJB组件。
(1)客户端组件:可以是web浏览器、Applet,或一个应用程序;
(2)Web组件:是在JavaEE Web容器上运行的软件程序。它的功能是在HTTP协议上对WEB请求(Request)进行响应(Response)。这些所谓的响应其实是动态生成网页。Web组件包括Servlet和JSP.
(3)EJB组件:用于实现特定的应用逻辑(业务逻辑),不像web组件一样对客户端请求生成动态页面。EJB能够从客户端或WEB容器中收到数据传送到企业信息系统(如数据库、邮件系统、消息系统等)来存储,EJB还能从数据库检索数据并送回到客户端。JavaEE有三种类型的EJB组件:Session Bean(会话Bean)、Entity Bean(实体Bean)和Message-Driven Bean(消息驱动Bean)
2.服务技术
JavaEE提供了方便编程的各种服务技术,这些技术是企业应用经常用到但编程者难以实现的,如命名服务、部署服务、数据连接服务、数据事务服务、安全服务等。这些服务已经由容器实现,JavaEE组件只需调用这些服务即可。下面我们简单介绍几个常用的:
(1)命名技术:JNDI
JNDI(Java Naming and Directory Interface,Java命名和目录服务接口)简化了企业应用组件之间的查找调用,提供了应用的命名环境。
(2)数据库连接技术 JDBC
JDBC技术提供Java程序和数据库服务器之间的连接服务,同时它能保证数据事务的正常进行。
(3)事务处理技术
JTA(Java Transaction API,Java事务API)允许应用程序执行分布式事务处理。
(4)Web服务技术
Java的Web服务实现主要提供与XML和Web服务协议有关的API等。Web服务通过基于XML的开放标准使企业之间进行信息连接,企业使用基于XML的Web服务描述语言(Web Service Description Language,WSDL)来描述它们的Web服务。
(5)持久化技术
Java持久化API标准化了Java平台下的持久化实现,大大提高了应用的可移植性。
画外音:很多技术框架对这些技术进行了封装,使这些技术的使用更加易用,我们可以想象,哪些框架,主要支持哪些技术?了解这些原生的JavaEE技术,对学习和理解框架有极大的帮助。
3. 通信技术
JavaEE还对一些通信协议进行了实现,便于代码调用,如:Internet协议、RMI协议、OMGP协议、消息技术(JMS)等。我们常用的也就是消息技术。
(1)消息技术
JMS API允许JavaEE应用程序访问企业消息系统,例如IBM MQ系列产品和JBoss的JBossMQ。在JavaEE平台上,消息服务依靠消息EJB来实现。
(2)Internet协议
JavaEE平台能够采用通用的Internet协议实现客户服务器和组件之间的远程网际通信,这些协议包括:TCP/IP协议、SSL协议等。
五、总结
总结起来,JavaEE体系架构具有以下优点:
1.JavaEE应用运行于JVM上,利用Java本身的跨平台特性,独立于硬件配置和操作系统。
2.面向对象和基于组件的设计原则构成了JavaEE应用编程的基础。开发人员所要做的就是为应用项目选择适合的组件模型组合,灵活地开发和装配组件,这样既有利于提高应用系统的可扩展性,又有效地提高了开发效率。
3.利用Java跨平台特性,JavaEE应用程序可以部署在或移植到不同的应用服务器上,支持全异构环境。
4.JavaEE实现了JDBC、JMS、JCA等一系列标准,大大简化了企业信息系统整合的工作量。
最后,想说的是,理解JavaEE,掌握JavaEE技术原理,对于学习各类框架有非常大的作用。先了解原生框架,再学习优化框架,可以达到不只知其然还可知其所以然的效果。
本文地址:百科问答频道 https://www.neebe.cn/wenda/903335.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!