通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

且看微软的.Net和Sun公司的J2EE如何对垒

http://www.iyit.net  日期:2006-6-12 1:59:18  来源:  点击:
参加讨论】导 读:面对微软推出的.Net FRAMEWORK,你可能会有以下疑问:

准确地讲.Net平台是什么?

如何将.Net的体系结构和J2EE对比?

从.Net的体系结构演绎出的一整套关于企业软件开发方案中我们能学到此什么?

在本文中作者将为你解开这些疑问。

廖永康

原文出处:http://java.sun.com/features/2000/11/dotnetvsms.html

即使你没有专门针对微软平台写过程序,你可能也会听到过微软的.Net。这是微软对最近一连串和非视窗事件竞争的回答。如果你读到过有关新闻、来自微软的撰稿、或者通过在MSDN端浏览得到的不完整的技术资料、或者你注意到了微软专家开发者会议(会上已经演示了.Net平台)的话,你可能至少还有两大疑问:

* 准确地讲.Net平台是什么?

* 如何将.Net的体系结构和J2EE对比?

如果你再深入一步的话,你可能还有第三个疑问活跃在你的脑海里:

* 从.Net的体系结构演绎出的一整套关于企业软件开发方案中我们能学到此什么?

.Net框架是其生命周期的十分早期阶段的产品,微软.Net部门还会不断地更深入和仔细地开发它,但是无论怎样,我们已经能够从已有的资料对这些问题作出公正的正确的回答。

它是什么?(.Net是什么?)

现在在众多的论坛中对.Net的反思,使人不禁联想起三个瞎子摸象的寓言;根据你的洞察力,可能得到非常不同的结论:有人认为.Net是微软下一代Visual Studio的开发环境;有人认为它只是一种新的编程语言(C#);还有人为它是基于XML和SOAP的一种新的数据交换和报文的工作框架。实际上,.Net包含了这几部份内容,而且还会更多。

首先,让我们看一些具体的细节,浏览一下组成.Net平台的一系列技术构件:

l C#:是一种新写的描述(书)构件的语言,它将C、C++和Java的元素集成起来,并增加一些特点如:元数据标记、相关元素的开发。

l “公共语言运行时”:它以中间语言(IL)格式,运行字节代码,用一种语言写的代码和对象只要编译器是针对这种语言开发的,显然能够编译成IL运行时。

l 一组基本的可从“公共语言运行时”访问的构件(元件),它可提供各种功能(如:连网功能、包容器功能等等)。

l ASP.NET:是新的ASP版本,支持将ASP编译成公共语言运行时功能(所以用任何语言写的ASP脚本,都能和IL捆绑在一起)。

l 视窗格式和Web格式:一种新的可从Visual Studio访问的UI构件框架。(用户接口=UI)。

l ADO:将XML和SLAP用于数据交换的新一代ADO数据访问构件(元件)。

.Net和J2EE如何比较?

正如我们所能看见的.Net平台,在其伞型结构下有一个技术矩阵(宝塔)。显然微软为了抓住视窗平台的开发商,正在将这些技术变成现有平台如J2EE和CORBA的代用品。但是怎样对它们进行逐项比较呢?一种方法就是将.Net和J2EE作成以下对比列表:

.Net J2EE 关键差异

C#编程语言 Java编程语言 C#和Java均来自C和C++,最显著的特 点(如垃圾收集层次结构的名字空间)在两 个方面。C#借用了JavaBeans的某些构件概念(特性属性、事件等),并增加了 某些自己的概念(如元数据标志),但将 这些特点合并成不同的语法。 Java以Java虚拟机方式运行在任何平台上,而C#在可预见的将来,仅运行在视 窗环境内。C#隐含地结合到IL公共语 言运行时中,(见后),然后按合理的顺 序(JIT)运行。编译成的字节编码或者整个编译成的自然编码。Java代码按照Java 虚拟机字节代码方式运行,它由VM解 析或JIT编译,或者整个编译成自然代码。

.Net公共元件(填补“.Net 框架结构的SDK”) Java核心API 高层的.Net元件,包括支持用XML和SOAP 的分布式访问(见ADO.NET)。

ASP.NET页面(ASP.NET) Java服务器页面(JSP) ASP.NET使用Visual Basic、C# 可能还有一 别的语言作为代码段。通过公共语言运行 时全部编译成自然代码(与此相对应<相反> 是象APS那样,每次都解析执行)。JSP使 用Java代码(段或者JavaBeans参考),或者 编译成Java字节代码(按需或批编译要根据 JSP实现系统来决定)。 .Net公共语言运行时允许以多种语言的代码 (程序)在视窗环境下使用一组共享的元件。 优先于.Net框架的所有元件(公共元件、ASP.NET等)。

IL公共语言运行时 Java虚拟机和CORBA IDL和ORB Java的虚拟机规程,允许Java字节代码, 在任何平台上按JVM方式运行。 CORBA允许多种语言的代码使用一组共享 的对象,在任何带有ORB的平台上运行, 并不是紧密地集成到J2EE框架内。 同样的Web元件(如基于JSP的文件)在标准 的Java平台上是没有的,某些专有的元件 只能通过Java IDE等得到。

视窗格式和Web格式 Java的飘移 通过MS Visual Studio的IDE而不是在本文 所说的IDE,支持视窗格式和Web格式的 RAD开发,在许多Java的IDE和工具中都 支持“飘移”(Swing)。

ADO.NET和基于SOAP的Web服务 JDBC、EJB、JMS和Java XML库(XML4J、JA-XP) ADO.NET建立在位于HTTP协议顶部的XML数据 交换的基础上(指在远程数据对象和多个应 用程序捆绑之间的数据交换)。一般说来, .Net的Web服务假定了SOAP发信模型。 而EJB、JDBC等将数据交换协议和开发者 处理权分离,不工作在HTTP、KMI/JRMP或 IIOP顶层。

该表的比较只抓住了表面现象,这里再总结一下.Net和J2EE的比较:

l 特点:.Net和J2EE都提供同样优秀的特点,尽管提供的方法不同。

l 可移植性(Portability):.Net的核心只工作Windows环境下,但从理

论上讲可以支持以多种语言开发(只要这些语言的子集/超集已经定义 好,并为他们建立了IL编译器)。也就是说:SOAP的能力允许在其它平台上的元件(部件)和.Net元件进行数据报文交换。而.Net中的一些元素:象SOAP,其恢复和查找协议,作为公共部份提供构架的核心部件(IL运行时环境、ASP.NET内部的视窗格式和Web格式元件“合同”等)仍由微软掌握,微软只扮演整个.Net开发环境和运行时环境提供者的角色。其实早就有了来自开发者协会要求微软公开这些规程,但是这和微软的标准经验相违背。

另一方面,J2EE只要遵循Java VM(规则)和一组平台需要的服务就可以在任何平台上工作(EJB包容器、JMS服务等等)。所有这些定义了J2EE平台的规程,都已经公开发表,并提供公众阅读。因此,许多供应商也提供兼容产品和开发环境。但是J2EE是单语言平台,若用其它语言调用或访问对象,可能需要通过CORBA,但是CORBA支持并不是平台普遍存在的部分。

巨大的前景:

上述最后的几点勾画出.Net和J2EE的某些关键性的差异,以及微软在这些方面所扮演的角色。微软现在正在为.Net做两件值得注意的事:通过将XML和SOAP集成到他们的信息传输方案中,从而为以其它编程语言开发商和非.Net部件打开通向.Net的道路。

通过让语言元件交叉互动,.Net正在释放Perl、Eiffel、Cobol和其它编程器,允许它们扮演微软“沙盘”的角色。这些语言的爱好者应该特别遵守规则,因为他们中大部分人在微软/SUN/OpenSource竞争中感受到约束和定界。因此,只要在他的元件发信层使用XML和SOAP,微软就能支持他们将开放性部件加到他们的平台上,从而摆脱对专用性的依赖。

正确的响应是甚麽?

对于微软的开发商,.Net是一个好的构架,你可以将许多事情交给微软的体系结构去完成。ASP.NET比ASP好,ADO.NET比ADO和DCOM出色,但有所差别,C# 比C和C++更好。.Net最初版将在2001年的某个时候可以得到,因此你有足够的时间准备。但是可以肯定,它将成为微软平台的缺省(约定)开发环境。如果您现在正在微软的开发构架中从事开发工作,将.Net的元件采纳到你的体系结构中,肯定能够获得利益。

但是,.Net平台的几个期望目标极高,但不能保证全部起步,至少在短期内完成不了。例如IL公共语言运行时在使开发者获益之前还有某些明显的障碍需要克服。想要把每一种语言和元件运行时集成起来,必须定义这种语言的子集/超集,并清晰地影射到IL运行时上,和必须定义结构,以便提供IL需要的元数据,然后和必须开发适用于两种编译语言结构(对象、部件等)的编译器(从XML到IL和从IL到XML),集成到IL部件字节代码中,同时还要生成对现有IL元件的语言专用接口。

这里还有一些历史的因由,必须开发非Java语言到JavaVM的众多桥梁,如:Jpython、PERCobol、The Tcl/Java Project。同时,如果有足够的兴趣,几年前就应将Bertrand Meyes和一些别的Eiffel folk一起放到Eiffel-to-Java VM系统中(几年后),只有Jpython 例外。这些工具得到广泛的采纳,甚至在他们自己相关的委员会里也是这样,即使它们似乎能够提供一种方法,用你所偏爱的语言,为Java环境写代码(虽然不是整个J2EE构架)。然而为什么还这样缺乏热情?因为人们犹豫,不想承受从它们的开发语言中,将额外的翻译工作加到目标构架上。如果Java环境是目标,人们通常会选择学习Java。我预计,对.Net也是同样正确的。人们将会选择学习C#和用这种语言写.Net的部件。

另一点要注意:基于.Net的SOAP将用于分布式通信,谨防性能损失。SOAP基本上意味着在HTTP上的XML。HTTP不是一个高性能的数据协议,因此XML隐含一个XML语法解析层,也就是需要更多的计算开销。两者相结合会大大减少相对另一种发信/通信信道的事务处理速率。XML是一种非常丰富的、十分强大的发信用的元语言。HTTP是非常灵活可移动的,因此可以防止许多防火墙的损失,但是如果事务处理速率对你是优先考虑的话,请保持你的选项打开。

对于Java和开放资源委员会

请不要把.Net作为微软市场竞争的手段,继续以你们喜爱的方式理解.Net可能更容易接受。但是.Net并不是一种精巧的标志,而是微软策略的重大转移,将为其平台带来福音。他们正在为使其它的构架和平台在管理级上做得更好而奋斗。提供关于自身成本和无缝集成方面有用的可查询的统计资料。现在他们正努力把Java和开放资源自身所特有的元语言,逐步开放,然后力图直接满足开发商的需要。在过去一段时间里,由于他们没有做好,两件事情失败了。如果你认为自己是Java和无资源平台的福音的传播者,那么,竞争的性质就会改变。

另外,微软的IL运行时,至少可能有一个值得注意的目标:就是清除编程语言进入结构框架的障碍。Java清除了平台的障碍(当然在有限范围内,例如你不能没有硬件资源来制作软件)。但是为了用J2EE来作开发工作,你必须在Java环境下工作。而.Net是想让你使用你选择的语言来建造.Net应用程序,这是十分美妙的。尽管还有一些大问题没有解决。如:.Net中的IL方式什么时候和是否会实际上变成广泛使用的(工具)(如上所述)。不管怎样,这就表明了单语言的J2EE方式存在弱点。这个弱点的重要性可以怀疑,但是它依然存在,因此它值得Java委员会考虑。如果开发商真的认为是这样,那么就可以把力量放在Java字节代码生成器方面,以适应非Java语言,当然这需要组织和浓缩(汇总)。

再深入研究一下J2EE,立即可以得到一些结论。为了支撑该平台和.Net相较量的优势。首先XML支持要无缝地集成到结构框架中,我们且不说将XML SAX/DOM语法解析器作为一组标准服务或者在配置元件中,扩展XML的使用。这里需要XML的发信和操作处于随时可用状态。公认的做法是在JMS顶端用XML的内容发信,但是并不是所有的平台都有这种设施,XML空间是一堆杂乱无章的标准,非关键因素标准,API和DTD是你处理元语言时期望的。

但是微软已经将SOAP放在基础层,很难把某些可理解和有用的东西放到开发商手里。J2EE的倡议者需要用他们的平台做同样的事。记住一种可能性是将XML发信提供者层放在JMS的顶部。后面紧接着Java命名和目录接口或者带LDAP的JNDI、NIS和COS命名等等。这种和标准SOAP/BizTalk供应商,EBXML供应商等等的结合将是种令人印象深刻的语句(说明)。

澄清和更正:

由于本文在2000年8月份发表的,有40位读者以他们关心.Net和J2EE对比的想法返回给我们(见读者回信),本文作者Jim Farley筛选过这些内容,同时用电子邮件回复他们,因此增加以下的澄清和更正。

澄清:

C#的编译特点和Java的编译特点对比似乎让读者产生混淆,为了更清楚一点,我们用另一种方法比较:C#代码总是以自然的形式运行。Java代码典型地是以解析型字节代码运行;C#可整个编译成自然代码,或者编译到公共语言运行时字节代码中,然后在执行期间逐次编译自然代码。另一方面,Java代码典型地以运行时解析型字节代码方式运行(据此,其交叉平台能力可以增长)。同时也能够以逐次编译上下文连接方式运行;也有了一些Java自然代码编译器(Jove、Bullet Train、JET等)。

作为旁注(附注),微软要求遵循Java的约定解析性模式在这种模式中,设计用于虚拟机的字节代码,本身不用于自然代码优化,我没有看到有力的数据证明或反驳这个要求,(一般的应针对字节代码对比自然编译语言,或者特殊针对 Java对比C#)。

在回应中,有几位读者指出J2EE支持XML,这说明了这样一个事实:J2EE1.3版(现以草案方式发布)要求任何兼容J2EE的产品,必须包含Java XML SAX和DOM语法解析器。这正是我说的“把XML SAX/DOM捆绑到Java上。我已经要求他们采取进一步措施,以J2EE支持API方式直接支持XML协同工作。最理想的方法是基于J2EE的部件和服务,应让XML在某种程度上自动支持内建(对发信、接口描述、输出等)。

更正:

我在本文中说:C#“借用了某些JavaBeans的部件概念”。这句话没有证据,正如几位读者指出,更合适的说法是“微软C#的功能多于它们本身的COM和VB模型,这是由于来自其它已有的部件模型的影响".



编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:从 Visual Basic 6.0 到 Visual Basic.NET 的转换(1)
下一篇:.NET语言的选择
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
微软的远程处理框架.NET Remoting - 1 微软的远程处理框架.NET Remoting - 2 微软建议的ASP性能优化28条守则(1)
微软建议的ASP性能优化28条守则(2) 微软建议的ASP性能优化28条守则(3) 微软建议的ASP性能优化28条守则(4)
微软建议的ASP性能优化28条守则(5) 微软建议的ASP性能优化28条守则(6) 微软建议的ASP性能优化28条守则(7)
微软建议的ASP性能优化28条守则(8) 微软建议的ASP性能优化28条守则(9) 微软修补其IIS软件中的又一处安全漏洞
比尔·盖茨在微软开发者成功之路大会上 微软Page Counter 组件参考(一) 微软Page Counter 组件参考(二)
remote script文档(转载自微软)(一) remote script文档(转载自微软)(二) remote script文档(转载自微软)(三)
remote script文档(转载自微软)(四) remote script文档(转载自微软)(五) remote script文档(转载自微软)(六)
remote script文档(转载自微软)(七) 微软dvwssr.dll后门 微软 Windows 徽标做法一例
最新更新 热点排行 推荐新闻
使用 ASP.NET 加密口令
[ASP.NET] Session 详解
从ASP迁移至ASP+
从ASP迁移至ASP+ ----------进入DataS
从ASP迁移至ASP+ --将HTML表格转换为A
CGI教程(2)
CGI教程(3)
CGI教程(5)
CGI教程(6)
CGI教程(7)
CGI教程(8)
CGI教程(5)
CGI教学:第一章 cgilib例
CGI教学:第二章 动态创建图像
CGI教学:第三章 计数器的编写方法
为ASP.NET 2.0菜单控件增加target属性
将Asp.net页面输出为HTML
在ASP.NET中防止注入攻击
ASP.NET 2.0 中的异步页功能应用
asp.net面试试题收集
QQ密码本地破解
msn8.0下载
PPLive最新内部版本揭密
珊蝴虫QQ探测隐身的招式用法
Visual Basic 概述
exeplorer.exe错误的问题的总结、解决
Authorware7.0基础与实例教程连载 第5
解决Windows中的explorer.exe出错
Windows常见文件修复技巧
Photoshop打造美女性感纹身(2)
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
ASP.NET 2.0 中的异步页功能应用
Windows下的虚拟主机设置全功略
危险无处不在 Html标签带来的安全隐患
网络游戏是06年互联网最具发展潜力业务
巧用ACDSee 8.0截取QQ表情每一帧
解除瑞星 诺顿遗留下的杀毒兼容问题
第一款开源AJAX安全扫描工具Sprajax
WinRAR人性化功能揭密
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
Linux操作系统12则经典应用技巧
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息