分享

冷饭热炒:JAVA EE技术概述_李家智空间

 空气 2009-03-06
冷饭热炒:JAVA EE技术概述
2008-04-19 11:02

   从根本上来说,JavaEE 是一种企业应用软件架构。在了解它之前,让我们来先看看它的发展背景,它的发展背景中总是与分布式应用和互联网(Internate)应用密切相关

   Web与JavaEE:互联网从根本上改变对企业软件的系统需求,软件需要处理来自Internate的大量请求,并要及时作出响应。对于一个成功的站点,每天数百万次点击很是普遍,如果点击平均分布,这并不令人担忧,但实际情况并非如此,如前一段时间奥运门票在线订购,瞬间点击量超百万,导致系统崩溃。 Sun公司开发JavaEE(当时叫J2EE)的时候,正是基于这一背景,试图构建一个新的架构来解决互联网应用:

  性能:对用户的请求作出响应

  易用性:不同用户应该以不同的形式访问访问不同的内容

  安全性:对用户访问进行验证,防止对数据进行未授权访问

  可用性:提供24×7全天候的可用性,且很少停机

  可扩充性:在不需要人工干预的情况下支持负载变化

  分布式应用与JavaEE:20世纪80年代,个人计算机性价比逐渐达到了高端工作站和服务器的水准,使分布式计算应用迅速普及,90年代初期,对象管理小组开发了公共对象请求代理架构CORBA来解决这一问题,它提供了一种标准的软件平台,分布的对象可以在此平台上透明的无缝交互,同时还允许查找计算机网络上的对象,并请求他们提供服务。我的第一个软件项目就是用Java语言通过CORBA来获取服务器提供的市场行情。CORBA作为分布式对象技术,并没有长时间维持其垄断地位,SUN在推出Java后,紧接着推出了远程方法调用RMI,并在90年代末期,以RMI为通信基础构建了JavaEE。在相当长的一段时间,JavaEE就是一种分布式应用,这让JavaEE战胜了CORBA,.COM+,但是也带来了巨大的开销(超出一个数量级的)毕竟不是所有的企业应用和互联网应用都是分布式的,这让一些人认为JavaEE架构有问题,然后这并不是JavaEE的错,在市场上,JavaEE需要迎合当时的技术潮流。现在如果你不用分布式,JavaEE也同样提供了相关技术供你使用,如Local EJB。

    回到本文的主题,JavaEE 是一种企业应用软件架构,了解了JavaEE的发展背景后,现在让我们来分析一下JavaEE俩个核心方面,企业应用和软件架构。

 企业应用

 如果你想开发一个桌面应用,这个应用能具有闹钟功能,提醒你什么时候该开会,什么时候该闭眼休息,这是不是企业用用呢?这当然不是,为什么呢,因为它不具有企业应用的特点。一般来说,企业应用有如下需求;

    1 并发支持:同时收到大量服务请求,并需要到得到响应,这些服务请求有可能需要操作共享数据

 2 事务支持:支持事务完整性,对于多个系统(资源系统,如数据库)的,需要支持分布式事务。

 3 交互支持:企业应用通常都会涉及到多个系统,多个系统通过何种技术交互。如最常见的有程序与数据库系统交互,与邮件服务器交互,WebService 也是交互的一种方式

 4 集群支持:为了提供系统可用性和可伸缩性,企业应用应该很容易随业务的需求而扩展 

 5 安全支持:受保护的资源获得保护

 6 Web支持:企业应用越来越多的是基于B/S结构

 7O/R mapping,企业应用有大量的业务对象,这些对象通常需要存储到关系数据库系统里,O/R mapping支持极大方便了程序的开发和修改

 8分布式支持:查找和调用分布式服务

 9 XML支持

 一般来说,企业应用不一定包括上面所有需求, 但JavaEE提供了对所有以上需求的支持

 JTA/JTS:Java Transaction API / Java Transaction Service,提供了事务服务和分布式事务管理。事务总是由资源系统(Resource),如数据库系统,遗留XXX系统等提供,JTA/JTS使你很容易的使用这些资源提供的事务功能,特别是当你使用EJB的时候

 JMS/JDBC/WebSerivce/Mail/EJB:提供了交互支持,不同系统之间可以通过多种方式交互,如

 1) 数据库表共享(视图共享),内部系统多个模块可以通过这种方式共享数据,此方式依赖于数据的强大稳定性。缺点是不支持同步

    2) 文件系统共享:性能好,如短信网关常用此方式与短信内容管理平台交换短信

 3) Http:依赖于Http的可靠性,此方式也广泛用于系统交互,性能依赖于不同的Web服务器

 4) 消息服务,JavaEE提供了消息服务,消息服务是一种高性能,高稳定的服务,对于异步支持的特别好,对于Java系统之间异步交互,JMS是一种首选方案。

 5) 邮件:发送接收邮件,如各省里的报表信息可以通过邮件发到背景处理中心集中处理

 6)WebService(JAX-WS):跨平台,跨语言支持,对于同步支持的很好,是不同系统,不同供应商交互的首选方式

 7)EJB:EJB提供了对分布式的支持,使用EJB也是交互的一种不错选择

 8) FTP:如使用FTP传送设备采集到的账单明细到计费系统,对大数据量支持的和你好

 9) RMI:Remote Mehod Invoker,Java EE分布式基础。成就了Java EE的繁荣,但到如今并不流行,原因是分布式调用带来过来的开销。如你调用一个Remote EJB,和调用 LocalEJB 是俩个不同数量级的开销

 10)其他的还有Socket,调用COBAR等

 

 Container:Container包含了组件,组件又通过Container提供的服务完成操作。Java EE提供了WebContainer,EJBContainer,这些Container均提供了事务服务,安全服务,消息服务等。组件主要是JSP/Servelt组件,以及EJB组件,容器管理组件的生命周期,实现了系统可收缩性。

 JAAS:Java认证于授权服务,提供了对Java组件的安全保护,如哪些Servelt,JSP能被哪些用户访问,哪些EJB能被调用等。需要注意的是,JAAS只提供了对JAVAEE组件的保护,对于企业应用业务的权限,它是做不到的

 JPA:Java Persistence API,提供了O/R Mapping。相对于其他O/R Mapping工具来说,JPA提供了最小的特性,在我看来也好,不会导致滥用Mapping工具。JPA在Jboss的实现是用Hibernate。

 EJB: 业务逻辑放在系统哪儿最合适?每个系统都有每个系统的方案,在Java EE中,答案就是EJB里。因为EJB提供了很多服务,如事务服务,安全服务,AOP功能,并且EJB具有可伸缩性,分布式等其他优点供你使用,你不需要为这些服务写任何额外代码(你用了EJB,你就享受的是是VIP服务 ^_^ )。值得注意的是,现在的Entity Bean在Java EE 5中已经取消,取而代之的概念就是Entity

 HTTP:大部分企业应用都会用到Servlet/JSP,这是我们程序入门Java EE的必备知识

 JNDI:Java Naming and Directory Interface,提供服务查找,如查找EJB,查找DataSource

   JAXP/JAXB:前者提供了XML解析接口,你也可以用Xercs,Dom4j,JDom等很多工具,后者提供了XML与JavaBean的绑定,可选工具如Bea的XMLBean(好像现在已经交给Apache)

 Java EE Application Server:提供了集群,负载平衡支持,这不是Java EE规范要求的功能,但所有的应用服务器都支持(你再次享受了VIP服务)

 JavaEE还提供了不少技术服务于企业应用,在此就不一一列举,希望我们通过了解企业应用来进一步加深对JavaEE技术的了解。只有认识的JavaEE的根本,才能更好的了解,应用,选择相关技术

软件架构

  JavaEE是基于企业应用需求的一种软件架构,那么,什么是软件架构,这软件架构是什么样子呢?

软件架构是指元素和相互关系的集合,这些集合不但满足了系统功能需求,而且也要满足一些质量要求,我们已经从企业应用看到了JavaEE满足功能需求,因此不在这儿描述,本章的重点是描述架构的质量属性,看看JavaEE是如何满足其质量属性的(参考了软件架构实践-Software Architecture in Practice)

 可移植性:JavaEE以最少的工作量在各种计算机平台上实现,这得益于Java与生俱来的特点以及SUN对JavaEE的开放(JavaEE的规范通过JCP组织来制定)

 可构建性:JavaEE 程序是易于创建和管理的,这得益于JavaEE定于了组件的生命周期和管理这些组件的角色。使得IDE负责开发,打包应用程序,应用服务器负责部署,卸载,管理组件

 平衡特性: 标准开发人员,厂商,部署人员的各自任务,允许厂商进行优化,提供自己的选择(当你在做移植的时候,尤其要注意,虽然都遵循JavaEE标准,但移植还是很麻烦的,甚至目标应用服务器可能不支持你的功能)

 实现透明性:提供了实现细节完整的透明性,使客户端程序独立于对象的实施细节(如服务器组件位置,操作系统,厂商)

 互操作性:这总是JavaEE有趣的地方,JavaEE可以于CORBA,Microsfot组件互操作(不知道能不能与.Net互操作)

 可扩展性:JavaEE已经有了很多变化,通过JCP和开源世界的广泛影响,相信JavaEE架构会跟随潮流而改变,如分布式在现在就不是重点了,取而代之的是Web Service

    可扩充性:分布式和集群保证了性能和可靠性

 易用性:JavaEE架构还是易于开发人员使用,虽然没有办法和脚本语言比,但最为一个真正的语言,无论是Servlet,JSP,还是EJB,WebService 都是易于学习和使用的

 安全性:JavaEE架构内置了安全性功能(这与业务系统安全不一样的,所以不要抱怨JAAS不好用)

 通过对企业应用的描述和软件架构的质量属性描述,相信你已经对JavaEE又有新的认识,最后附上一个J2EE1.4的架构图,当你真正理解这个图的时候,你才理解了JavaEE

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多