认识 J2EE
写这篇文章之前,我对J2EE的认识特别的模糊,虽然做前端开发有一年了,但是对平台和框架的认识和了解特少,
最近刚好在自己尝试做个在线的小东西锻炼一下,遇到了一个百思不得其解的问题后决定还是整理一下,了解一
下J2EE,本篇文章属于理论知识的罗列,但我会在其中标注后续文章将会介绍的要点
1. J2EE的由来
a. 应用程序的结构演化: 单层 -----> 客户/服务器 ------> Web 应用程序(3+层)
这个演化也是 用户界面(表示层)、应用逻辑(业务逻辑层)、数据访问(数据访问层) 这三部分逐步解耦的过程
b. 企业级应用的开发面临的问题:
1. 分布式 2. 可移植 3. 面向Web 4. 旧系统继承支持 5. 可装配 6. 满足企业计算要求 7. 易扩展、易维护
c. J2EE提供了一套完整的解决上述7个问题的框架方案
@提供了分布式、可移植构件的框架
@为构件和应用服务器提供标准API
@简化了服务器端中间层构件的设计
2. 什么是J2EE?
1. Java 从一种语言发展为一个平台(J2ME, J2SE, J2EE)
2. J2EE 架构:
a. J2EE容器和构件 --(容器的总结和分析见下篇)
b. J2EE核心技术 (13种)
3. J2EE核心技术
1. EJB(Enterprise JavaBeans)
-
- EJB是Java服务器端组件的开发规范,软件厂商根据它来实现EJB服务器
- EJB服务器是管理EJB容器的的高端进程或应用程序, 提供对系统服务的访问
- EJB两种: 会话EJB给用户提供服务(某业务逻辑,DB查询), 实体EJB代表数据对象
- EJB使整个程序分块明显,EJB可以使用其他EJB或JDBC服务(可扩展性)
- EJB规范简化分布式应用程序开发的复杂性, EJB程序猿无需担心事物处理、多线程
资源管理等问题, 专注业务逻辑即可 - EJB的使用增强了系统程序的可靠性、可管理性和可移植性
- EJB容器是EJB的运行环境,提供规范中定义的接口使EJB类访问所需的服务; EJB 容器接受三种EJB
- 会话 Bean (Session Bean)
- 无状态会话Bean
无状态会话Bean是一类不包含状态信息的分布式对象,允许来自数个客户端的并发访问。实例变量的内容在前后数次呼出中不保证被保留
举例: 一个发送邮件的EJB就可被设计为一个无状态会话Bean。在整个会话期,用户只向服务器提交一个动作:发送指定邮件到指定地址 (开关行为) - 有状态会话bean
有状态会话Bean是包含状态的分布式对象,即是说,贯穿整个会话它们都要保有客户端信息
举例:在一个网上商店进行实施结账很可能就需要一个有状态会话Bean。 尽管这种Bean的状态信息可被保持,但始终只能同是由一个用户来访问
- 无状态会话Bean
- 实体 Bean (Entity Bean)
- 消息驱动 Bean (Message Driven Beans, MDBs)
- 会话 Bean (Session Bean)
- EJB是Java服务器端组件的开发规范,软件厂商根据它来实现EJB服务器
2. CORBA (Common Object Request Broker Architecture)
- 分布式对象体系结构, 独立于平台,独立于语言(还不懂!)
- 一个对象可以被本机上的客户或远程客户通过方法激活来存取
- 上述互操作性的关键是IDL(Interface Definition Language), IDL说明对象接口中的方法, 这些方法
被其他对象(或应用)激活
3. RMI (Remote Methoed Invoke) -- 被EJB使用的更底层的协议
-
- RMI协议调用远程对象上的方法, 使用序列化方式在客户端和服务器端的对象之间传递数据
- RMI 和 CORBA 对比
1. Java RMI是针对分布式对象计算的纯Java解决方案, 对象的接口都是用Java定义, 而不是IDL
2. Java RMI继承了Java的安全性; CORBA没有定义安全服务
3. 不同的软件开发商可能提供不同的CORBA实现, 跨平台匹配困难; 所有平台都支持JVM, 故Java RMI
具有更高的移植性
4. JSP (Java Server Pages)
-
- 服务器端的脚本语言, 以Java和Servlet为基础开发的动态网页生成技术, 底层实现是Java Servlet
- JSP页面由HTML代码和嵌入其中的Java代码组成。用户请求页面后, Server对Java代码进行处理, 将生成
的HTML页面返回给客户端浏览器 - JSP is translate into Servlet before it is executed; Translate发生在第一次请求
5. Java Servlet --扩展Web服务器功能的技术
-
- Servlets (=Server + Applet): 运行于Web服务器端的Java小程序, 用于扩展Web服务器的功能
- Servlet用Java实现, 能访问整个Java API库, 继承了Java的所有特性 (跨平台、多线程、OO)
- Servlets同样适用HTTP协议与客户端进行通信
- Java Servlet 和 JSP 的比较:
- 都是基于Java的技术; JSP先被JSP容器转换为Servlet代码在编译成类; 二者都负责跟Client连接
- Servlet接受Client请求, JSP返回信息给Client; JSP实现将界面设计和业务逻辑分离
6. Java Bean
-
- 基于Java的组件模型, 有点儿类似于Microsoft的COM组件
- Java Bean可以无限扩充Java程序的功能, 通过Java Bean的组合可以快速生成新的应用程序
- Java Bean传统的应用是在可视化领域(AWT); JSP诞生后, Java Bean在服务器端又有了用武之地
7. JDBC
-
- JDBC是一组API, 定义了用来访问数据源的标准Java类库(用标准的方法, 方便的访问数据库资源)
- JDBC API为访问不同的数据库提供了统一的方法
- 使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统, 无需程序猿对数据库系统的特点了解过多
8. XML (Extensible Markup Language)
-
- 用来不同的商务过程中共享数据
- XML发展和Java相互独立, 但都具有平台独立性
- J2EE平台全面支持和实施XML
9. JMS
-
- JMS是基于Java的技术, 因而是平台无关的。 为消息服务定义了通用的Java语言接口, 支持最常见的
消息传递模型(发布/订阅, 点到点) - JMS通常用来实现异构系统间的松散集成
- JMS是基于Java的技术, 因而是平台无关的。 为消息服务定义了通用的Java语言接口, 支持最常见的
10. 以下是对应于服务的企业级API:
- JNDI(Java Naming and Directory Interface)
- JMAPI(Java Management API)
- JTS/JTA(Java Transaction Service/API)
- Java Security API