标题：Java EE
简介
Java EE（Java Platform，Enterprise Edition）是sun公司推出的企业级应用程序版本。这个版本以前称为 J2EE。能够为我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的，它提供 Web 服务、组件模型、管理和通信 API，可以用来实现企业级的面向服务体系结构（service-oriented architecture，SOA）和 Web 2.0 应用程序。
Java，是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器（支持Java applet）显示了Java的魅力：跨平台、动态的Web、Internet计算。从此，Java被广泛接受并推动了Web的迅速发展，常用的浏览器现在均支持Java applet。 
主要技术
JDBC（Java Database Connectivity）提供连接各种关系数据库的统一接口,可以为多种关系数据库提供统一访问，它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API，据此可以构建更高级的工具和接口，使数据库开发人员能够用纯 Java API 编写数据库应用程序，同时，JDBC也是个商标名。 
EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。 
Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样，远程方法调用可以发生在对等的两端，也可以发生在客户端和服务器之间，只要双方的应用程序都是用Java写的。 
JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无缝的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。 
JMAPI（Java Management API）为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。 
JMS(Java Message Service)提供企业消息服务，如可靠的消息队列、发布和订阅通信、以及有关推拉（Push/Pull）技术的各个方面。 
JTS(Java transaction Service)提供存取事务处理资源的开放标准，这些事务处理资源包括事务处理应用程序、事务处理管理及监控。 
JMF(Java Media Framework API), 她可以帮助开发者把音频、视频和其他一些基于时间的媒体放到Java应用程序或applet小程序中去，为多媒体开发者提供了捕捉、回放、编解码等工具，是一个弹性的、跨平台的多媒体解决方案。 
Annotation(Java Annotation),在已经发布的JDK1.5(tiger)中增加新的特色叫 Annotation。Annotation提供一种机制，将程序的元素如:类，方法，属性，参数，本地变量，包和元数据联系起来。这样编译器可以将元数据存储在Class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。 
在Java技术中，值得关注的还有JavaBeans，它是一个开放的标准的组件体系结构，它独立于平台，但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类，通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。通常，在一个支持JavaBeans规范的开发环境（如Sun Java Studio 和IBM VisualAge for Java）中，可以可视地操作JavaBean，也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。现在，EJB (Enterprise JavaBeans) 将JavaBean概念扩展到Java服务端组件体系结构，这个模型支持多层的分布式对象应用。除了JavaBeans，典型的组件体系结构还有DCOM和CORBA，关于这些组件体系结构的深入讨论超出了本书的范围。 
javaFX　Sun刚刚发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发富互联网应用程序(RIA)。JavaFX Script编程语言（以下称为JavaFX）是Sun微系统公司开发的一种declarative, staticallytyped(声明性的、静态类型)脚本语言。JavaFX技术有着良好的前景，包括可以直接调用Java API的能力。因为 JavaFXScript是静态类型，它同样具有结构化代码、重用性和封装性，如包、类、继承和单独编译和发布单元，这些特性使得使用Java技术创建和管理大型程序变为可能。 
JMX（Java Management Extensions，即Java管理扩展）是一个为应用程序、设备、系统等植入 
管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议，灵活的开发无缝集成的系统、网络和服务管理应用。 
JPA (Java Persistence API), JPA通过JDK 5.0注解或XML描述对象－关系表的映射关系，并将运行期的实体对象持久化到数据库中。
核心特征
Bean Validation是Java EE 6数据验证新框架，Validation API并不依赖特定的应用层或是编程模型，这样同一套验证可由应用的所有层共享。它还提供了通过扩展Validation API来增加客户化验证约束的机制以及查询约束元数据仓库的手段。
在Java EE 6的Bean Validation出现之前，开发者不得不在表示层框架、业务层以及持久层中编写验证规则以保证这些规则的同步性，但这么做非常浪费时间而且极易出错。Bean Validation是通过约束实现的，这些约束以注解的形式出现，注解可以放在JavaBean(如backing bean)的属性、方法或是类上面。约束既可以是内建的注解(位于javax.validation.constraints包下面)，也可以由用户定义。一些常用的内建注解列举如下：
◆Min：被@Min所注解的元素必须是个数字，其值要大于或等于给定的最小值。
◆Max：被@Max所注解的元素必须是个数字，其值要小于或等于给定的最大值。
◆Size：@Size表示被注解的元素必须位于给定的最小值和最大值之间。支持Size验证的数据类型有String、Collection(计算集合的大小)、Map以及数组。
◆NotNull：@NotNull确保被注解的元素不能为null。
◆Null：@Null确保被注解的元素一定为null。
◆Pattern：@Pattern确保被注解的元素(String)一定会匹配给定的Java正则表达式。
代码中通过Bean Validation注解声明了一些约束：
public class Address { 
@NotNull @Size(max=30) 
private String addressline1;
@Size(max=30) 
private String addressline2; 
public String getAddressline1() { 
return addressline1; 
} 
public void setAddressline1(String addressline1) { 
this.addressline1 = addressline1; 
} 
}
@NotNull指定被注解的元素addressline1不能为null;@Size指定被注解的元素addressline1和addressline2不能超过给定的最大值，即30个字符。
在验证Address对象时，addressline1的值被传递到针对@NotNull约束的验证类以及针对@Size约束的验证类中，而addressline2的值被传递到针对@Size约束的验证类中，由相关的验证类进行验证。如下代码自定义了一个名为ZipCode的约束：
@Size(min=5, max=5) 
@ConstraintValidator(ZipcodeValidator.class) 
@Documented @Target({ANNOTATION_TYPE, METHOD, FIELD}) 
@Retention(RUNTIME) 
public @interface ZipCode { 
String message() default "Wrong zipcode"; 
String[] groups() default {}; 
}
可以将@ZipCode用在类、属性或是方法上，就像其他约束一样。
public class Address { 
@ZipCode 
private String zipCode; 
public String getZipCode() { 
return zipCode; 
} 
public void setZipCode(String zipCode) { 
this.zipCode = zipCode; 
} 
}
Validation API
开发者可以借助于Validation API以编程的方式验证JavaBean。Bean Validation API的默认包是javax.validation。下面对该包中的一些类进行说明：
ConstraintValidator：这是一个接口，具体的约束验证类需要实现该接口。该接口定义了相关的逻辑以验证给定对象类型中的约束。
Validator：Valida接口持有对象验证图的契约。该接口的实现必须是线程安全的。
ConstraintViolation：ConstraintViolation接口表示给定bean上的约束验证失败，它公开了约束违背上下文以及描述该违背情况的信息。
ValidationException：如果在验证过程中出现了某些不可恢复的错误就会抛出ValidationException异常。某些情况下可以指定该异常，如不合法的分组(group)定义、不合法的约束定义以及不合法的约束声明等等。
约束元数据请求API
Bean Validation规范提供了查询约束仓库的手段。该API主要用于工具支持和与其他框架、库以及JSR的集成。Bean Validation规范旨在为对象约束提供一个验证引擎和元数据仓库。需要进行约束定义、验证和元数据的框架(Java EE或Java SE)可以利用Bean Validation规范完成这些功能，从应用或是基础设施的角度来看，这么做可以避免不必要的重复工作。
Bean Validation已经集成到了JSF 2.0和JPA 2.0中。在JSF中可以将表单输入域与域对象的属性绑定起来。JSF 2和Bean Validation可以判断出绑定的是哪个属性并执行与之相关的验证，还会将约束违背的信息显示给用户。Hibernate Validator 4是Bean Validation规范的参考实现框架，其最新版增加了不少新特性，如分组验证、与JPA 2和JSF 2的自然集成以及扩展的注解集等等。