当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>J2EE

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


  任何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(
  
  ame = "ejb/myEnterpriseApp",
  
   beanName = "po1",
  
  eanInterface ="PurchaseOrder.class",
  
  description =" The Purchase Order for my enterprise application"
  
  )
  
  rivate 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;
  
  ublic 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")
  
  ublic class Account 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)
  
  ublic 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服务开发者。
相关内容
赞助商链接