j2ee与net技术架构比较_第1页
j2ee与net技术架构比较_第2页
j2ee与net技术架构比较_第3页
j2ee与net技术架构比较_第4页
j2ee与net技术架构比较_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

J2EEJ2EE 与与 NET NET 技术架构的比较技术架构的比较 随着三层 多层企业信息系统结构的深度发展和下一代分布式计算模型 Web 服务的出现 软件开发中关于平台 框架 语言的竞争也愈演愈烈 自从微软 推出 NET 平台 业界关于 J2EE 平台与 NET 平台的比较从未停止过 本文在收 集整理相关文章的基础上 试图对目前两种主要的应用软件开发技术架构 J2EE 与 NET 进行一个客观 公正 全面的比较 以帮助软件开发商选择一个较为合 适的开发平台进行应用软件的开发 一 一 J2EEJ2EE 简介简介 Java 于 1995 年由 Sun 公司推出 当时它的主要用途是制作产生动态网页 的 Applet 小程序 后来 人们发现 Java 的 一次开发 多次运行 纯面 向对象的特性 垃圾回收机制和内置安全特别适合于开发企业应用系统 于是 企业应用开发商纷纷在 Java 标准版的基础上各自扩展出许多企业应用 API 其 结果导致基于 Java 的企业应用呈爆炸式增长 但是各企业系统 API 之间又不能 相互兼容 破坏了 Java 的平台独立性 鉴于此 Sun 公司联合 IBM Oracle BEA 等大型企业应用系统开发商于 1999 年共同制订了一个基于 Java 组件技术的企业应用系统开发规范 该规范定义了一个多层企业信息系统 的标准平台 旨在简化和规范企业应用系统的开发和部署 这一规范和其定义 的平台就构成了 J2EE 它定义了基于组件的方式设计 开发 组装和部署企业 应用系统的各个组成部分 同时 J2EE 规范定义了分布式多层应用系统模型 组件重用策略 一体化的安全模型以及灵活的事务控制策略等 使得独立软件 提供商 ISV 能够比以前更快的速度 向市场推出用户适应的解决方案 J2EE 是一套针对于企业级分布式应用的计算环境 其结构体系如图 1 所示 它定义了动态 Web 页面功能 Servlet 和 Jsp 商业组件 EJB 异步消息传 输机制 JMS 名称和目录定位服务 JNDI 数据库访问 JDBC 与子系统 的连接器 JCA 和安全服务等 需要注意的是 J2EE 本身是一个标准 而不是一个现成的产品 虽然现在 有很多符合 J2EE 标准的产品 它由以下几个部分组成 1 J2EE 规范 该规范定义了 J2EE 平台的体系结构 平台角色及 J2EE 中每种服务和核心 API 的实现要求 它是 J2EE 应用服务器开发商的大纲 2 J2EE 兼容性测试站点 Sun 公司提供的一个测试 J2EE 应用服务器是 否符合 J2EE 规范的站点 对通过该站点测试的产品 Sun 公司将发放兼容性证 书 3 J2EE 参考实现 即 J2EE SDK 它既是 Sun 公司自己对 J2EE 规范的一 个非商业性实现 又是为开发基于 J2EE 企业级应用系统原型提供的一个免费的 底层开发环境 4 J2EE 实施指南 即 BluePrints 文档 该文档通过实例来指导开发人 员如何去开发一个基于 J2EE 的多层企业应用系统 2 图 1 J2EE 体系结构图 二 二 NET NET 简介简介 NET 来自于微软 是一套全能的框架平台 支持 C C J VB ASP 等语言 能够解决 C S B S 和单机等结构的软件开发需求 NET 平台将这些 语言编译成 CLR 语言 使它们可以无差别的运行在 NET Framework 上 是 2000 年以后微软最为重要的软件开发套件产品 NET 的绝大部分是微软 Windows DNA Distributed Network Architecture 的 重写 DNA 是微软以前开发企业应用程序的平台 Windows DNA 中包括了许多已 经被证实的技术 新的 NET 框架取代了这些技术 并包含了 Web 服务层和改良 的语言支持 图 2 是 NET 开发平台的体系结构 3 图 2 NET 体系结构图 NET 框架实现了语言开发 代码编译 组件配置 程序运行和对象交互等 各个层面的功能 为 Web 服务及普通应用程序提供了一个托管 安全和高效的 执行环境 所有在 NET 平台上创建的应用程序运行都需要两个核心模块 Common Language Runtime CLR 通用语言运行时 和 NET Framework 类库 CLR NET 的虚拟机 CLR 是一个软件引擎 用来加载应用程序 确认它们可以没有错误地运行 并进行相应的安全许可验证 执行应用程序 然后将被清除 它为 NET 应用程序提供了一个托管的代码执行环境 托管意味 着将原来由程序员或操作系统做的工作剥离出来交由 CLR 来完成 从而使程序 运行获得更高的安全性和稳定性 这些工作包括内存管理 即时编译 组件自 描述 安全管理 代码验证以及其他一些系统服务 CLR 提供一个技术规范 无论程序使用什么语言编写 只要能编译成中间语言 就可以在它的支持下运 行 这样 NET 应用程序就可以独立于语言 CLR 还在应用程序运行环境中为基 于组件的编程提供了直接支持 比如它支持属性 事件 对象 继承性 多态 性和接口等组件编程特性 CLR 中的自动垃圾收集器负责 NET 应用程序运行时的内存分配 对象布局 内存释放等内存管理问题 彻底解决了多年来困扰程序员的内存泄漏问题 大 大增强了应用程序的健壮性 即时编译器在运行时 将中间语言以调用对象的方法将单位动态编译成本 地二进制代码 2 类库 NET Framework 类库向程序员提供软件组件 用来编写在 CLR 控制下运行的代码 它们按照单一有序的分级组织提供了一个庞大的功能集 包括从文件系统到对 XML 功能的网访问的每一样功能 该类库为开发提供了三 种基本编程模板 基于 ASP NET 的 Web 表单应用 基于 ASP NET 的 Web 服务应 用和基于传统 GUI 交互的 Windows 应用 4 NET Framework 类库由一组广泛的 面向对象的 可被开发者用于任何编 程语言的可重用类集合组成 它提供了几乎所有应用程序都需要的公共代码 在 此之上是许多应用程序模板 这些模板为开发网络站点和网络服务提供特定的 高级组件和服务 无论是传统的命令行程序 还是 Windows 图形界面程序 亦 或是面向下一代互联网分布式计算平台的 ASP NET 或 Web 服务应用 与在 Windows 和它的 SDK 中发送的代码库一样 NET 框架类库将程序员从繁重的编 程细节中解放出来 而专注于程序的商业逻辑 它将核心 Win32 API 最常用的 功能和外挂 SDK 的功能封装到了一个统一的包中 并采用清晰而有条理的方式 对类库进行分组和描述 这样开发者就能够更方便地找到其应用程序所需要的 大多数功能 三 三 J2EEJ2EE 与与 NET NET 比较比较 1 体系架构的比较 作为彼此竞争的应用平台 J2EE 和 NET 开发平台在目标和体系结构上极其 相似 但在实现上又完全不同 类似的平台基础构造 J2EE 和 NET 两个平台在底层的执行引擎都源 于托管的虚拟机概念 但 NET 的 CLR 沿着 Java 虚拟机 JVM 走得更远 CLR 在借 鉴了 JVM 的自动垃圾收集 异常处理等机制的同时 又为 NET 平台添加了多语 言支持 组件自描述等新的特性 在 NET 和 J2EE 平台上 程序的编译都经过两个类似的过程 首先 特定 高级语言编译器将 C 及其他 NET 语言 和 Java 源代码分别翻译成中间语言 IL 和字节代码 ByteCode NET 在中间语言设计时通盘考虑了多个主流高级 语言 在这一层面实现了 NET 平台的跨语言承诺 J2EE 的基石是 Java 语言 它最典型的特征是 一次编写 多次运行 跨平台是 J2EE 一直引以为豪的关键 这是通过 JVM 来实现的 其次 在执行时 中间语言被即时编译器 JIT 编译成特定平台的二进制代 码 字节代码则通过 JVM 解释执行 完成各自语言的指令功能 鉴于微软在 Wintel 平台 上的代码优化功底 NET 代码的执行速度较之于 Java 有明显 的优势是不争的事实 但在 Unix Linux 平台上 由于 NET 迟迟未能实现其跨 平台的承诺 J2EE 几乎成了惟一的选择 执行效率的比较也就无所谓 在代码 执行的同时 通用语言运行时和 Java 虚拟机也都提出了异常捕捉 类型安全 内存分配和垃圾收集等自动化内存管理工作 大大减轻少了现代软件的内存泄 漏问题 减轻了程序员的繁重负担 面向对象程序设计在 J2EE 和 NET 平台中都获得了直接的支持 单根继承 加多接口实现是它们共有的特征 但在面向对象之外 NET 对现代组件编程提 供了直接支持 当然 当下很多企业中间件都是基于 J2EE 平台 只是 NET 从 设计 编码 配置到运行都给予了组件编程更多 更直接的支持 在基础的和企业级的服务上两个平台很难一决高低 从基础的集合 字符 串操作到企业级的 API 接口 如 JMS JDBC JAX 和 JNDI 等 J2EE 在这方面有 着非常坚实的结构 微软 NET 框架类库也不示弱 提供了从图画 网络 线程 到 ADO NET ADSI Windows 表单和 ASP NET 等一系列的 API 除去 API 类库的无缝的功能复用外 对本地平台的调用操作也是值得关注 的 CLR 和 Java 虚拟机都支持本地方法的调用 在异构平台方面 J2EE 更钟情 于 IIOP Internet InterORB Protocol 而 NET 则使用 SOAP 5 2 相同的三层 多层体系 基于三层 多层分布式计算结构已毋庸置疑地 成为当今企业应用的主流模式 也是两个平台较量的着力点 在客户端 表示层负责用户与系统的交互 对于不同的处理要求 NET 和 J2EE 都提出了基于桌面的应用程序和基于浏览器的 Web 应用的开发组件 Java Application 与 Windows 表单 Java Servlet JSP 与 ASP NET 双双形成犄角之 势 但 Windows 表单依赖微软桌面系统的天然优势 无论在交互速度还是在界 面的表现性能上都较 Java Application 稍胜一筹 Servlet JSP 与 ASP NET 是 目前企业在 瘦客户端 应用的重点 两者都基于 HTTP 请求 响应模型 通过 HTML 浏览器页面完成用户交互 虽然 ASP NET 声称在底层通过编译执行获得了 相当高的处理速度和服务器方控件的浏览器自适应能力 但目前并没有这方面 的硬性数据 很难据此而论高低 在缓存 状态优化等方面两者可谓是旗鼓相 当 另一个与客户端应用相关的技术是 ActiveX 与 Applet 从目前的趋势来看 它们在两个平台上的地位逐渐边缘化 也不为大多数企业所接受 在中间层 分布式业务组件负责企业应用的商业逻辑部署 由于这些业务 组件经常负责处理数据库连接 网络资源和线程等高昂的资源 所以一直是三 层 多层架构的关键和企业应用的核心 J2EE 的 EJB 是一个成熟的 得到业界 广泛支持的大型企业级组件框架 而 NET 组件则是建立在新型的 COM 服务之上 两者在组件与操作系统的交互 客户端资源共享等方面都有很好的支持 NET 则通过元数据支持自描述性的组件开发 XCOPY 部署以及多版本共存 无需注 册表和描述文件 对企业客户有一定的吸引力 在后端数据层 两个平台都为数据库连接量身定做了一套数据存取模型 J2EE 的 JDBC 和 NET 的 ADO NET 它们在支持传统 SQL 数据源的同时 也支持 新型的 XML 数据源 这方面由于更多地涉及到具体的数据库产品 很难说那种 数据模型更有优势 两种架构的简单对照如表 1 所示 表 1 J2EE 与 NET 架构比较 架构 比较项 J2EE NET 通信协议 Remote Method Invocation over Internet InterOrb Protocol RMI IIOP XML 编程语言 Java C VB NET COBOL 等 运行时环境 Java Virtual Machine JVM Common Language Runtime CLR 胖客户端 Java SwingWindows Forms 目录服务 Java Naming and Directory Interface JNDI Active Directory Services Interface ADSI 数据访问 Java Database Connection JDBC Java Connectors ADO NET 异步消息处 理 Java Message Service JMS Microsoft Message Queue 6 表示层技术Servlets Java Server Page JSP ASP NET 中间层组件 模型 EJB JavaBeanCOM COM 安全访问 JAASCOM Security Call Context 事物处理 Java Transaction Server JTS Microsoft Distributed Transaction Coordinator MS DTC 开发工具Borland JBuilder IBM VisualAge 等 Visual Studio NET 2 移植性比较 在移植性方面 NET 支持跨语言 J2EE 支持跨平台 微软通过 NET 通用语言运行时来消除编程语言的差别 选择 NET 平台 就意味着选择 Windows 这句话至少在可预见的一段时间里仍然是一个基本 事实 J2EE 则通过 Java 虚拟机来消除平台差别 跨平台是它的一大卖点 也 是在选择企业应用开发平台时的一个重要参考因素 几乎所有的主流操作系统 都提供了对 J2EE 的支持 实际上如果要搭建跨 Unix Windows 等多个操作系统 平台 J2EE 平台几乎是惟一的选择 J2EE 更关注跨平台而不是跨语言 但微软 认为 如果企业的应用都能通过标准协议以 Web 服务的方式发布 那么平台都 是中立的 为了吸引更多的开发者和鼓励广大企业厂商转到 NET 平台 微软提 出了多语言支持 希望用跨语言的交互性来平衡跨平台的互操作 3 性能比较 性能是 J2EE 和 NET 喋喋不休的话题 二者之间著名的论战是一个关于宠 物店的范例应用 宠物店是 Sun 一度以来作为 J2EE 典型应用的展示范例 而 NET 自告奋勇 地在自己的平台上实现了该宠物店应用 且声称代码行是 J2EE 的 1 3 效率却是 J2EE 的 30 倍 但 Sun 的理由是这个范例根本不适合用 来做性能比较 该范例实现也没有做针对性能的优化 而且指责微软通过后端 数据库优化和缓存虚抬了 NET 平台的效率 这样的争吵当然不能作为判断的依 据 目前也没有见到更客观的第三方评测报告 在 Wintel 平台 上也许没有 理由怀疑 NET 的性能 至于非 Windows 平台 NET 和 J2EE 也不再具有可比性 4 安全性 稳定性比较 WINDOWS 本身的安全漏洞 使得 NET 的安全性不如 J2EE 同时 在应用服 务器的选择上 NET 只能用 IIS 安全性 稳定性难以保证 而 J2EE 有更多的 选择 可以在诸多遵循标准的厂商所提供的应用程序服务器中 选择最符合需 要 成本最低 而且又被认为是最佳的平台 5 可扩展性比较 NET 平台的扩展思想是基于软件的横向扩展 而 J2EE 平台的扩展思想则 是基于硬件的纵向扩展 Windows 系统一般只能扩展到不超过 8 个处理器 而 Sun 的系统却可以扩 展到 100 个甚至更多处理器 7 基于 J2EE 平台的应用程序可被部署到各种操作系统上 例如可被部署到高 端 UNIX 与大型机系统 这种系统单机可支持 64 至 256 个处理器 这是 NT 服务 器所望尘莫及的 J2EE 领域的供应商提供了更为广泛的负载平衡策略 能消除 系统中的瓶颈 允许多台服务器集成部署 这种部署可达数千个处理器 实现 可高度伸缩的系统 满足未来商业应用的需要 6 成熟度比较 在平台的成熟度方面 两者也有一比 J2EE 在 1999 年形成了成熟的架构 发展至今已经具有相当成熟的 经过检验的企业应用系统 而 NET 究其渊源是 源自微软以前开发企业应用程序的平台 DNA Distributed Network Architecture 其中包括了许多已经被证实的技术 并且这些技术已经在产 品中得到实现 包括微软的事务服务器 COM 消息队列和 SQL Server 数据库 等 7 第三方厂商的支持 J2EE 作为一种开放的规范 从一开始就得到了众多厂商的支持 IBM BEA HP Oracle 等在 J2EE 的实施上都有较大的投入 目前市场上最好 的 J2EE 应用服务器并不是 Sun 与 Netscape 合资的 iPlanet 而是 BEA 的 WebLogic 和 IBM 的 Webshpere 开发工具有 Borland 的 JBuilder Sun 的 Forte for Java BEA 的 WebLogic Workshop Oracle 的 JDeveloper IBM 的 VisualAge for Java 等 而 NET 在设计之初就紧紧地把平台规范与产品胶合在一起 虽然 NET 架 构的一小部分具有开放性 如 C 语言 通用语言基础构造 CLI 和 Web 服务标准 但至少目前很难想象会有一个非微软的 NET 实现 Visual Stdio NET 是其唯 一的开发工具 8 开源支持比较 J2EE 开源产品众多 免费框架居多 相应的最佳实践设计模式层出不穷 而 NET 无开源社区支持 是以框架开发者为主导的设计 9 学习成本比较 J2EE 门槛较高 由于多且杂 需要开发人员花费很长时间才能熟悉整个体 系 而 NET 门槛较低 使用方便 学习成本较低 但是 对于开发人员来说 NET 在系统整体架构的设计方面不如 J2EE 易于把握 10 对 WEB 服务支持的比较 从 NET 和 J2EE 这两个平台的发展历程来看 NET 从一开始就深深打上了 Web 服务技术的烙印 在它的市场推广活动中 无时无刻不凸显其作为 Web 服 务的开发和部署平台的特征 可以说 NET 天生就是为 Web 服务准备的开发和 部署平台 相对 NET 而言 J2EE 是一个比较 老 的东西 最初它是为了将 Java 平台拓展到企业级应用领域而制订的一个平台框架规范 随着 Web 服务技 术的兴起和发展 J2EE 平台作为一个企业级应用的开发和部署平台 无法回避 业界的重大技术革命 Web 服务 J2EE 也不断地引入了对 Web 服务的支持 从服务描述 服务实现和服务的发布 发现与绑定 以及服务的调用和执 行这些不同的角度看 J2EE 和 NET 的支持基本不相上下 惟一的区别可能是 NET 的开发工具更为方便一些 集成度更高一些 在 Web 服务规范的控制方面 微软与 IBM 共同主推了大量的 Web 服务规范 在一段时间内 两家公司 Web 服务技术的市场推广活动都是联合举行的 不难 看出这两家公司在这个领域背后的战略合作关系 最初的 Web 服务核心技术 8 SOAP WSDL 主要由这两家公司制订 后来的 UDDI 是由这两家为首的多家核心 企业共同制订 再后来的一些不是核心的 Web 服务规范 如 WS Inspection WSFL WS Security WS Routing WS License 和 WS Referral 等 则完全是由这两家来制订的 不难看出 IBM 和微软对于 Web 服务的贡献 以及它们对 Web 服务规范的控制 尽管由于某种原因 Sun 公司曾经在很长的一段时间里被排除在 WS I 由 IBM 微软和 BEA 发起成立的促进 WEB 服务互操作的一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论