JavaEE 7提供了一个完整、全面、集成的堆栈来帮助你构建企业和Web应用程序。
主要就是JSF(JavaServer Faces)和EJB(Enterprise Java Bean)两大部分,JSF依赖于EJB,并且是重量级的,JSF使用了一大堆组件控制页面,跟Struts2的标签差不多;EJB目前做得不错,相比Spring,EJB完全不需要作任何配置,内部包含JPA规范,可以和Hibernate无缝接入,但是学习曲线依然很大,并且对服务器有要求,用tomcat做服务器还需要和JBoss搭配,新手学习可以使用Glassfish。
这部分内容比较多,JavaEE 7新添加的为下图棕黄色的部分,即WebSocket、Concurrency Utilities、Batch、JSON-P,新添加部分主要是为HTML5提供更好的伸缩性,这些Spring都有,不知是否是借鉴Spring的部分功能。技术虽然很多,其实都有JSR白皮书规约的,有些已经有最终定稿,有些还处于草案和不断修改阶段(其实也没有最终定稿,而是处于维护阶段)。
下面说说一些常见的概念术语:
JWS:即Java Web Service,指与webservice相关的JavaEE技术部分,webservice是一种基于XML的独立的、跨平台的、互操作的应用程序,XML又包含XSD、DTD、XPath等相关技术,这个撇开不说。webservice平台元素主要有SOAP(简易对象访问协议)、UDDI(通用描述、发现及整理)、WSDL(WS描述语言)。
JAX:即Java Xml,类似地JAXB(Java Xml Binding)
目前JWS主要有:
网上说关于JAX-WS与JAX-RS有这么说的: 两者是不同风格的SOA架构。前者以动词为中心,指定的是每次执行函数。而后者以名词为中心,每次执行的时候指的是资源。
感觉这个说法比较靠谱,JAX-WS是面向消息的,每次请求的时候指定了请求的方法。JAX-RS是面向资源的。后则将网络上的东西当做一种资源,每次请求都是对该资源进行操作,比如对资源的增删查改。
关于REST风格,在JAX-RS之前就已经出现,最早的出现的是Restlet、RestEasy框架,后来是Jersey,并且现在Oracle的Glassfish使用的就是Jersey,相对来说Restlet功能齐全、组件膨大,页面和模版技术丰富,由于出现比较早,导致Restlet发展了自己的一套MVC技术,Jersey也是一套JAX-RS产品,内部提供了好几套容器和服务器,大致有grizzly2、JDK-http、simple-http、Jetty这几种。Jersey的MVC和Spring MVC有点类似(与其说是类似,简直就是一模一样),只是只有Jsp和Freemarker两种视图技术。
CDI:即Contexts Dependency Injection,和Spring的IOC差不多的东西,就是可以在组件中通过注解注入上下文、请求和响应等。
JTA:即Java Transaction API,使用过Hibernate和EJB的应该知道,就是事务处理,JTA依赖于所处的容器,如果不是分布式开发的话,我们一般使用本地事务,即是数据库本身的事务处理。
JPA:即Java Persistence API,就是最常用的持久化技术,原本属于EJB中的部分,EJB3.0之后分离出来,作为一个独立的规范。作为一种ORM技术,JPA提供了基本的统一标准,现在JPA的草案处于维护阶段,对应的Hibernate框架的某些版本也处于Final版本。
JMS:即Java Message Service,和JDBC类似,提供了一个统一的API供其他厂商实现,主要用于客户机信息的交互,JMS主要有点到点和订阅/发布两种方式。
另外,像Java Mail、JSTL、JSP等这些再熟悉不过的就不说了。
下面列出一些常用的技术缩写:
EJB: Enterprise JavaBeans 企业JavaBean组件
IDL: Interface Definition Language 接口定义语言
J2EE CA:J2EE Connector Architecture J2EE 连接器架构
JAAS : The Java Authentication and Authorization Service java认证授权服务
JACC: Java Authorization Contract with the Container??Java容器授权合约
JATMI:Java Application-to-Transaction Monitor Interface?Java 应用-事务监控接口
JBI : Java Business Integration Java业务集成
JCA : J2EE Connector Architecture Java连接器架构
JCP : Java Community Process Java组织
JDBC : Java Database Connectivity
JDO :Java Data Objects
JDK:?Java Development Kit
JEMS : JBoss Enterprise Middleware Suite Jboss企业中间件
JMS : Java Messaging Service Java消息服务
JMX :Java Management extensions Java管理扩展
JNDI : Java Naming and Directory Interface Java命名与目录借口服务
JPDA: Java Platform Debugger Architecture??Java平台调试器架构
JRMP:Java Remote Message Protocol
JSP: Java Server Page
JSTL: Java Standard Tag Library Java 标准标签库
JTS: Java Transaction Service Java事务服务
JTA : Java Transaction API Java事务API
JVM : Java Virtual Machine Java虚拟机
MVC: Model-View-Control
NIC: Network Interface Card
O/R: Object-Relational
OTS: Object Transactional Services
PKI: Public Key Infrastructure
POJO: Plain Old Java Object
RMI: Remote Method Invocation 远程方法调用
RMI/IIOP:RMI protocol over IIOP
EJB分为三种:
Session Bean(会话BEAN)
Entity Bean(实体BEAN)
Message Driver Bean(消息驱动BEAN)
Session Bean分为两种:
Stateless Session Bean(无状态会话Bean)
Statefull Session Bean(有状态会话Bean)
Entity Bean分为两种:
CMP: Container Manager Persistence(容器管理持久性)
BMP: Bean Manager Persistence(Bean管理持久性)
其他缩写名词:
BPEL : Business Process Execution Language 业务流程执行语言
BPM : Business Process Management 业务流程管理
DAO : Database Access Object 数据库访问对象
DOM : Document Object Model 文档对象模型
DTD : Document Type Definition 文档类型定义
DTO : Data Transport Object 数据传输对象
ESB : EnterpriseService Bus 企业服务总线
POJO : Proterozoic Java Object Java原生对象
SAAJ: SOAP with Attachments API for JavaTM Java 的带附件的SOAP API
SAX : Simple API for XML Parsing XML解析处理简单API
SAML: Security Assertions markup Language
SGML : Standard Generalized Markup Language SAML(Security Assertion Markup Language ):安全断言标记语言
SLA: Service Level Agreement服务级别协议
SNMP: Simple Network Management Protocol:简单网络管理协议
SOA : Service Oriented Architecture
SOAP: Simple Object Access Protocol
SPENGO:Simple and Protected GSS-API Negotiation Mechanism 简单和受保护的GSS-API协商机制
SPI: * *Service Provider Interface ):服务提供模块接口
SSL: Secure Socket Layer):安全套接字层
SSO: Single Sign-on):单点登录
SSPI: Security Service Provider Interface):安全服务提供模块接口
StAX: Streaming API for XML):XML 的流化API
UDDI: Universal Description,Discovery,and Integration
VO : Value Object 值对象
WFMS: workflow management system
WSDL: Web Service Description Language
WSEE: *Web Services Enterprise Edition
WSRP: *OASIS Web Service for Remote Portlets
XA: * *Extended Architecture 扩展架构
XACML: XML Access Control Markup Language ):XML 访问控制标记语言
XSLT: XML Stylesheet Language for Transformations
严格来说,Java EE还有EJB容器和客户端容器。其中,EJB容器没有Servlet,JBoss就是EJB容器,所以开发时要和Tomcat(Servlet)搭配;客户端容器(Application Client Container)没有Servlet和持久化。