Java EE 6 平台的关键:NetBeans IDE 7.1


作者:Geertjan Wielenga

本文概要介绍了主要的 Java EE 6 规范,介绍了 NetBeans IDE 如何提供工具、模板和代码生成器来支持 Java EE 6。

2012 年 3 月发布

下载:

下载NetBeans IDE(Java EE 发行版)

简介

因为 Java EE 6 平台涉及从模型(JPA 和 Bean Validation)到控制器(EJB 和 Servlet)再到视图(JavaServer Faces)的所有内容,因此当您打算全面学习和使用该平台时,很难找到一个简单的切入点。

NetBeans IDE 7.1 是 Oracle 专门针对 Java 平台的 IDE,由创建 Java EE 6 平台的同一组开发人员创建。它提供旨在与 Java EE 6 平台所含规范结合使用的一组工具、模板和代码生成器。

在本文中,我们通过几段简短的文字和一组屏幕截图,大致了解一下主要的 Java EE 6 规范,并看一下 NetBeans 是如何支持这些规范的。

JPA 2.0 和 Bean Validation 1.0

Java 持久性规范定义如何将关系数据映射为 Java 对象,从而实现对象/关系映射的标准化。在该 IDE 中,提供了一个连接注册数据库的向导(也可以在 IDE 的数据库浏览工具中查看和修改注册数据库),用户可以通过该向导选择表,然后由这些表生成 Java 对象。

系统将生成的每个 Java 对象均批注为一个符合 JPA 2.0 标准的实体,创建定义数据库连接的 persistence.xml 文件,并且选择性地将命名查询(如“Customer.findAll”,映射为 SQL 查询)插入到 Java 对象中。

因此,仅用几秒钟就可以从干净生成的 Java POJO 中访问数据库。在您逐渐熟悉 JPA 规范的过程中,既可以检查生成的实体并针对自己的应用程序扩展它们(例如,代码自动完成功能可帮助您开始了解新的条件 API),也可以将生成的实体用作学习对象。

更普遍地讲,为了将持久性解决方案集成到应用程序中,该 IDE 提供了多种不同的代码生成机制:

Bean Validation 规范与 JPA 规范密切相关。它基于批注定义一个 JavaBean 验证 API,例如 @NotNull 和 @Size。除了使用上述工具在实体中生成批注之外,还可以通过能使您生成约束类及其相关配置文件的其他向导支持 Bean Validation API:

EJB 3.1

Enterprise JavaBeans 规范的早期版本既复杂又冗长。与之相反,EJB 3.1 非常轻量级,仅需很少的编码。目前,EJB 只帮助您创建功能强大的瘦业务层。考虑一下“MVC”中的“C”,您已经对此有所了解。在该 IDE 中,构建 EJB 时,它们包括在应用程序的 WAR 文件中,而不是存档在不同的 EAR 文件中,这是 EJB 3.1 的一个重要增强。

该 IDE 提供了用于创建各种新 bean 的模板:会话 bean、计时器会话 bean、消息驱动 bean 以及由实体类生成的会话 bean。

使用该 IDE,很快就会发现 EJB 不再由它们实现的接口所定义。相反,会话 bean 只是带批注(如 @Stateless 和 @LocalBean)的简单 POJO。在 Java 编辑器中按 Alt-Insert 时,将创建代码段,例如,通过 @PersistenceContext 批注注入 persistence.xml 文件并通过 JPA EntityManager 类引用它的代码。

代码生成器还能提供进一步的帮助,包括在 EJB 中创建新业务方法的向导,从上面的“Add Business Method”调用该向导。

最后,对应用程序中的每个 EJB 来说,都可以在 Projects 窗口中向应用程序结构添加新节点,这样您就可以方便地看到应用程序提供的构件。

尤其是,随着应用程序逐渐变大,可管理性问题将更加突出,诸如项目结构等全局视图变得更加重要。

JSF 2.0

现在,不再使用 JSP,而是使用 XHTML 文件(由 Facelets 定义),目前它是 JavaServer Faces (JSF) 规范的组成部分。使用 XHTML 的一个好处是现在您可以使用 CSS 来指定视图层的风格。另一个好处是 Facelets 支持模板化。在该 IDE 中,您可以使用向导创建 Facelets 模板文件,之后您可以使用另一个向导创建所生成的模板文件的客户端。

在这些文件内工作时,该 IDE 提供了将一组标记提取到 JSF 组合组件的工具,组合组件是一个单独的 XHTML 文件,可以跨多个 Facelets 文件重用。

这样,该 IDE 所支持的 JSF 2.0 支持基于组件的开发。该 IDE 中还提供了一个单独的向导,用于创建新的 JSF 组合组件。

此外,还可以从实体类生成 JSF 页面。选择“JSF Pages from Entity Classes”向导后,您可以选择一个或多个实体类,接着 IDE 将为所选的每个类生成四个 XHTML 文件。在生成的文件中,添加了 JSF 标记,从而可以在底层实体类上执行常见的 CRUD 操作。

Servlets 3.0

默认情况下,遵循 Java Servlets 3.0 规范,该 IDE 不在应用程序的 web.xml 文件中注册新创建的 servlet。而是在 Servlet 类的顶部添加 @WebServlet 批注,还有定义 URL 模式的“urlPatterns”属性。这意味着您不需要在 web.xml 编辑器和 Java 编辑器之间进行切换。通过修改类的批注可以非常轻松地修改 URL 模式。如果还需要 web.xml 文件,就应该提供创建该文件的模板。

在 servlet 内部,按 Alt-Insert,您仍可像往常一样生成代码。但是,该代码生成器中新增了一些强大的功能。特别是,可以启动一个用于选择会话 bean 的向导:

向文件插入注入所选会话 bean 的代码,从而在调用以上代码生成器的位置提供一个新 @EJB 批注。

CDI 1.0

新的上下文和依赖注入规范允许您将有状态组件的生命周期及互操作绑定到定义良好且可扩展的生命周期上下文。此外,它还允许将组件以类型安全的方式注入到应用程序中,包括在部署时能够选择要注入的特定接口实现。

由于使用 CDI 的应用程序必须有一个名为 beans.xml 的文件,因此该 IDE 提供了创建该文件的模板。如果该文件不存在,且您使用 @Named 对 EJB 进行了批注(例如,@Named 公开了该文件以便通过表达式语言注入到 JSF 文件),则该 IDE 会在 META-INF 文件夹中自动为您创建 beans.xml 文件。在 JSF Facelets 文件中,当您使用表达式语言引用命名的 EJB 时,该 IDE 会为类名称以及类中的方法提供自动代码完成功能。这样,您可以非常方便地将视图层(由 JSF Facelets 文件提供)与业务层(由 EJB 提供)相连接。

此外,该 IDE 还提供了用于生成新限定符、构造型、拦截器绑定类型和作用域类型的向导。

这些文件符合该 CDI 规范的更深层面,可以帮助您快速掌握这些规范,从而使您在学习过程的早期避免产生令人沮丧的错误。

JAX-RS 1.1

用于 RESTful Web 服务的 Java API 1.1 可以使您快速构建符合表示状态传输 (REST) 软件架构风格的轻型 Web 服务。JAX-RS 是使用 Java 构建 RESTful Web 服务的标准化 API。在 REST 中,您处理资源,每个资源均通过全局标识符(即 URI)来引用。

这些在该 IDE 中非常容易创建。在会话 bean 中,添加一个 @Path 批注(这在 JAX-RS 1.1 中表示应将该构件公开为 RESTful 资源),接着 IDE 将立刻弹出一个对话框请您配置 REST 库和相关资源。

而且,还提供了由多个不同源(实体类、模式和数据库)生成 RESTful Web 服务的向导库。

一旦创建了 RESTful Web 服务,就可以使用另一个向导来生成使用该 Web 服务负载的客户端。

此外,对基于 SOAP 的 Web 服务,为诸如生成安全令牌服务、逻辑处理程序和消息处理程序之类的特定用例提供了另外的向导。

总结

尽管本文介绍的代码生成器和工具有助于您开始使用 NetBeans IDE 7.1,但危险的是会生成许多您不理解的代码,因此您不知道如何调试和维护这些代码。但庆幸的是,Java EE 6 中需要生成的代码比以往少很多,因此更便于理解和维护。

不过,最好还是使用这些智能工具。从小处着手,专注于具体的 API。通过生成的代码了解这些 API,然后随着您对 Java EE 6 平台更加熟悉逐渐扩展应用程序。一旦您全面掌握了规范,这些工具将有助于您提高效率:将 Java EE 6 平台的简洁性与 NetBeans IDE 7.1 工具相结合,可以快速创建应用程序的核心。

简而言之,NetBeans 7.1 版(即针对 Java 平台的 IDE)是一个详细学习 Java EE 6 平台的不错选择。

另请参见

 

关于作者

Geertjan Wielenga 于 2004 年开始参加 NetBeans 项目的工作。最开始是技术作家,目前是 Oracle 的产品经理。