服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

j2ee体系结构


  与.net平台相比,sun公司的标准定义的j2ee体系结构有很少可以讨论的空间,因为就没有什么可讨论的。如果一个人注意某个具体开发商的产品,如ibm公司的websphere,那么就会看到其技术的最大的一部分是websphere专用的。比较所有开发商对j2ee的具体改进,已经超出了本文的范围,在我的经验中,大多数对j2ee作为一个平台感兴趣的公司对该标准的可移值性感兴趣。任何对可移值性感兴趣的人都会需要将他们自己局限于sun公司所定义的标准。
  j2ee体系结构可以被分为5部分:
  
  ? java语言系统
  
  ? 客户端程序设计模型
  
  ? 中间层基础结构
  
  ? 程序员企业级api
  
  ? 非程序员可见api
  
  最后一部分,非程序员可见api,包括定义了如何将其他产品插入到j2ee中的api,如连接器api,以及j2ee模型中被最近的改进有效替代的api,如jta(java transaction api)。由于从比较微软和sun公司计划的角度来说,非程序员可见api并不重要,因此在笔者的概述中将不涉及这些方面 (就如同笔者在.net平台概述中并没有涉及功能相当的api一样)。
  
  java语言系统
  
  在高层次上,java语言系统看起来与.net framework类似。在这两种情况中,源代码都是被翻译成一种中间语言。但是,在.net平台中,这种中间语言是msil,而在java系统中,是java byte code。在这两种情况中,中间语言被带入到运行环境中。在framework中,运行环境是common language runtime。对于java,运行环境是java虚拟机(java virtual machine)。总体而言,common language runtime和java虚拟机有类似的功能,并且在技术进步方面,都无可置疑地在发展和彼此交互跃进。
  
  这两种系统之间最重要的区别与源代码到中间语言的翻译有关。在.net平台中,中间语言设计用来适应各种语言的需求。在java中,中间语言设计用来满足java的需求。虽然从理论上,从除java外的语言生成java byte code是可能的,但是实际上这还没有在任何一种商业产品中证明。
  
  客户端程序设计模型
  
  j2ee客户端程序设计模型重点集中在与浏览器的交互上。客户端程序设计模型有3部分:java applets,java servlets和java server pages。
  
  java applets用来对在浏览器内运行的java代码进行打包。在.net平台空间中,这在功能上与activex相当。在笔者的经验中,applets或activex组件使用的相对较少。电子商务体系结构一般都是以向表示层发出请求的浏览器为基础,然后表示层使用html页面进行响应。这种系统并没有使用activex或java applets,因此笔者在本白皮书中并没有讨论这些技术的任何一种。
  
  处理http请求和html响应的重要技术是java servlets 和java server pages 。这两种技术与微软空间中的asp.net(active server pages)类似。
  
  .net平台与java表示层中间的主要区别在于处理不同的客户端功能的方式。java表示层沿用了以前的microsoft asp (pre .net)模型,它使得表示层程序员的责任是决定最终的目的浏览器(或其他瘦客户端系统),瘦客户端系统的功能,以及如何生成html来充分发挥瘦客户端系统的优势。
  
  中间层基础结构
  
  对于j2ee,中间层基础结构是enterprise java beans (ejb)。该规范的当前版本是2.0,可以从网上获得 。与j2ee相当的.net平台是com+。
  
  在ejb和com+之间,体系结构的差别非常少。这两种体系结构本质上是从mts(microsoft transaction server)派生出来的,是由微软公司在1996年引入的最初的面向组件的中间层基础结构。由mts最先引入,然后合并到ejb和com+中的重要想法包括:
  
  ? 通过组件示例的共享所实现的高可伸缩性
  
  ? 以中间层为中心的安全性
  
  ? 自动事务处理边界管理
  
  ejb加入了一种新的体系结构想法,一项自动管理组件状态的技术。这项技术被称为entity beans(实体豆)。虽然这种想法具有吸引力,但是当前的实施却依赖于独立于数据库缓存的中间层数据缓存。很不幸的是,在这两种缓存之间没有保持一致性的机制。这意味着对实体豆的任何使用都会带来数据库损坏的高风险。在缓存一致性问题解决之前,在最佳试验技术方面,必须得不断考虑实体豆技术。
  
  要连接ejb和com+的深入比较,请参阅笔者最近的著作 。
  
  程序员企业级api
  
  我们调用java enterprise api 时的最重要部分如下:
  
  ? java database connection (jdbc,java数据库连接) 2.0 ?c 是用于从java中访问关系型数据库的api 。这与.net平台空间中的ado.net相当。
  
  ? java naming and directory interface (jndi,java命名与目录接口) ?c 是用于从java中访问企业名称与目录服务的信息的api 。这与.net平台空间中的active directory services interface (adsi,活动目录服务接口)有点类似。
  
  ? java message service (jms,java消息服务) 1.0 ?c 是用于异步工作流的java api 。这在功能上与microsoft message queue api相当,这个api已经被排队组件所替代。

扫描关注微信公众号