欢迎您访问科普小知识本站旨在为大家提供日常生活中常见的科普小知识,以及科普文章!
您现在的位置是:首页  > 科普文章

Java EE

科普小知识2022-09-19 13:24:27
...

JavaEE是一套全然不同于传统应用开发的技术架构,主要可简化且规范应用系统的开发与部署,包含许多组件,进而提高可移植性、安全与再用价值。

1、核心特征

BeanValidation是JavaEE6数据验证新框架,ValidationAPI并不依赖特定的应用层或是编程模型,这样同一套验证可由应用的所有层共享。它还提供了通过扩展ValidationAPI来增加客户化验证约束的机制以及查询约束元数据仓库的手段。

在JavaEE6的BeanValidation出现之前,开发者不得不在表示层框架、业务层以及持久层中编写验证规则以保证这些规则的同步性,但这么做非常浪费时间而且极易出错。BeanValidation是通过约束实现的,这些约束以注解的形式出现,注解可以放在JavaBean(如backingbean)的属性、方法或是类上面。约束既可以是内建的注解(位于javax.validation.constraints包下面),也可以由用户定义。一些常用的内建注解列举如下:

Min:被@Min所注解的元素必须是个数字,其值要大于或等于给定的最小值。

Max:被@Max所注解的元素必须是个数字,其值要小于或等于给定的最大值。

Size:@Size表示被注解的元素必须位于给定的最小值和最大值之间。支持Size验证的数据类型有String、Collection(计算集合的大小)、Map以及数组。

NotNull:@NotNull确保被注解的元素不能为null。

Null:@Null确保被注解的元素一定为null。

Pattern:@Pattern确保被注解的元素(String)一定会匹配给定的Java正则表达式。

代码中通过BeanValidation注解声明了一些约束:

publicclassAddress{

@NotNull@Size(max=30)

privateStringaddressline1;

@Size(max=30)

privateStringaddressline2;

publicStringgetAddressline1(){

returnaddressline1;

}

publicvoidsetAddressline1(Stringaddressline1){

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@interfaceZipCode{

Stringmessage()default"Wrongzipcode";

Stringgroups()default{};

}

可以将@ZipCode用在类、属性或是方法上,就像其他约束一样。

publicclassAddress{

@ZipCode

privateStringzipCode;

publicStringgetZipCode(){

returnzipCode;

}

publicvoidsetZipCode(StringzipCode){

this.zipCode=zipCode;

}

}

ValidationAPI

开发者可以借助于ValidationAPI以编程的方式验证JavaBean。BeanValidationAPI的默认包是javax.validation。下面对该包中的一些类进行说明:

ConstraintValidator:这是一个接口,具体的约束验证类需要实现该接口。该接口定义了相关的逻辑以验证给定对象类型中的约束。

Validator:Valida接口持有对象验证图的契约。该接口的实现必须是线程安全的。

ConstraintViolation:ConstraintViolation接口表示给定bean上的约束验证失败,它公开了约束违背上下文以及描述该违背情况的信息。

ValidationException:如果在验证过程中出现了某些不可恢复的错误就会抛出ValidationException异常。某些情况下可以指定该异常,如不合法的分组(group)定义、不合法的约束定义以及不合法的约束声明等等。

约束元数据请求API

BeanValidation规范提供了查询约束仓库的手段。该API主要用于工具支持和与其他框架、库以及JSR的集成。BeanValidation规范旨在为对象约束提供一个验证引擎和元数据仓库。需要进行约束定义、验证和元数据的框架(JavaEE或JavaSE)可以利用BeanValidation规范完成这些功能,从应用或是基础设施的角度来看,这么做可以避免不必要的重复工作。

BeanValidation已经集成到了JSF2.0和JPA2.0中。在JSF中可以将表单输入域与域对象的属性绑定起来。JSF2和BeanValidation可以判断出绑定的是哪个属性并执行与之相关的验证,还会将约束违背的信息显示给用户。HibernateValidator4是BeanValidation规范的参考实现框架,其最新版增加了不少新特性,如分组验证、与JPA2和JSF2的自然集成以及扩展的注解集等等。

2、主要技术

JDBC(JavaDatabaseConnectivity)提供连接各种关系数据库的统一接口,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序,同时,JDBC也是个商标名。

EJB(EnterpriseJavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。

JavaRMI(JavaRemoteMethodInvocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法调用可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。

JNDI(JavaNamingandDirectoryInterface)提供从Java平台到的统一的无缝的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。

JMAPI(JavaManagementAPI)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。

JMS(JavaMessageService)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。

JTS(JavatransactionService)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。

JMF(JavaMediaFrameworkAPI),她可以帮助开发者把音频、视频和其他一些基于时间的媒体放到Java应用程序或applet小程序中去,为多媒体开发者提供了捕捉、回放、编解码等工具,是一个弹性的、跨平台的多媒体解决方案。

Annotation(JavaAnnotation),在已经发布的JDK1.5(tiger)中增加新的特色叫Annotation。Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来。这样编译器可以将元数据存储在Class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。

在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。通常,在一个支持JavaBeans规范的开发环境(如SunJavaStudio和IBMVisualAgeforJava)中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。现在,EJB(EnterpriseJavaBeans)将JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。除了JavaBeans,典型的组件体系结构还有DCOM和CORBA,关于这些组件体系结构的深入讨论超出了本书的范围。

javaFXSun刚刚发布了JavaFX技术的正式版,它使您能利用JavaFX编程语言开发富互联网应用程序(RIA)。JavaFXScript编程语言(以下称为JavaFX)是Sun微系统公司开发的一种declarative,staticallytyped(声明性的、静态类型)脚本语言。JavaFX技术有着良好的前景,包括可以直接调用JavaAPI的能力。因为JavaFXScript是静态类型,它同样具有结构化代码、重用性和封装性,如包、类、继承和单独编译和发布单元,这些特性使得使用Java技术创建和管理大型程序变为可能。

JMX(JavaManagementExtensions,即Java管理扩展)是一个为应用程序、设备、系统等植入。

管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

JPA(JavaPersistenceAPI),JPA通过JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

上一篇:Java Card

下一篇:Java ME