《JavaEE概述》PPT课件.ppt
1,J2EE开发平台及程序设计,华北电力大学计算机系王蓝婧 公共邮箱:密码:ruanjian2011,2,J2EEJava 2 Platform Enterprise Edition-Java2平台企业版Java EEJava Enterprise Edition,3,第一章 JavaEE概述,4,目录,5,1.1 Java EE 产生的背景,6,问题1:从java语言的发展来看,1995年,Sun公司推出Java技术十多年来已发展成为全球第一大软件开发平台特点:跨平台、面向对象、多线程、半编译半解释等1999年,Java从一种语言发展成为一种开发平台,出现Sun ONE体系结构,以Java语言为核心,包括以下三个版本:J2SE StandardJ2ME MicroJ2EE Enterprise 2005年8月,Java升级到1.5版,SUN公司将J2EE 1.5改名为java EE 5,以前J2EE版本还是称为J2EE。,7,8,9,Java SE,10,Java ME,11,Java EE,12,Java EE 不是编程语言!Java EE是一个标准中间件体系结构Java EE是开发分布式企业级应用的标准,问题2:Java EE究竟是什么?,13,问题3:为什么需要 JavaEE?,企业应用程序的特点企业级应用程序体系结构 企业应用的特点(分布式、面向web、开发的、集成的、可移植、易于扩展和维护,企业计算具有一致性、事务性、安全性等)决定了企业应用的体系结构Java EE集上述特性为一身!,14,企业应用程序的特点,分布式 企业应用日常的运行环境局域网组织内部Internet连接分布在世界各地的部门或者用户面向web高速反应性 企业程序必须具备能力来及时适应需求的改变社会需求的瞬息万变企业不断变更业务规则以适应安全性系统安全可靠正常运行合法用户经过合法途径使用(是否未经登录?是否直接录入网址?是否有权限?谁在运行?)事务性两个或多个网络的计算机资源上访问并更新数据的时候不会错,一个程序要么进行一系列数据库操作成功完成,要么一点也不做,避免写到一半的时候出错如银行转账可扩展性潜在用户数量的不断膨胀应用性能要扩展企业的信息资源不断增长系统功能的扩展系统的结构能否很容易在保留原有功能的基础上很容易扩展?开放性?插件?集成化旧系统的集成支持不是白手起家现有系统之间的集成可移植性、易维护,15,企业级应用程序体系结构,1)C/S与B/S结构2)两层、三层和多层结构,16,客户层(人机交互/应用逻辑/数据访问),1)C/S两层结构,安全性低客户端同DB服务器直连非法用户容易通过客户端入侵部署困难胖客户端客户端软件 不是基于web的,只能适用在LAN胖客户端:应用逻辑集中在客户端,安装耗时:需要每台客户端都安装客户端专用的应用程序扩展更新困难:每次业务规则变化,都需要不断更新或重新安装客户端代码,重新部署客户端耗费系统资源每个客户端程序都直连到DB服务器,为每个客户端建立连接耗费服务器资源耗费资源不适合过多的用户,服务层(数据服务),客户端应用程序,数据库服务器,17,2)B/S三层结构,安全性高:中间的应用层,隔离了客户端程序对数据服务器的直接访问,保护了数据安全部署容易瘦客户端客户层的功能大大削弱,原来由客户端实现的应用逻辑和数据访问等功能都迁移到服务器上实现了瘦客户应用逻辑集中在服务器端很多应用只需安装浏览器即可,基于web的快速响应通过中间件服务器的负载均衡和缓存数据能力,提高对客户端的响应速度易于扩展每次业务规则变化,只需在应用服务器重新部署新服务器端组件,无需更新或重新安装每个客户端,客户层(表示逻辑),数据层(数据服务),数据库服务器,浏览器,数据库服务器,18,JavaEE的三层体系结构,19,3)多层结构,中间服务器又按应用逻辑划分成若干子层,应用服务器,Web表示层,客户层,数据层(数据服务),数据库服务器,浏览器,业务逻辑层,.,20,Web 服务器,JavaEE的多层体系结构,客户,客户层,业务逻辑层,企业信息系统层数据层,数据库服务器,邮件服务器,Web 容器,表示层(web层),客户端应用程序,EJB 容器,JSP,Servlet,会话Bean,实体Bean,消息Bean,应用服务器,数据库服务器,Servlet,21,Entity Bean,浏览器,客户,服务器,客户端/服务器端表示层,服务器端商业逻辑,企业信息系统,域,服务,应用,表示,持续化,客户应用容器,Webcontainer,EJB 容器,DB,Simple Bean,Session Bean,Html,Applet,Web 服务器,JSP,Servlet,服务器端应用,J2EE的N层体系结构(略),22,Java EE 不是编程语言Java EE是一个标准中间件体系结构Java EE是开发分布式企业级应用的标准 它规范了:分布式组件(JSP、Servlet、EJB)应该实现哪些接口、提供哪些方法?容器应该提供的服务 容器:分布式组件的运行环境如Jsp运行在web容器中EJB组件运行在EJB容器中容器实现的服务:JDBC,JNDI,JMS消息服务等,23,支持Java EE的厂商,Java EE规范被众多中间件厂商所实现,不同厂家有不同的实现,但都遵循同一JavaEE规范,可以互相部署开放性。支持JavaEE的厂商和应用服务器Sun 公司:Sun One 服务器Netbeans自带的GlassfishV2 服务器内置Applicaition ServerBEA的weblogicIBM的WebSpereJBoss开发环境NetBeans(内置应用服务器GlassFishV2)+MySQLEclipse+MyEclipse+Tomcat+MySQL Web应用,不包括j2EEEclipse+MyEclipse+Jboss+MySQL 支持EJB,24,JavaEE的组件和容器,组件:JavaEE基本的软件单元容器:分布式组件的运行环境 容器为组件提供必需的底层基础功能服务javaEE的容器由厂商实现,javaEE服务器中均包含Web容器和EJB容器的实现如JDNI服务、JDBC、JMS、持久化、事务支持、并发、安全性、资源和生命周期管理 程序员根据特定应用需求编写组件,专注于业务逻辑而不必困扰在复杂的企业应用环境这些由容器实现了组件与容器:面包与烤箱 面包师:面包是什么配比,什么馅的,什么形状的,口味如何,多高温度,多久不用管烤箱的安全防护机制、容量,电、温度的转换、定时器的控制 都是烤箱的事,而烤箱的控制是厂家实现的,25,组件和容器之间的交互部署描述文件,Web 服务器,Servlet,部署描述文件Web.xml,EJB容器,EJB,部署描述文件ejb-jar.xml,参见P28页 第一个servet的web.xml我们编写First.java 这是一个servlet类,其实就是一个java类(P24)那么在IE中如何访问它呢?就是通过部署在web服务器上的web.xml来知道的。输入:http:/localhost:8080/SimpleServlet/First,26,Web包容器,是Web应用程序的基本运行环境和框架。由web服务器实现,Web应用程序,对应一个目录(或者网站),包括html、servlet、applet、jsp、图片等。,例:Web应用程序和Web包容器,27,J2EE核心技术,组件(1)Java Servlet(2)JSP JavaServer Pages(3)EJB Enterprise JavaBeans 服务:(1)JDBC Java DataBase Connectivity(2)JNDI Java Naming and Directory Interface(3)JTA Java Transaction API(4)JAAS Java Authentication and Authorization Service(5)JCA J2EE Connector Architecture J2EE Connector Architecture(6)Java Persistent(7)Web service(8)XML(9)JMS Java Message Service API(10)RMI(11)Java IDL/CORBA(12)JavaMail/JAF JavaBeans Activation Framework,28,J2EE核心技术之组件技术,1)J2EE客户端组件2)Web组件3)业务组件,29,1)J2EE客户端组件,Web客户端:Web Browser-DHTMLApplet:Java Plug-in 经web从服务器端下载,无需安装java应用程序客户端:Swing,SWT,Jface,JavaBeans 需要安装(就是java Application),30,2)Web组件,通过HTTP协议对web请求进行响应动态生成网页不包括HTML,Applet和服务器端工具类Servlet(Server端的小程序),服务器端运行的程序,实际上就是一个java类 但是它能动态处理HTTP请求和并能返回响应(能生成网页)JSP:简化的,能在第一次运行的时候自动转换为ServletHtml语言(页面呈现)+嵌入java语言或指令(控制逻辑),31,3)业务组件,EJB 实现特定的应用逻辑企业的算法、业务规则 而不是像web组件一样处理客户端请求生成动态网页Session Bean(会话Bean)Message-Driven Bean(消息驱动Bean)Entity Bean(实体Bean),32,容器及类型,容器 容器是Java EE的运行环境,这种环境是为应用组件服务的 例如web容器四类容器 EJB容器 Application Client容器 Web容器 Applet容器,33,图:JavaEE容器服务与接口(详图),容器 容器是Java EE的运行环境,这种环境是为应用组件服务的。各容器为相应类型的应用程序组件提供底层服务,如各矩形下半部的格子表示 四类容器 EJB容器 Application Client容器 Web容器 Applet容器,34,J2EE容器事务状态管理多线程资源池复杂的底层细节容器服务安全事务管理JNDI远程连接可配置的服务:如安全性不可配置的服务EJB和Servlet的生命周期、数据库连接池数据持久性、J2EE平台API,35,J2EE核心技术,组件(1)Java Servlet(2)JSP JavaServer Pages(3)EJB Enterprise JavaBeans 服务:(1)JDBC Java DataBase Connectivity(2)JNDI Java Naming and Directory Interface(3)JTA Java Transaction API(4)JAAS Java Authentication and Authorization Service(5)JCA J2EE Connector Architecture J2EE Connector Architecture(6)Java Persistent(7)Web service(8)XML(9)JMS Java Message Service API(10)RMI(11)Java IDL/CORBA(12)JavaMail/JAF JavaBeans Activation Framework,36,(1)JDBC:数据库连接接口,数据库访问几乎是所有企业应用都会用到的JDBC提供了java程序和数据库服务器之间的连接服务,同时能保证事务的正常进行,JDBC允许从Java的方法里调用SQL命令,进行数据查询JDBC API为访问不同的数据库提供了一种统一的途径,使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,大大简化和加快了开发过程,Java应用程序,数据库,37,(2)JNDI:Java命名和目录服务接口Java Naming and Directory Interface,JNDI是分布式系统的命名和目录服务对分布式系统中的资源(文件、分布式对象、服务)进行方便的访问和管理,允许组件定位其他组件和资源,提供了企业级应用所需要的资源和外部信息的注册、存储以及获取组件等功能JNDI中,企业应用在命名环境(相当于电话簿)中注册,使用者通过JNDI来查找它例:电话购物拨电话无需管谁供货。厂家、门市、总部?怎么供例:电话预约看病拨电话无需管人家的电话预约系统是如何管理和查询的像公共电话簿,记录每个单位登记的电话号码。对于单位对象,有地址等属性可利用 许多J2EE组件的使用需要JNDI 的支持在JMS、JMail、JDBC、EJB等技术中,大量应用这种技术,属性名,属性值,DataSource在哪里?,EJB在哪里?,38,(3)JTA:Java事务处理,事务是一组原子(Atomic)操作的工作单元以数据库存取的实例来说,就是一组SQL指令,这一组SQL指令必须全部执行成功,若因为某个原因未全部执行成功(例如其中一行SQL有错误),则先前所有执行过的SQL指令都会被撤消。如转账一个客户从A银行转账至B银行,要作的动作为从A银行的账户扣款、在B银行的账户加上转账的金额,若已经从A转出,未到B,那么这钱究竟在哪里呢?两个动作必须成功,如果有一个动作失败,则此次转账失败。,银行B,银行A,JTA保证数据读写的时候不会错,把这些关键的操作当成一系列完整的不可分割的操作事务(不能间断,成批完成)当程序进行数据库操作时,要么全部成功完成(commit)若中间中断,则一点也不完成(rollback)JTA技术是由容器完成,减轻了开发者的负担,39,(4)JAAS:Java的认证和授权服务,早期的java安全通过验证代码的来源和作者,保护用户免受下载代码的攻击JAAS通过验证谁在运行代码及其权限,来保护系统免受用户的攻击为JavaEE应用程序提供一种途径来认证和授权一个企业应用用户或用户组,Java Authentication and Authorization Service,40,(5)JCA:Java连接框架技术,用于连接J2EE平台到EIS(企业信息系统)的标准APIEIS包括ERP(企业资源计划Enterprise Resourse Program)大型机数据库处理数据库系统异构的、分布的旧系统,数据仍旧需要访问的遗产系统legacy,不一定是标准的java程序或者数据库JCA定义了一套安全的扩展的数据交互机制,解决现有J2EE系统同其它类型系统的集成,J2EE Connector Architecture J2EE Connector,41,(6)Java Persistence API持久化,持久化:信息永久的存储到关系型数据库等永久介质中如账户信息,顾客信息,交易记录等等持久化技术的发展史:1997年-1998年:TopLink,CocoBase,ODMG1999年-2001年:Entity Bean,JDO2002年-2003年:TopLink,Hibernate,iBatis数据库层2004年:JDO稳步发展;Hibernate飞黄腾达,42,(7)Web Service,Web services是建立可互操作的分布式应用程序的新平台。背景:分布式组件的部署难度DCOM的困难客户机和服务器通信协议的问题http与其他程序的互操作性和异构型你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service 好东西大家一起分享只要我们可以通过Web service标准对这些服务进行查询和访问。Web服务基于XML,43,(8)XML,XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据 如J2EE中的配置文件均是XML格式的,44,(9)JMS:java 消息服务,Java消息服务(JavaMessage Service,JMS)是一个消息标准,它允许JavaEE应用程序组件产生、发送、接收和读取消息 Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信,45,(10)RMI/IIOP,RMI协议调用远程对象上方法,使用序列化方式在客户端和服务器端的对象之间传递数据。RMI使原先的程序在同一操作系统上的方法调用,变成了不同操作系统之间程序的方法调用。RMI(Remote Method Invoke)是一种被EJB使用的更底层的协议一个EJB可以通过RMI调用另一台机器上的EJB远程方法,46,(11)Java IDL/CORBA,CORBA(Common Object Request Broker Architecture)是一个分布式对象体系结构,它独立于平台,也独立于语言。在这个体系结构中,一个对象可以被本机上的客户或远程客户通过方法激活来存取。客户(一个对象或应用)无须知道被调用对象(称为服务对象)的运行环境,也无须知道实现这个对象的编程语言,客户只要知道服务对象的逻辑地址和提供的接口。这种互操作性的关键是IDL(Interface Definition Language、接口定义语言),IDL说明对象接口中的方法,这些方法可以被其它对象(或应用)激活。,47,RMI和CORBA相比(参考),两者的关键差别在于语言环境,Java RMI是一个分布式对象计算的纯Java解决方案(如,在Java RMI中,对象的接口用Java定义,而不是用IDL);CORBA没有定义安全服务,而Java RMI继承了Java的安全性;CORBA有不同的实现,不同的独立软件开发商的不同实现均有独特性,这使得在不同平台上的匹配比较困难,而且不是所有CORBA产品开发商都支持所有平台,而几乎所有平台都支持Java虚拟机,因此Java RMI具有更高的可移植性。如果客户对象和服务对象都基于Java虚拟机,那么Java RMI是分布对象计算的最好选择。最后,IIOP已经提供了Java RMI和CORBA的互操作能力,而且两者的发展有互相借鉴的趋势。,48,(12)JavaMail/JAF,JavaMail是用于存取邮件服务器的一套APIJava应用程序开源 通过javaMail来收发电子邮件如项目组的向项目成员发邀请邮件如用户登录忘记密码,通过邮件想注册用户发送密码第9章JavaMail利用JavaBeans Activation Framework(JAF)来处理MIME-编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。由此大多数应用都可以不需要直接使用 JAF。,49,1.4 JavaEE应用打包与部署,将一个JavaEE应用中的各个分离组件打包到一个单元(通常称为包)中,并将它部署到符合JavaEE规范的应用服务器上。包(package)可以是以下三种单独的模块之一.war Web模块.jar EJB模块、应用程序模块JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,.rar资源适配器模块.ear 完整的JavaEE应用一个打包过的JavaEE模块主要包括以下两类程序文件:JavaEE组件(例如企业beans,JSP页面,servlet等)程序文件用于描述这些组件的配置描述文件,50,四种模块web模块包:.warEJB模块包:.jar应用程序客户端模块包.jar资源适配器模块:.rar 总的应用程序包:.ear部署文件:web.xml-描述应用的web端组件 ejb-jar.xml-标准的J2EE部署描述,用来定制EJB组件.application.xml-标准的描述整个应用部署的xml文件sun-j2ee-ri.xml-由EJB容器提供商来填充的部署描述文件,包含具体实现的定制信息,打包应用程序,51,1.5JavaEE 体系结构的优点,独立于硬件配置和操作系统坚持面向对象的设计原则灵活性、可移植性和互操作性轻松的企业信息系统集成,52,介绍几个好的Java方面的编程网站:,CSDN论坛 中国最有名的技术论坛,程序员杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分;技术博客:Java研究组织 上面有很多原创文章,高手还是挺多的;Java开发者 那里Java资料比较全;看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的;IBM的开发者网络 JavaEye 一些技术博客,用关键词搜一下,很有帮助中文JAVA技术网,53,附录:什么是中间件?,IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。我国学术界一般认可的定义是“中间件是指网络环境下处于操作系统、数据库等系统软件和应用软件之间的一种起连接作用的分布式软件,主要解决异构网络环境下分布式应用软件的互连与互操作问题,提供标准接口、协议,屏蔽实现细节,提高应用系统易移植性”(北京大学梅宏)。“中间”的含义包含两个:1)承上启下,在物理层次上是介于中间的2)起着中介的作用,互联、互操作、屏蔽异构、容许应用件互操作、避免重复开发,