Java比.NET更好的101条理由

原创 2003年11月09日 23:00:00

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

我在http://www.manageability.org网站上偶尔看到这篇文章,觉得很有意思,对广大的开发者也算是个指引,所以翻译了出来。虽然有一些理由在我看来并不是十分正确,但大部分都是很有道理的。有些地方我加了一些说明,主要是我的看法和引证。

下面就是该篇文章的译文:

 

我列出了一个清单,做这个清单的原因主要来源自“Mozilla浏览器能做但IE不能做的事情”。说101条理由显得有些雄心勃勃,然而给予一个高的目标总是一件好事。如果不是这样,那么你总会放宽成功的标准。

我已经收集了71条理由。

 

1.  运行于多个平台,从最小的设备到最大的大型机。

运行在多个平台,从智能卡、嵌入设备(JStamp),手机(诺基亚、摩托罗拉、爱立信等等)、PDAPalmSymbianSharp)、笔记本电脑和台式机(MacOSLinux)、服务器(基于UNIX)、到不停止运行的大型机(IBM)。

 

2.  运行动态语言。

运行象Python(JPython)Scheme(JSchemeSISCKawa)RubyJRuby)、SmalltalkBistro)这样的动态语言。对比的是,移植到.NET上的只有一个Python的商业开发工具(译者注:是ActiveState公司出品的,python.org也出了一个在.NET平台上运行的版本,但这个版本不是以first-class方式出现的。以前曾听过ActiveState是被微软控股的,如果这样,它积极响应.NET倒是很正常的事。),而且性能让人失望。此外,对比CLRJVM也会得出相似的结论(译者注:这个我并不认同)。

 

3.  在一个平台上编译可以运行于另一个平台

Visual Studio.NET.NET SDK最终用户协定已经指明通过它们编译的代码不能运行于非微软平台。

 

4.  更小的运行时下载

JRE的运行时环境下载只有<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />8M,而.NET则超过它的两倍(例如20M)。

 

5.  没有强制升级,没有签署费用,没有软件保险费用。

有多少MIS组织被微软严格的许可协议掌控着?

 

6.  同一台计算机上可以运行多个版本的VM

同时运行JVM的多个版本在同一台计算机上是很常见的事情。这在你想测试你的程序在不同版本的JVM下运行的情况时是很有用的。但在.NET上呢?

通常基于微软技术的产品都需要几台计算机运行不同版本的Windows去做测试。事实上还有一个很大的问题,那就是微软甚至限制许可去用VMWare(允许某个产品运行在多虚拟机上),为了它的6000个销售员(参见http://news.com.com/2100-1001-272789.html?tag=rn)。

 

7.  开源社区的巨大革命。

庞大的开源项目代码的存在价值是不能被忽略的。这提供给了开发者一个巨大的可重用的代码库。而事实上许多.NET的开源项目都是重写了Java的项目而已(译者注:这是一个事实,比如.NET上比较著名的几个开源项目NAntNDocNUnit等等)。

 

8.  商业质量的低成本IDE

EclipseNetbeans开发环境是免费的,并可用于任意类型的软件开发。JBuilderJDeveloper在教育领域上的使用是免费的。而Visual Studio.NET则需要花费500美元。而且,如果你认为SharpDevelop是属于商业软件,那么继续这样认为。(译者注:SharpDevelop是一个开源的基于C#编写的IDE,但它的许多组件都是.NET FrameWork SDK提供的,比如属性编辑器等等,而且它包含了商业组件,如Magic那一系列的控件,我曾经研究过SharpDevelop的源码,具有一定的参考价值,但和Eclipse的意义相比,天壤之别。)

 

9.  更多的职位需求

Monster.com上查询一下会很快发现Java的职位比C#的多十倍。事实上,许多C#的工作也需要具有Java的技能。

 

10.对遗留系统具有更好的更标准的集成性

JCAJava连接器架构)是连接企业信息系统(EIS)的一个标准,JCA支持操作如SAPIBM CICSPeopleSoftOracleSiebelScreens 3270AS/400, Unisys, ADABAS-C, VSAM, Codasyl, IMS, Tuxedo等等。这样级别的集成性在.NET上并不具备。

 

11、制造商和技术支持的更多选择

Java技术被许多制造商支持,这样你可以选择更好的符合你项目需求的产品。Java标准API总是设计成支持多种不同的实现。(译者注:SUN曾经说微软是在做一个小蛋糕,自己吃掉大半,而SUN是在做一个大蛋糕自己吃掉一小部分)。

例如JMSJava消息服务)标准被不同的制造商如IBMTibCoProgressSpiritSoftFiorinaSwiftOpen3JBOSS等支持,你可以有选择任何一款适合你的产品,而在微软的平台上,你只有选择MSMQ

 

12、编译成机器码

Java有几个编译成机器码的解决方案,编译成机器码主要是为了保护知识产权或提高运行质量。TowerJInstantiationsJoveExcelsior JETGNU GCC都提供了编译成本地机器码的解决方案。(译者注:编译成机器码在很多时候都不是好的提升运行效率的方式,而JIT的好坏才应该是关键,所以我认为这一方面倒是微软的JIT更出色一些,这主要是因为.NET的字节码设计的更合理先进一点。但这也是牺牲了跨平台性而得来的。)

 

13、未来的考验

Java可以胜任未来的考验,或者说能够导向未来。这样你现有的代码将不会过时,为什么?因为我能运行Java在今天和将来的计算机上。你不能确保微软的.NET也能够做到这一点。一个鲜活的例子就是他们对VB6的支持,现在VB6已经过时了。对每个项目来说,能够延续多年是一个至关重要的问题。你想过没有,当微软声称DNA已经过时之前你应用DNA多长时间了?(译者注:DNA大概活了不到两年,呵呵)。

 

14、企业最流行的语言

………………

 

下面还有很多条,以后再翻译吧,翻译实在是件累人的事情,如果等不及的话就自己到http://www.manageability.org/blog/why%20java/view上看看,顺便也可以看看《Top Ten Reasons to Use .NET Debunked!》这篇文章

JAVA 与.NET 在前途上面的比较

JAVA 与.NET JAVA语言发明已有10年历史,在IBM、SUN等公司的推动下已经比较稳定与成熟,获得了大规模企业的普遍应用。时至今日,J2EE已经发展成为一个覆盖面广,效率高,易用性强的技术平...
  • zhoufoxcn
  • zhoufoxcn
  • 2006年11月25日 13:21
  • 3072

为什么会有Java,为什么会有.NET (java和.net哪一个好?)

为什么会有Java,为什么会有.NET     有人说,Java是为了跨Windows和UNIX而产生的。是这样吗?   Sun有自己的操作系统solaris,并且打的是高端市场,而Java发展早期阶...
  • yanming19891101
  • yanming19891101
  • 2010年01月16日 23:17
  • 509

对java与.net平台进行的分析和看法

对java与.net平台进行的分析和看法一、简介 JAVA与.NET继续发展下去,可能的两种结果:其中的一种退出竞争或是两种共存,而共存的可能性更大。JAVA得以生存的原因在于它的时间优势:它已经发展...
  • parrylau
  • parrylau
  • 2008年01月03日 18:33
  • 1620

Java IO 装饰类

  • carolzhang8406
  • carolzhang8406
  • 2011年09月03日 16:27
  • 555

对C++中类的组合和继承的比较

一:组合是整体与部分的关系,是“有一个”的关系。例如:类B中有类A的对象。 二:继承是特殊域一般的关系,是“是一个”的关系。例如:类B的对象是类A的一个对象。这就是类型兼容规则存在的理由。打个比方:...
  • CSDN_LYY
  • CSDN_LYY
  • 2015年04月09日 23:06
  • 411

从 .NET 和 Java 之争谈 IT 行业

 一、有些事情难以回头 开篇我先表明自己的立场:同时使用 .Net 和 JAVA,但更加偏爱.Net。原因很简单: .Net语言更具开放性,从开源协议和规范可以看出;语言更具优势严谨;开...
  • ls_kevin
  • ls_kevin
  • 2016年11月22日 17:51
  • 1700

.Net与JavaWebB/S开发区别优劣

.Net 开发工具:visual studio 开发语言:C# 数据库:SQLServer 服务器:Windows Server 部署工具:IIS MVC框架:MVC3.0+ ORM:F...
  • lishengko
  • lishengko
  • 2017年03月02日 13:39
  • 1529

Java 8 的 JVM 有多快?Fork-Join 性能基准测试

Java 8 已经发布一段时间了,许多开发者已经开始使用 Java 8。本文也将讨论最新发布在 JDK 中的并发功能更新。事实上,JDK 中已经有多处java.util.concurrent 改动,但...
  • wangpeng198688
  • wangpeng198688
  • 2015年12月24日 12:33
  • 1250

比json更好用的数据封装:MessagePack

MessagePack 的官方介绍是:like json, and faster , smaller.... http://msgpack.org/ 占容量更新,速度更快; 技能的开发语...
  • linjf520
  • linjf520
  • 2014年01月17日 18:24
  • 2398

在Java的黄金时代下,.Net真的没落了吗

《IT项目管理与职业生涯规划大型论坛》中国.苏州 免费报名:http://www.hdb.com/party/b8an2.html?hdb_pos=manager_info 比尔盖茨公认的...
  • S_king_
  • S_king_
  • 2017年11月22日 14:03
  • 427
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java比.NET更好的101条理由
举报原因:
原因补充:

(最多只允许输入30个字)