`
mondayw
  • 浏览: 139956 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

[译文]为什么Java和.Net会继续竞争下去

阅读更多

原文: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并不总是能够同时实现同样的构想,但是第一者实现的好想法会以相当快的速度出现在第二者身上——我们看到这种情况甚至是超出了运行时层面。HibernateJava的一个巨大成功,于是.NET就有了NHibernate.Net的闭包功能为它赢得了许多开发者,而Java看起来也要包含这些功能了(当然,这是语言功能而不是运行时功能)。

 

在可预见的将来其中的一个运行时会击败另外一个吗?

 

虽然在技术定义层面上JVM.NET CLR是相似的巨兽,都有自己的市场,但都不是很敏捷,那些已围绕着.NET服务器和IIS创建了自己的基础构架的人,他们不可能做到一夜醒来就可以把所有东西都移植到Java上,反之亦然。即使某个公司确实已决定了把开发从一个平台迁移到另一个平台上,它也需要替换整个开发团队(或者从基础开始重新培训他们),即使是那样,还是会存在严重的技能短缺,毕竟,一个高级的.NET开发者不可能在经过三个月的培训之后就突然变成一个高级的Java开发者。此外,他们需要保留当前的工作人员以维护现存的代码库,然而,难道你真的认为这些工作人员会坐在一旁看着或者是他们将失去工作,或者是他们的技能将会变得没有用处(或没有太多价值)吗?当然不会,整盘地从Java迁移到.NET上(或者是从.NETJava)对于一个公司来说无异于自杀,最好的做法是,定制一个多年期的方案来重新培训员工,另外还有把从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 StudioExpress版本),因此如果你是一家新公司的话,那么可以通过BizSpark计划来免费获得三年的MSDNMicrosoft的使用许可——这不算太糟。另一个特例是针对那种有非常高的服务器-开发者比例的公司来说的(想一下Google或者Yahoo!),这一类的公司可能会有少量的开发者为运行在成千上万的服务器上的某个应用工作,在这种情况下,开发者工具并不是节省花费的地方——机房才是。对于某个处于此种情形中的公司来说,Java(以及其他的开源技术)能够达到一个决定性的成本效益。

 

Java开发者需要懂得多少种脚本语言才能达到其在.NET方面的效率?

 

首先,你有做web开发方面的工作吗?如果是的话,那么你可能需要懂得一些JavaScript,以及熟悉一些已有的为这一脚本语言创建的框架,这取决于你的打算。对于后端的工作来说,懂得一种动态的或者脚本的语言并是强制的或是有必要的,这就是说,就这一目的而言,在Java世界中有非常多很棒的选择。就像某个目前还不是Java开发者的家伙一样,我没有这方面的任何实践经验,我只听过一些关于GroovyScala的热情洋溢的评价,如果你正在寻找一些更像是作为主流出现的东西的话,那么JRubyJython会是非常好的选择。

在过去的几年中,JVM遭遇了非Java语言爆炸式的涌现,开发者现在可以有大量的选择,学习这些选择中的某一种肯定会有助于你成为一个更好的开发者(即使不在实际的生产项目中使用它们),并在你攻坚项目时为你的箭筒多添加一支箭。

Java将会代替.NET吗?这一时代还没有到来,而.NET也不会取代Java。这两个生态系统有着各自的优点和缺点,我相信,最终使用哪一个将很大程度上取决于个人的喜好和当地的就业机会。

 

本文最初发表在Tec Republic上。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics