Java EE 5.0:使J2EE开发变得容易一些

发表于:2007-06-21来源:作者:点击数: 标签:
任何J2EE 开发者都知道开发Java 有多难。新的Java EE 5.0将使你的开发过程变得容易一些。Java EE 5.0具有Web 服务支持、注释和增强的CMP 性能 。 要开发一个简单的J2EE应用程序, 程序员 必须要写大量的样本文件代码(如JavaBeans企业版)和设定无数个配置文

   

任何J2EE 开发者都知道开发Java 有多难。新的Java EE 5.0将使你的开发过程变得容易一些。Java EE 5.0具有Web 服务支持、注释和增强的CMP性能

要开发一个简单的J2EE应用程序,程序员必须要写大量的样本文件代码(如JavaBeans企业版)和设定无数个配置文件(XML中的描述文件)。所以要成为一个J2EE开发者,程序员必须熟悉EJB和XML。对于初学者来说,这些将令他们望而生畏。

目前的J2EE说明书(1.4)非常长,是用较老的JDK 1.2版本写的,这使J2EE更加复杂难懂。新的JDK版本提供了丰富的、简单好用的性能,比如J2SE 5.0的一般性能和注释支持。

即将推出的Java EE 5.0的一个主要目的就是,既保持J2EE强大的功能,又可以使一般的开发任务变得容易一些。为了达到这个目的,Java EE 5.0将提供更好的默认性态和设置,允许大多数容器无需使用部署描述符就可以得到需要的东西。为此,Java EE 5.0做了很多注释。开发者不需要知道执行的细节(由容器完成执行任务)。这些新性能都使企业的Java应用程序更小、更快。

本文揭示了J2EE开发者期待已久的Java EE 5.0的新性能。首先让我们来简单地看一下注释。

[作者提示:由于 J2EE 的最新版本是Java EE 5.0,因此下文中Java EE指新版本,J2EE 指老版本]

Java 注释

注释是一种修饰符,在你可以使用其它修饰符(比如public, static, 或 final)的任何地方都可以使用注释。按规定,注释优先于其它修饰符。它包括一个@)符号,@后接注释类型和被括号括起来的元素值对。这些值必须是编译时间常量。也就是说 Java本身就提高了注释信息的详细列表。注释并不直接影响程序的语义,但它影响工具和库处理程序的方式,从而对运行的程序的语义产生影响。注释可从源文件、class文件中阅读,也会在运行时得到反映。将定义从执行中分离出来并提供一种可以内省约束的方式,这使得执行过程更加灵活。

大多数Java开发者已经很熟悉注释了,比如所有的JavaDoc标签和瞬时标签都是注释的例子。

EJB入口的注入

在目前的J2EE体系下,为了揭示任何一个业务方法,必须为home接口和远端接口提供EJB包装。但在Java EE 5.0中,你可以使用EJB注释为程序组件的任意字段或方法进行注释。注释本身就是EJB session bean的参考。基准可以是EJB session bean的本地或远端home接口,也可以是EJB3 bean的业务接口。

举例来说,下面的代码使用注释将一个PurchaseOrder归到EJB中:

@EJB private PurchaseOrder po;

@EJB(

name = "ejb/myEnterpriseApp",

 beanName = "po1",

beanInterface ="PurchaseOrder.class",

description =" The Purchase Order for my enterprise application"

)

private PurchaseOrder po;

Enterprise Bean将用JNDI查找这个名称java:comp/env/ejb/po。由于并不清楚目标名称在哪里,容器比较解决目标。

是不是很酷呀!现在,通过向现有的业务方法注入EJB注释,然后将它们部署到适用于Java EE 5.0 的容器中,这样你马上就可以把现有的程序加入到ava EE程序中!

为了避免当部署描述符和注释一起时会出现冲突,容积会优先使用部署描述符而忽略注释。这个性能可以使现在的J2EE程序移植到("as-is")Java EE 5.0适用的容器。

增强部署描述符:注入环境条目



和部署描述符中的标签一起,Java EE 5.0提供了一个新的标签,可以使程序组件代码能够访问业务字段。另外一个方法也可以达到这样的效果,即使用@Resource注释标签,可谓殊途同归。

举例来说,下面的代码,使用注释将一个订购单中的商品数量限制为10:

// can be configured from the deployer

@Resource int numberOfItems;

public void validatePO(PurchaseOrder po) throws NumberOfItemsException

{

if(po.getItemCount() > numberOfItems)

throw new NumberOfItemsException("My PO cannot have more than 10 items");

}

使用部署描述符也可以达到同样的目的:



Number of Items in my PO

numberOfItems

java.lang.Integer

10

Looking up this value:

Context initContext = new InitialContext();

Context myEnv = (Context) initContext.lookup("java:comp/env");

Integer NumOfItems = (Integer) myEnv.lookup("numberOfItems");

当使用注释或标签向代码中注入环境条目时,容积就有了查找这些值的职责。

新CMP标签

Java EE 5.0提供了许多容器管理持久性(CMP)的新标签。开发者只需指定表格的名称和列的名称,其它的由容器完成。在下面的例子中,@Table指定帐目类数据将储存在ACCOUNT表格中:

@Entity

@Table(name = "ACCOUNT")

public class Aclearcase/" target="_blank" >ccount  implements java.io.Serializable {

@Id

public String getUserId() {      return userId;    }

@Embedded

public ContactDetails getContactDetails() {        return info;    }

@Column(name="FIRSTNAME")

public String getGivenName(){        return givenName;    }

}

开发者可以使用@Column标签,从而使表格中列的名称更加合理。

Java EE服务器中的Web服务

Java EE 5.0的主要目标是提供一个易学、好开发的Web服务模型。它提供的Web服务基础设施可以使开发者能够建立强大的、可持续的、高度共用的集成应用程序。Java EE 5.0推出Web Services Metadata,这使一个易学的在Java EE平台的源代码水平描述Web服务的句法。可以使用工具处理这种句法。下面例子中的代码执行了一项Web服务:

@WebService(name="MyPOIntf", targetNamespace = "urn:MyPurchaseOrderService")

@SOAPBinding(style = SOAPBinding.Style.RPC)

public interface MyPOIntf extends Remote {

@WebMethod

@WebResult(name="result")

public String submitPODetails(String poXmlString)

throws  RemoteException;

}

首先,用WebService注释定义一个终端接口,然后就可以通过通过执行这个接口而执行各种功能。

对很多经验丰富的Java开发者,Web服务也依然很神秘。Java EE 5.0将使他们能够轻松地开发并将现有的企业业务程序部署到Web服务程序中。再过半年到一年Java EE 5.0就会上市,我相信届时IT市场上将涌现出大批Java EE Web服务开发者。

原文转自:http://www.ltesting.net