简单解析J2EE架构:工具包的集合

开发 后端
本文简单介绍了J2EE架构。如同其它版本一样,J2EE 本身也是一些工具包的集合,只不过是更多针对企业应用。J2EE 并没有提供一个现实可用的服务器程序,只是提出了 J2EE 程序的规范。

作为一个职业程序员,很多时候反而不会太在意工具背后的理论,因为完成任务往往是最重要的。由于中国网络的的兴起,大量业内外人士开始接触 Java 语言,一时间网上铺天盖地都是一些关于基本概念的问题。人的好奇心往往是激起来的而不是自发的,就如网上没几个人会问操作系统或者汽车制造业的概念一样,其实更多时候人们只是好奇,而不是想进一步做什么。

但,好奇总是好的,尤其对于知识来说。

我最近难得闲暇,也翻阅了不少资料,正好借这个机会谈谈 J2EE 的架构。

正文:

如同其它版本一样,J2EE 本身也是一些工具包的集合,只不过是更多针对企业应用。我们知道 Java 是伴随着网络兴起的,从互联网时代到来的那一刻开始,客户端/服务器的结构就已经深入人心,但在早先的时候即便是用 J2EE,开发服务器也相当繁琐。这就是为什么要有程序服务器(Application Server),同时就引出了容器(Container)的概念。要想理解什么是容器,最简单的办法就是从需求来推导。

正如操作系统会为程序开发人员准备 api 一样,程序服务器要怎么同 Java 开发人员的程序交互,开发好的程序又怎么能在服务器端运行?有人可能说有 J2EE 就行了,其实不然。J2EE 并没有提供一个现实可用的服务器程序,只是提出了 J2EE 程序的规范,你用 J2EE 开发出来的程序实际上是没有服务器功能的(比如建立 Socket 响应 HTTP 请求,以 SMTP 发送邮件之类),但不用担心,一切必要的功能已经由服务器程序完成了。你需要在意的只是如何与服务器交互,而交互的任务就落到了容器的头上。

容器将服务器功能对应 J2EE 规范封装为 J2EE 程序可以调用的接口,同时通过 XML 配置文件处理类与类之间的关系。(比如何时生成实例,何时销毁)这时你编写程序只要考虑容器暴露出来的接口,不用担心服务器具体的调用方式了。而这也为之后的 ejb 容器及 Spring 这个大热门的容器提供了空间,容器脱离了服务器而存在,你只需对容器编程,不用担心用的是何种服务器。

至于 ejb 就好说了,其实它的前身就是 ibm 为自己公司开发的容器,里面包装了比 J2EE 规范更多的接口,方便企业程序的开发应用。而 sun 之后接纳了 ejb 作为 J2EE 的一部分,使得程序开发更加便捷。Spring 的出现则是因为人们对 ejb 依旧不满,希望有更加易用的容器出现。Spring 作为一个轻量级容器一方面简化了开发的难度,另一方面由于模块化的优点方便人们将 Spring 与其它框架组合(比如 Struts 和 Hibernate 等),使开发 J2EE 程序变得越发简单。当然这并不是说 JSP + Java bean 的方法不是最简单的,而是就一些中大型应用而言,Spring 找到了一个微妙的平衡。

这就是J2EE架构:一些工具包的集合,程序服务器,接口,容器……而Spring则是一个易用的容器。

【编辑推荐】

  1. Jboss环境搭建指南
  2. Red Hat开放JBoss ON代理软件的源代码
  3. GWT和JBoss联手促进网络发展
  4. 倡议JBoss门户与Enterprise门户合并
  5. 集成的JBoss中间件的管理平台
责任编辑:book05 来源: windvalley
相关推荐

2009-09-23 17:11:18

数据持久层Hibernate

2009-06-23 08:06:46

J2EE体系架构J2EE模型J2EE设计模式

2009-06-22 17:34:40

J2EE架构

2009-06-10 14:10:23

J2EE学习J2EE是什么

2009-06-10 13:37:06

J2EE可伸缩性J2EE灵活性J2EE维护

2009-02-23 11:18:06

J2EE架构师Java

2009-06-23 16:48:26

J2EE常见问题J2EE平台

2010-05-06 15:12:53

集群负载均衡

2010-09-29 10:15:35

JDKJ2EEJ2SE

2009-06-11 17:06:11

J2EE历史Java EE概述

2009-06-23 08:03:02

2009-06-10 16:35:26

2009-06-10 16:25:43

J2EE架构架构

2009-06-22 17:05:41

Java EEJava企业应用

2009-06-11 17:11:07

J2EE设计模式工厂模式

2009-06-10 13:30:32

J2EE四层模型客户层Web层

2009-06-18 15:54:57

J2EE下使用JNDI

2009-06-23 08:12:48

J2EE调用存储过程

2009-06-22 16:21:02

J2EE线程

2009-06-18 16:13:14

J2EE开发
点赞
收藏

51CTO技术栈公众号