原文:Why Java and .NET will continue to compete
作者:Justin James
出处:http://www.builderau.com.au/program/java/soa/Why-Java-and-NET-will-continue-to-compete/0,339024620,339300224,00.htm
某个TechRepublic社区成员通过邮件向我提出了四个很好的问题,这些问题是关于Java的未来以及其开发成本与.Net的比较等方面的,下面我标出每个问题并就这些问题给出我的看法。
Java SE 7将如何超越.Net CLR?
看一下Java SE 7的功能列表,它看起来就像是对系统的一个相当大的提升,那么它是游戏的变革者吗?我并不这样认为。在过去的几年中,JVM和.Net CLR都已经历了非常多的变化;两者都使开发者能够做许多原来只是属于非常资深的程序员才能涉及的领域的事情。虽然JVM和.NET CLR并不总是能够同时实现同样的构想,但是第一者实现的好想法会以相当快的速度出现在第二者身上——我们看到这种情况甚至是超出了运行时层面。Hibernate是Java的一个巨大成功,于是.NET就有了NHibernate,.Net的闭包功能为它赢得了许多开发者,而Java看起来也要包含这些功能了(当然,这是语言功能而不是运行时功能)。
在可预见的将来其中的一个运行时会击败另外一个吗?
虽然在技术定义层面上JVM和.NET CLR是相似的巨兽,都有自己的市场,但都不是很敏捷,那些已围绕着.NET服务器和IIS创建了自己的基础构架的人,他们不可能做到一夜醒来就可以把所有东西都移植到Java上,反之亦然。即使某个公司确实已决定了把开发从一个平台迁移到另一个平台上,它也需要替换整个开发团队(或者从基础开始重新培训他们),即使是那样,还是会存在严重的技能短缺,毕竟,一个高级的.NET开发者不可能在经过三个月的培训之后就突然变成一个高级的Java开发者。此外,他们需要保留当前的工作人员以维护现存的代码库,然而,难道你真的认为这些工作人员会坐在一旁看着或者是他们将失去工作,或者是他们的技能将会变得没有用处(或没有太多价值)吗?当然不会,整盘地从Java迁移到.NET上(或者是从.NET到Java)对于一个公司来说无异于自杀,最好的做法是,定制一个多年期的方案来重新培训员工,另外还有把从VB6迁移到.NET上的工作平台,从.NET发布时算起,它的存在大概已有八年的时间了。
Java开发成本要低于.NET开发吗?既然如此,人们应该转移到Java上以节省成本吗?
如果你只是关注工具的话,那么我的回答是“是,也不是”,回答是是因为,只要你愿意的话,你可以在一个完全开源的栈上运行Java,你可以在机房中采用Linux/Tomcat/MySQL/Java栈,或者是SpringSource栈,以及在开发者的机器上使用Eclipse或者NetBeans。但是,让我们这样来说吧,不管是出于什么原因,你都不会成为开源选择的忠实者的(我不是说这些选择不好),在这一情况下,Java工具的价格与.NET的东西相当,而在许多情况下,则是更加昂贵。而从公司的商业角度来看,包括Oracle(通过收购BEA)和IBM(拥有Rational工具集)的所作所为,显示了许多公司认为需要为专有的Java工具付费,就所定的价格而言,在任何指定的市场上,Microsoft几乎都是最便宜的企业级厂商。
另外,你得看看与迁移的花费比较的话,公司会省下多少钱,为Visual Studio的一个拷贝付出的成本少于一个中级开发者一星期的薪水和福利,对于同一个开发者来说,有可能需要多花不止一个星期的时间来学习Java,其能力才等达到与其在.NET方面相当的程度。
为了公平起见,我们也从另一方面来进行分析,即在比较迁移的痛苦程度时,工具的成本是无关紧要的。对于这一设想来说,存在两种特例,第一种特例针对一个新的公司而言(或者在两者之间进行选择的公司),因此不存在迁移的成本。在这种情况下,Java仍然没有占到任何便宜,因为Microsoft赠送免费的Visual Studio(Express版本),因此如果你是一家新公司的话,那么可以通过BizSpark计划来免费获得三年的MSDN和Microsoft的使用许可——这不算太糟。另一个特例是针对那种有非常高的服务器-开发者比例的公司来说的(想一下Google或者Yahoo!),这一类的公司可能会有少量的开发者为运行在成千上万的服务器上的某个应用工作,在这种情况下,开发者工具并不是节省花费的地方——机房才是。对于某个处于此种情形中的公司来说,Java(以及其他的开源技术)能够达到一个决定性的成本效益。
Java开发者需要懂得多少种脚本语言才能达到其在.NET方面的效率?
首先,你有做web开发方面的工作吗?如果是的话,那么你可能需要懂得一些JavaScript,以及熟悉一些已有的为这一脚本语言创建的框架,这取决于你的打算。对于后端的工作来说,懂得一种动态的或者脚本的语言并是强制的或是有必要的,这就是说,就这一目的而言,在Java世界中有非常多很棒的选择。就像某个目前还不是Java开发者的家伙一样,我没有这方面的任何实践经验,我只听过一些关于Groovy和Scala的热情洋溢的评价,如果你正在寻找一些更像是作为主流出现的东西的话,那么JRuby和Jython会是非常好的选择。
在过去的几年中,JVM遭遇了非Java语言爆炸式的涌现,开发者现在可以有大量的选择,学习这些选择中的某一种肯定会有助于你成为一个更好的开发者(即使不在实际的生产项目中使用它们),并在你攻坚项目时为你的箭筒多添加一支箭。
Java将会代替.NET吗?这一时代还没有到来,而.NET也不会取代Java。这两个生态系统有着各自的优点和缺点,我相信,最终使用哪一个将很大程度上取决于个人的喜好和当地的就业机会。
本文最初发表在Tec Republic上。
分享到:
相关推荐
ASP.NET MVC3书店译文 ASP.NET MVC3书店是一个仅作为示例所用的虚拟网站(并非实际运行中的网站),通过该网站的建立来一步步介绍如何使用ASP.NET MVC与Visual Studio来进行Web网站及Web应用程序的开发。我们从最...
ASP.net毕业设计英文文献翻译,很详细呀
Spring.NET框架 参考文档 作者 Mark Pollack, Rick Evans, Aleksandar Seovic, Federico Spinazzi, Rob Harrop, Griffin Caprio, Choy Rim, The Spring Java Team 译者:郭鸿飞(delpher@yeah.net) Version 1.1 ...
毕业设计 asp.net译文 ASP.NET 是一个统一的 Web 开发模型,它包括您使用尽可能少的代码生成企业级 Web 应用程序所必需的各种服务。ASP.NET 作为 .NET Framework 的一部分提供。当您编写 ASP.NET 应用程序的代码时,...
关于asp.net的外文及其翻译,希望在大家毕业时能帮到大家~
包含英文原文,中文翻译以及原文出处,符合毕业设计要求。 人工翻译,已成功通过本校毕业指导老师检查,无需担心会出现使用翻译工具所造成的种种语病,可放心使用。
Microsoft .NET Architecting Applications for the Enterprise 高清英文文字版
JAVA/JSP方面通用的英文参考文献及翻译
本资源原文为java-for-Anylogic-user英文版,即面向Anylogic用户的Java开发,本人纯手工翻译,讲述以拖放方式以外的编程思路,对于建立复杂系统有很大帮助。这是一个信息论,可以在模型中进行数据操作以及智能体的...
JSP(JavaServer Pages)是一种基于Java的脚本技术。是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序...
计算机类专业毕业设计外文翻译的原文及译文。已经排版,下载即用。
Clojure是一个JVM的动态函数式语言,最近发布了1.0版本,版本中Clojure提供了一个...Clojure语言是一个JVM(包括Groovy,Jython和JRuby等语言)的新语言,它提供了活力,简洁得代码,并且与Java具有良好的相互操作性。
毕业论文的专业译文,计算机专业,关于java堆的一些内容。中英文全。
ASP.NET客户关系管理系统的实现(论文+源代码+文献综述+外文翻译+答辩PPT).zip
C#来源于C和C++,是一种简单的、现代的、面向对象和类型安全的编程语言,由Microsoft的Anders Hejlsberg专门为.NET平台开发的语言,继承了许多语言的特征,如C、C++和Java。C#是为了综合Visual Basic的简单和C++...
JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT).rar
刚发现的英文版的译文,非常不错,拿过来和大家分享。很基础,很易懂。
Generics_in_the_Java_Programming_Language的中文译文
关于java的外文文献中英文对照都有
java并发底层的一些概念、原理。 java5、java6中常用并发类、并发集合的属性和使用方法。