扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
我列出了一个清单,做这个清单的原因主要来源自“Mozilla浏览器能做但IE不能做的事情”。说101条理由显得有些雄心勃勃,然而给予一个高的目标总是一件好事。如果不是这样,那么你总会放宽成功的标准。
我已经收集了71条理由。
1. 运行于多个平台,从最小的设备到最大的大型机。
运行在多个平台,从智能卡、嵌入设备(JStamp),手机(诺基亚、摩托罗拉、爱立信等等)、PDA(Palm、Symbian、Sharp)、笔记本电脑和台式机(MacOS、Linux)、服务器(基于UNIX)、到不停止运行的大型机(IBM)。
2. 运行动态语言。
运行象Python(JPython)、Scheme(JScheme、SISC、Kawa)、Ruby(JRuby)、Smalltalk(Bistro)这样的动态语言。对比的是,移植到.NET上的只有一个Python的商业开发工具(译者注:是ActiveState公司出品的,python.org也出了一个在.NET平台上运行的版本,但这个版本不是以first-class方式出现的。以前曾听过ActiveState是被微软控股的,如果这样,它积极响应.NET倒是很正常的事。),而且性能让人失望。此外,对比CLR和JVM也会得出相似的结论(译者注:这个我并不认同)。
3. 在一个平台上编译可以运行于另一个平台
Visual Studio.NET和.NET SDK最终用户协定已经指明通过它们编译的代码不能运行于非微软平台。
4. 更小的运行时下载
JRE的运行时环境下载只有
5. 没有强制升级,没有签署费用,没有软件保险费用。
有多少MIS组织被微软严格的许可协议掌控着?
6. 同一台计算机上可以运行多个版本的VM。
同时运行JVM的多个版本在同一台计算机上是很常见的事情。这在你想测试你的程序在不同版本的JVM下运行的情况时是很有用的。但在.NET上呢?
通常基于微软技术的产品都需要几台计算机运行不同版本的Windows去做测试。事实上还有一个很大的问题,那就是微软甚至限制许可去用VMWare(允许某个产品运行在多虚拟机上),为了它的6000个销售员(参见http://news.com.com/2100-1001-272789.html?tag=rn)。
7. 开源社区的巨大革命。
庞大的开源项目代码的存在价值是不能被忽略的。这提供给了开发者一个巨大的可重用的代码库。而事实上许多.NET的开源项目都是重写了Java的项目而已(译者注:这是一个事实,比如.NET上比较著名的几个开源项目NAnt、NDoc、NUnit等等)。
8. 商业质量的低成本IDE
Eclipse和Netbeans开发环境是免费的,并可用于任意类型的软件开发。JBuilder和JDeveloper在教育领域上的使用是免费的。而Visual Studio.NET则需要花费500美元。而且,如果你认为SharpDevelop是属于商业软件,那么继续这样认为。(译者注:SharpDevelop是一个开源的基于C#编写的IDE,但它的许多组件都是.NET FrameWork SDK提供的,比如属性编辑器等等,而且它包含了商业组件,如Magic那一系列的控件,我曾经研究过SharpDevelop的源码,具有一定的参考价值,但和Eclipse的意义相比,天壤之别。)
9. 更多的职位需求
在Monster.com上查询一下会很快发现Java的职位比C#的多十倍。事实上,许多C#的工作也需要具有Java的技能。
10.对遗留系统具有更好的更标准的集成性
JCA(Java连接器架构)是连接企业信息系统(EIS)的一个标准,JCA支持操作如SAP、IBM CICS、PeopleSoft、Oracle、Siebel、Screens 3270、AS/400, Unisys, ADABAS-C, VSAM, Codasyl, IMS, Tuxedo等等。这样级别的集成性在.NET上并不具备。
11、制造商和技术支持的更多选择
Java技术被许多制造商支持,这样你可以选择更好的符合你项目需求的产品。Java标准API总是设计成支持多种不同的实现。(译者注:SUN曾经说微软是在做一个小蛋糕,自己吃掉大半,而SUN是在做一个大蛋糕自己吃掉一小部分)。
例如JMS(Java消息服务)标准被不同的制造商如IBM、TibCo、Progress、SpiritSoft、Fiorina、Swift、Open3、JBOSS等支持,你可以有选择任何一款适合你的产品,而在微软的平台上,你只有选择MSMQ。
12、编译成机器码
Java有几个编译成机器码的解决方案,编译成机器码主要是为了保护知识产权或提高运行质量。TowerJ、Instantiations的Jove、Excelsior JET和GNU GCC都提供了编译成本地机器码的解决方案。(译者注:编译成机器码在很多时候都不是好的提升运行效率的方式,而JIT的好坏才应该是关键,所以我认为这一方面倒是微软的JIT更出色一些,这主要是因为.NET的字节码设计的更合理先进一点。但这也是牺牲了跨平台性而得来的。)
13、未来的考验
Java可以胜任未来的考验,或者说能够导向未来。这样你现有的代码将不会过时,为什么?因为我能运行Java在今天和将来的计算机上。你不能确保微软的.NET也能够做到这一点。一个鲜活的例子就是他们对VB6的支持,现在VB6已经过时了。对每个项目来说,能够延续多年是一个至关重要的问题。你想过没有,当微软声称DNA已经过时之前你应用DNA多长时间了?(译者注:DNA大概活了不到两年,呵呵)。
14、企业最流行的语言
婵犵數濮烽弫鍛婃叏閻戝鈧倹绂掔€n亞鍔﹀銈嗗坊閸嬫捇鏌涢悢閿嬪仴闁糕斁鍋撳銈嗗坊閸嬫挾绱撳鍜冭含妤犵偛鍟灒閻犲洩灏欑粣鐐烘⒑瑜版帒浜伴柛鎾寸洴閹儳煤椤忓應鎷洪梻鍌氱墛閸楁洟宕奸妷銉ф煣濠电姴锕ょ€氼參宕h箛鏃傜瘈濠电姴鍊绘晶娑㈡煕鐎c劌濡介柕鍥у瀵粙濡歌閳ь剚甯¢弻鐔兼寠婢跺﹥娈婚梺鍝勭灱閸犳牠骞冨⿰鍫濈厸闁稿本绋撹ぐ瀣煟鎼淬値娼愭繛鍙壝悾婵堢矙鐠恒劍娈鹃梺鍓插亝濞叉牠鎮″☉銏$厱閻忕偛澧介惌瀣箾閸喐鍊愭慨濠勭帛閹峰懐绮电€n亝鐣伴梻浣规偠閸斿宕¢崘鑼殾闁靛繈鍊曢崘鈧銈嗗姂閸庡崬鐨梻鍌欑劍鐎笛呯矙閹寸姭鍋撳鐓庡籍鐎规洑鍗冲畷鍗炍熼梹鎰泿闂備線娼ч悧鍡涘箠鎼淬垺鍙忔い鎺嗗亾闁宠鍨块崺銉╁幢濡炲墽鍑规繝鐢靛О閸ㄦ椽鏁嬮柧鑽ゅ仦娣囧﹪濡堕崨顔兼闂佺ǹ顑呴崐鍦崲濞戙垹骞㈡俊顖濐嚙绾板秹鏌f惔銏e妞わ妇鏁诲璇差吋閸偅顎囬梻浣告啞閹搁箖宕版惔顭戞晪闁挎繂顦介弫鍡椼€掑顒婂姛闁活厽顨嗙换娑㈠箻閺夋垹鍔伴梺绋款儐閹瑰洭寮婚敐鍛婵炲棙鍔曠壕鎶芥⒑閸濆嫭婀扮紒瀣灴閸╃偤骞嬮敃鈧婵囥亜閺囩偞鍣洪柍璇诧功缁辨捇宕掑▎鎴濆濡炪們鍔岄幊姗€骞嗗畝鍕<闁绘劙娼х粊锕傛煙閸忚偐鏆橀柛鏂跨焸閹偤宕归鐘辩盎闂佸湱鍎ら崹鐢割敂閳哄懏鍊垫慨姗嗗墻濡插綊鏌曢崶褍顏€殿喕绮欐俊姝岊槼闁革絻鍎崇槐鎾存媴缁涘娈┑鈽嗗亝缁诲牆顕f繝姘亜缁炬媽椴搁弲锝夋偡濠婂啰效闁诡喗锕㈤幊鐘活敆閸屾粣绱查梺鍝勵槸閻楀嫰宕濇惔锝囦笉闁绘劗鍎ら悡娑㈡倶閻愯泛袚闁哥姵锕㈤弻鈩冩媴閻熸澘顫掗悗瑙勬礈閸犳牠銆佸鈧幃鈺呮惞椤愩倝鎷婚梻鍌氬€峰ù鍥х暦閸偅鍙忛柟鎯板Г閳锋梻鈧箍鍎遍ˇ顖炲垂閸岀偞鐓㈡俊顖滃皑缁辨岸鏌ㄥ┑鍡╂Ц缂佲偓鐎n偁浜滈柡宥冨妿閳藉绻涢崼鐔虹煉婵﹨娅e☉鐢稿川椤斾勘鈧劕顪冮妶搴′簼婵炶尙鍠栧畷娲焵椤掍降浜滈柟鍝勬娴滈箖姊洪幐搴㈢┛濠碘€虫搐鍗遍柟鐗堟緲缁秹鏌涢锝囩畼妞ゆ挻妞藉铏圭磼濡搫顫岄悗娈垮櫘閸撴瑨鐏冮梺鍛婁緱閸犳岸宕㈤幖浣光拺闁告挻褰冩禍浠嬫煕鐎n亜顏柟顔斤耿閺佸啴宕掑☉姘箞闂佽鍑界紞鍡涘磻閸℃ɑ娅犳い鎺戝€荤壕濂告煕鐏炲墽鈽夌紒妞﹀洦鐓欓柣鐔告緲椤忣參鏌熼悡搴㈣础闁瑰弶鎸冲畷鐔兼濞戞瑦鐝¢梻鍌氬€搁崐椋庣矆娓氣偓楠炴牠顢曢妶鍌氫壕婵ê宕崢瀵糕偓瑙勬礀缂嶅﹪寮婚崱妤婂悑闁告侗鍨界槐閬嶆煟鎼达紕鐣柛搴ㄤ憾钘濆ù鍏兼綑绾捐法鈧箍鍎遍ˇ浼存偂閺囥垺鐓涢柛銉e劚婵$厧顭胯閸ㄤ即婀侀梺缁樓圭粔顕€顢旈崼鐔虹暢闂傚倷鐒︾€笛呮崲閸屾娑樜旈崨顓犲幒闂佸搫娲㈤崹娲偂閸愵亝鍠愭繝濠傜墕缁€鍫熸叏濡寧纭鹃柦鍐枛閺屾洘绻涜鐎氱兘宕戦妸鈺傗拺缂備焦锚婵洦銇勯弴銊ュ籍闁糕斂鍨藉鎾閳ユ枼鍋撻悽鍛婄叆婵犻潧妫楅埀顒傛嚀閳诲秹宕堕妸锝勭盎闂婎偄娲︾粙鎰板箟妤e啯鐓涢悘鐐靛亾缁€瀣偓瑙勬礋娴滃爼銆佸鈧幃銏$附婢跺澶�