原文: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为学生提供了一个理想的平台进行毕业设计,其丰富的特性和强大的功能能够满足复杂项目的开发需求。结合提供的英文原文和中文翻译,学生不仅可以学习到ASP.NET的技术细节,还能提升英语阅读和理解...
ASP.NET MVC3书店译文 ASP.NET MVC3书店是一个仅作为示例所用的虚拟网站(并非实际运行中的网站),通过该网站的建立来一步步介绍如何使用ASP.NET MVC与Visual Studio来进行Web网站及Web应用程序的开发。我们从最...
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 ...
外文翻译部分可能包含对国外先进CRM理论和技术的译文,提供了更广阔的视野,帮助理解国际上CRM系统的发展趋势和技术前沿。这有助于提升项目的专业性和创新性。 最后,答辩PPT通常包含了项目概述、主要成果、技术...
ASP.NET是微软公司开发的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的功能和工具,简化了Web应用的开发流程。这个压缩包中的"关于ASP.NET的毕业设计论文外文翻译.doc"文件可能包含了...
描述中提到的“英文版的译文”表明这是一个翻译的教程,它以易懂的方式介绍了.NET 2.0中操作数据的基础知识。 在这个.NET基础教程中,作者Scott Mitchell探讨了如何在ASP.NET 2.0环境中构建数据访问层(DAL)。数据...
JAVA/JSP 英文参考文献及翻译 JAVA/JSP 方面通用的英文参考文献及翻译是 IT 行业中一个非常重要的知识点。下面我们将从技术发展历史...正确地理解和应用 JSP 技术可以提高开发效率和系统性能,从而提高企业的竞争力。
在进行ASP.NET和C#的外文翻译时,需要注意准确传达原文的技术概念和术语,同时保证译文的流畅性和可读性。翻译过程中,可能会遇到一些挑战,如理解复杂的编程概念,准确翻译专业术语,以及在保持原文风格的同时,使...
Java编程语言的广泛应用还体现在其持续演进的版本更新上,如Java SE(标准版)、Java EE(企业版)和Java ME(微型版),分别针对不同的应用场景提供定制化的服务。随着技术的不断发展,Java社区也在不断壮大,吸引...
JavaServer Pages(JSP)是Java技术领域中用于构建动态网页的一种标准技术,由Sun Microsystems公司发起并由多家...总之,JSP技术为Web应用开发提供了一个强大且灵活的框架,使得动态网页的创建变得更加高效和便捷。
本资源原文为java-for-Anylogic-user英文版,即面向Anylogic用户的Java开发,本人纯手工翻译,讲述以拖放方式以外的编程思路,对于建立复杂系统有很大帮助。这是一个信息论,可以在模型中进行数据操作以及智能体的...
Java在线考试管理系统是一款基于Java技术构建的教育信息化软件,它为教师、学生和管理员提供了一种便捷的方式来组织、实施和评估在线考试。本系统涵盖了考试的全过程,包括试题库管理、考试安排、考生答题、自动评分...
此外,指南还会详细介绍如何将FastReport集成到.NET应用程序中,包括ASP.NET、WinForms和WPF等平台。 《FastReport快速报表系统4用户使用手册_LHQ修改版》是针对FastReport v4版本的用户手册,由LHQ进行过修订,...
这篇论文集包含了关于这两个主题的英文原版论文和对应的中文译文,为研究者、学生或开发者提供了深入理解这两项技术的宝贵资料。 Java是一种面向对象的、跨平台的编程语言,由Sun Microsystems(现已被Oracle公司...
Java语言还引入了继承和多态的概念,继承使得子类可以继承父类的属性和方法,而多态使得对象可以根据不同的场景采取不同的行为。 Java语言的主要特性包括: * 面向对象编程 * 平台独立 * 简单易学 * 高度可扩展 * ...