J2EE核心技术

 
J2EE(即Java 2 平台企业版)是由Sun公司主持推出的一项中间件技术。从CORBA、IDL到面向消息的系统,中间件技术已经走过了很长的一段路程,如今J2EE作为中间件技术史上的一块具有决定意义的里程碑,正受到业界越来越广泛的重视和采纳。

简单地说,J2EE是一个标准中间件体系结构,旨在简化和规范多层分布式企业应用系统的开发和部署。J2EE方案的实施可显著地提高系统的可移植性、安全性、可伸缩性、负载平衡和可重用性。

J2EE核心技术

J2EE的核心是一组规范和指南,定义了一个使用Java语言开发多层分布式企业应用系统的标准平台。开发人员在这些规范和指南的基础上开发企业级应用,同时由J2EE供应商确保不同的J2EE平台之间的兼容性。由于基于规范的各J2EE平台之间具有良好的兼容性,因此J2EE应用系统可以部署在不同的应用服务器上,无需或只需进行少量的代码修改。
支撑J2EE的13种核心技术:JDBC,JNDI,EJB,RMI,JSP,Java Servlets,XML,JMS,JavaIDL,JTS,JTA,JavaMail和JAF。下边我们进行简单的介绍一下。

Java Database Connectivity(JDBC)

JDBC以一种统一的方式来对各种各样的数据库进行存取。和ODBC一样,JDBC为开发人员隐藏了不同数据库的不同特性。另外,由于JDBC建立在Java的基础上,因此还提供了数据库存取的平台独立性。JDBC定义了4种不同的驱动程序:JDBC-ODBCBridge、JDBC-native driverbridge、JDBC-networkbridge、PureJavadriver。在一个多层的企业级应用中,更大的可能是在客户端和一个EJB进行通信,采用EJB建立数据库连接。为了实现和改进可伸缩性和系统性能,也可以采用连接缓冲池(connection pool)优化数据库连接。

Java Naming and Directory Interface (JNDI)

JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,后者在应用服务器中的对象。在JNDI中,在目录结构中的每一个结点称为context。每一个JNDI名字都是相对于context的。应用可以通过这个初始化的context经有这个目录树来定位它所需要的资源或对象。

Enterprise Java Beans (EJB)

EJB提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。EJB规范定义了三种基本的bean类型:

Stateless session beans

提供某种单一的服务,不维持任何状态,在服务器故障发生时无法继续存在,生命期相对较短。例如,一个stateless sessionbean可能被用于执行温度转换计算。

Stateful session bean

提供了与客户端的会话交互,可以存储状态从而代表一个客户。典型例子是购物车。Stateful session bean在服务器故障时无法继续生存,生命气相对较短。每一个实例只用于一个单个的线程。

Entity beans

提供了一致性数据的表示-- 通常存放在数据库中-- 在服务器故障发生后能继续存在。多用户情况下可以使用EJB来表示相同的数据。entity EJB的一个典型例子是客户的帐号信息。

所有的EJB有许多的共同之处,都处理homeinterface。它定义了一个客户端是如何创建与消亡EJB的。可以在bean中对定义了客户端方法的远程接口进行调用;bean类则执行了主要的商务逻辑。

JavaServer Pages (JSPs)

JSP和Microsoft的Active Server Pages(ASP)ASP相对应的,但更具有平台对立性。他们被设计用以帮助Web内容开发人员创建动态网页,并且只需要相对较少的代码。 即使Web设计师不懂得如何编程也可以使用JSP,因为JSP应用是很方便的。 JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

Java Servlets

Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlets和CGI脚本的一个很大的区别是:每一个CGI在开始的时候都要求开始一个新的进程 -- 而servlets是在servlet引擎中以分离的线程来运行的。因此servlets在可伸缩性上提供了很好的改进。

Remote Method Invocation (RMI)

RMI协议是在远程对象上调用一些方法。它使用了连续序列方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更下层的协议。

Java IDL/CORBA

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

Java Transaction Architecture (JTA)/Java Transaction Service (JTS)

JTA定义了一种标准的API,应用系统由此可以存取各种事务监控。JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。

JavaMail and JavaBeans Activation Framework

JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。仅支持SMTP服务器,也支持IMAP服务器。JavaMail利用JavaBeans Activation Framework (JAF)来处理MIME-编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。由此大多数应用都可以不需要直接使用JAF。

Java Messaging Service (JMS)

JMS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,有支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对您的应用与legacy backend系统相集成。

Extensible Markup Language (XML)

XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。XML的发展和Java是相互独立的。但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,您可以得到一个完美的具有平台独立性的解决方案。目前正有许多不同的公司在为Java和XML的组合而努力。如果要了解更多的这方面的信息,可以访问Sun的Java-XML页面,或者IBM developerWorks的XML Zone。

凭借J2EE强大的企业框架能力,能支撑至少几百人同时在线,并借助Java自动垃圾处理机制保持其稳定的运行能力而不宕机。下边列举一下本公司常用到的技术框架。

Web开发技术

Struts

Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。该框架能充分满足应用开发的需求,简单易用,敏捷迅速。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,也是现在企业目前常用到的应用框架,目前多于Spring、Hibernate/IBatis等结合。

Spring Framework

Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。架构基础基于使用JavaBean属性的IOC(Inversion of Control)容器,提供了管理业务对象的一致方法,唯一的数据访问抽象,数据访问架构还集成了Hibernate和其他O/R mapping解决方案,提供了唯一的事务管理抽象,能够在各种底层事务管理技术,同时还提供了一个用标准Java语言编写的AOP框架,此外还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。该框架也是多和其他框架结合,应用广泛。

SiteMesh

SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。多用于网站建设中,不同的模块具有同样的导航。

Tapestry

Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。使得java代码与html完全分离,利用这个框架开发大型应用变得轻而易举,并且开发的应用很容易维护和升级。Tapestry支持本地化,其错误报告也很详细。Tapestry主要利用javabean和xml技术进行开发。

Java Server Faces(JSF)

JavaServeFaces技术简化了JavaServer应用程序用户界面的开发。各种技术水平的开发者都能够快速创建web应用程序通过在一个页面中装配一些可重复使用UI组件;并可把这些组件与应用程序的数据源连接起来;也可把客户端产生的事件与服务端事件处理者连接起来。这个项目是Sun对JSF技术规范的最完整实现。

JbossSeam

JBoss Seam是一个Java EE5框架。它通过把JSF与EJB3.0组件合并在一起,从而为开发基于Web的企业应用程序提供一个最新的模式。Seam可以让你把EJB组件直接绑定到JSF页面。Seam能够统一和集成现有的开源技术集成如Facelets、Hibernate、jBPM、Drools、Groovy、Java Portlets、BPM、AJAX、iText和Lucene。

Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。支持多种数据库,提供多级缓存。在大的项目,特别是持久层关系映射很复杂的情况下,更能体现它的优势以及效率。

IBATIS

使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。

DWR

DWR(Direct Web Remoting)是一个WEB远程调用框架。利用这个框架可以让AJAX开发变得很简单。利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码)。

其他框架技术

Acegi Security

Acegi Security是一个能为基于Spring的企业应用提供强大而灵活安全访问控制解决方案的框架。可以实现业务对象方法级的安全访问控制粒度:URL资源、业务类方法、领域对象的访问控制,为系统提供完善的认证和授权机制。

JOSSO

JOSSO(Java Open Single Sign-On)是一个开源的J2EE-based的SSO基础结构。它的目的是提供一种用来解决在统一平台上进行用户集中认证的方案。(SSO:单一登录技术是一种认证和授权机制,它允许注册用户只需要在任一成员网站上登录一次,而后授权访问其他连接的分支网站,无需再进行验证登录)

jBpm

jBpm是一个灵活可扩展的工作流管理系统。作为jBpm运行时server输入的业务流程使用简单强大的语言表达并打包在流程档案中。jBmp将工作流应用开发的便利性和杰出的企业应用集成(EAI)能力结合了起来。jBmp包括一个Web应用程序和一个日程安排程序。作为J2SE组件,可以为J2EE应用集群部署。

J-Spider

J-Spider是一个完全可配置和定制的Web Spider引擎。你可以利用它来检查网站的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的功能。

OpenCms

OpenCms是一个J2EE的产品,采用java编写,支持多种应用服务器部署。OpenCms支持多种RDBMS来保存内容,包括Oracle、SQL Server、Sybase和mySQL。新颖的文章发布系统,便利网站的搭建。

mvnForum

mvnForum是基于javaJ2EE 技术(Jsp/Servlet)的一个开源论坛,安装简单,兼容任何Servlet容器,支持Jsp 1.2 and Servlet 2.3。功能强大,能满足大量的论坛的需求。

JSPWiki

JspWiki 是一套非常容易安装的系统,使用到JSP与Servlet技术。

Liferay

代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是采用Struts、基于XML的portlet配置文件、Web Services、Lucene等开源框架使得整体可以自由地动态扩展,支持一些远程信息的获取,并且实现全文检索功能,提供单一登陆接口,多认证模式、简易的用户管理、用户个性化定制页面、支持主流的J2EE应用服务器、支持主流的数据库、支持包括中文在内的多种语言。

Axis

Apache Axis 是Apache WebService项目中的子项目,属于最早的一批用于构造基于SOAP应用的Framework。Apahce Axis包含了除了UDDI外对整个Web Service协议栈(Protocol Stack)的支持,其发行版本还包括了完整的J2EE服务器插件, WSDL支持和生成,TCP/IP监视器等组件。其核心是一个SOAP处理器,用于开发包括客户端,服务器端,SOAP Gateway等各种应用。

Lucene

Apache Lucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。Lucene的最主要工作是替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤,分析文件,编排和使用索引的API,它的强大之处除了高效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能。

FCKeditor

这个HTML文本编辑器可以让web程序拥有如MS Word这样强大的编辑功能。支持当前流行的浏览器如IE 5.5+,Firefox 1.0+,Mozilla 1.3+与Netscape 7+。

Claros Webmail

Claros Webmail是一个比较简单的,采用pop3/smtp收发邮件的webMail系统。不需要数据库的支持。提供一个独立于SMTP服务器的垃圾邮件过滤机制。

JExcelApi(jxl)

Java Excel API(JXL)是一个成熟,开源的Excel电子表格读取,修改,写入的项目。Java开发者利用它简单,便利的API就能够读取Excel电子表格,进行修改并能够把修改后的变化写到任何output stream中(如:Disk, HTTP, database, 或任何socket),这个项目基于GPL发布,而且对中文有很好的支持。

OSCache

OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache能够缓存任何对象,拥有全面API—OSCache API给你全面的程序来控制所有的OSCache特性。支持永久缓存、集群缓存。

Ehcache

Ehcache出自Hibernate,在Hibernate中使用它作为数据缓存的解决方案。

Quartz

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。

Job Scheduler

Job Scheduler是一个以demon方式运行的批处理程序,并且能够使用图形用户界面进行控制。Job Scheduler使用XML来配置任务处理的频率与时间。它提供一个可以用来控制Job事件与日记的API(可以用Java,Javascript,Perl,VBScript等语言来调用这个API)。

Velocity

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利。

FreeMarker

FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。

JFreeChart

JFreeChart主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。可以给企业提供丰富的图形展示界面。

JasperReports

JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式。是当前Java开发者最常用的报表工具,可通过专为JasperReports设计的强大的、直观的、易于使用的可视化报表设计器采用纯Java开发iReport工具进行图形设计。

JFreeReport

JFreeReport是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF,Excel,HTML和XHTML,PlainText,XML和CSV文件中。

Cewolf

Cewolf可以在一个基于Servlet/JSP的Web应用程序内部使用,以在Web页中嵌入各种复杂的图形图表(如,直方图、饼图、棒图等等)。它提供了一个功能完备的标签库来定义图表的所有属性(颜色、笔画、图例等),这样嵌入了图表的JSP就不用使用任何Java代码。简易的标签可以方便开发人员提高开发效率。

Log4j

Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;用户也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,用户能够更加细致地控制日志的生成过程。

开发测试工具

Eclipse

Eclipse平台是一个成熟的、精心设计的以及可扩展的体系结构,在开源社区得到各个开发领域的支持,为开发提供了很快捷的平台。

JUnit

JUnit是由Erich Gamma 和Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试为白盒测试,这套框架继承TestCase类,常用Junit进行自动测试。

Ant

Ant是apache软件基金会jakarta项目中的一个子项目,基于java编写,具有很好的跨平台性。Ant由一些内置任务(task)和可选择的任务组成(还可以编写自己的任务),使用Make时,你需要写一个Makefile文件,而用ant时则需要写一个build.xml文件。

Cruise Control

CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。同时还提供了一个Web接口,可随时查看当前的编译状况和历史状况。可以使得质量保证部门时时了解项目的整体情况。

你可能感兴趣的:(java,Hibernate,框架,Servlets,servlet,ejb)