Java和.NET继续争斗的四大相关问题

原创
开发 后端
JDK 7现在被瞩目关注,此次升级中JVM与Java语言将被比较明显的剥离开来,而Java平台俨然也将成为一个集大成者,与.NET平台形成楚汉争霸之势。讨论哪个平台最终会赢在现阶段没有什么实质意义,著名程序员Justin James近日撰文点评两个平台的异同和发展趋势。

【51CTO精选译文】在本篇文章中,著名程序员Justin James讨论了Java的未来,以及Java与.NET的开发成本对比,和Java是否能够取代.NET。Justin在文中总结了四大要点,重点关注了两个运行时在性能和成本上的异同之处。

1、Java SE 7遭遇.NET CLR会发生什么?

从Java SE 7的功能列表中可以看出,它相比以前版本有了长足提高。那么,它是一个游戏改变者吗?我认为不会是这样。在过去数年中,JVM和.NET CLR都发生了众多改进;过去那些只有技术非常高超的程序员才能完成的许多事情,现在借助于JVM和.NET CLR的增强功能,普通程序员也能够做得到。

尽管JVM和.NET CLR并非在同一个时间实现相同的想法,但是如果在一方出现了某个好的想法,另一方也会迅速跟进,这一点不仅仅体现在运行时层面上。举例来说,对于Java来说,Hibernate项目取得了巨大成功后,.NET也迅速推出了NHibernate。而.NET的闭包(closures)功能深受众多开发者的欢迎,Java似乎不久也将实现它们(51CTO编者注:Sun在Devoxx大会上宣布了这个消息),当然,这是一个语言功能,而非运行时功能。

[[7741]] 
.NET闭包大受好评,Java也将迅速跟进

2、在可以预见的未来,一个运行时是否会彻底击败另一个?

尽管从技术层面上JVM和.NET CLR非常相似,但它们都有自己的市场,两者的灵活性都不是很强。如果一个人已经围绕.NET服务器和IIS创建了他们的基础架构,他不可能第二天醒来把所有这些迁移到Java,反过来也是这样。甚至如果一个公司决定切换自己的开发平台,那它可能需要替换整个开发团队,或者从头开始对他们进行培训。即使培训完成后,在技能上还是存在严重的不足;毕竟,一个高级.NET开发者不可能在经过3个月培训后突然变成一个高级Java开发者。

另外,公司需要保留现有技术人员来维护已有的代码。你认为这些员工会坐视他们的职位被取消,或者他们的技能将变得无用或贬值吗?当然不会。对一个公司来说,完全从Java转向.NET或完全从.NET转向Java,都是一种自杀行为。最多是通过一个多年期项目来对员工进行重新教育。自从.NET发布以来,从VB6到.NET的迁移都已经花了8年时间。

[[7742]] 
程序员和项目的转型需要时间

3、Java开发的成本是否比.NET开发更具经济性,如果是这样,人们是否会转向Java来节省投资?

如果你仅仅着眼于工具,我的答案是“既对也错。”的确,只要你愿意,你可以在一个完全开源的组合上运行Java。你可以采取Linux/Tomcat/MySQL/Java组合,或者在服务器方面使用SpringSource组合(51CTO编者注:对于SpringSource服务器组合,有人却是表示不满的,可以参考这篇文章),在开发者的计算机上使用EclipseNetBeans。但是需要指出的是,无论出于什么原因,你都不会是开源替代产品的狂热支持者,我并非说替代产品就不好;如果是那样的话,与.NET工具相比,Java工具的价格相当,在很多情况下甚至更贵。而且从甲骨文和IBM等公司正在进行的业务来看,很明显许多公司认为有必要付费购买专有Java工具。就价格而言,在任一指定市场领域,微软几乎总是价格最低的企业类厂商。

另外,你必须考虑到如果没有切换成本公司将会省下多少钱。一个Visual Studio副本的成本要远低于一个中等收入开发者的周薪和保险金(51CTO编者注:作者Justin是美国人)。而且同一个开发者学会Java并且达到他擅长.NET的水平,所需要的时间要远远大于一周时间。

#T#出于公平考虑,这种分析也同样适用于从Java转向.NET。相比于平台切换的痛苦,开发工具成本实在微不足道。当然也有两种例外情况。第一种情况是新建公司,那么不存在迁移成本的问题。在这种情况下,Java依然不具有成本优势,因为微软也已经推出了免费版本的Visual Studio(Express版),而且如果你的公司是新创公司的话,通过BizSpark计划,你可以免费获得三年MSDN和微软许可,它们还不错。另外一种例外情况是,一个公司具有非常高的服务器-开发者比例,例如谷歌或雅虎。此类公司可能有许多开发者研发运行在数千台服务器上的一个应用。在这种情况下,开发者工具并非节省成本的主要因素,但服务器空间是。对于面临这种情形的公司,Java(和其它开源技术)可以具有一个决定性的成本优势。

4、一个Java开发者需要了解多少脚本语言,才能实现.NET中的效率?

首先,你是否在进行Web开发工作?如果是这样,你可能需要了解一些JavaScript知识,并熟悉相应的框架。对于后端工作来说,知道一门动态语言或脚本语言不是强制性或必需的。尽管如此,在Java领域存在许多此种用途的不错选择。对于目前还不是一名Java开发者的人来说,我没有这方面的任何实际经验来介绍,但是我听到很多关于GroovyScala不错评价。如果你希望选择某些更主流的技术,JRuby和Jython是不错的选择。

性能 
有各种方式提高Java应用的性能

在过去数年中,JVM已经开始大量支持非Java语言,开发者现在拥有众多选择。学会其中一种肯定有助于你成为一个更好的开发者(即便你并不在实际产品项目中使用它们),可以让你在项目陷入困境时提供另一种方向。

Java是否会取代.NET?言之尚早。同时.NET也不会消灭Java。两者都有自己的优势和劣势。我认为,你最终选择它们两个中的哪一个,这要取决于个人喜好和当地职业机遇。

原文:Why Java and .NET will continue to compete  作者:Justin James

责任编辑:yangsai 来源: 51CTO.com
相关推荐

2016-03-30 11:51:55

2013-07-23 10:13:17

2011-03-21 09:01:49

CSS框架

2015-07-17 09:50:16

Carthage优劣比较

2010-03-18 16:41:31

java.net.So

2021-08-02 18:08:53

网站安全SQL技术

2009-07-23 13:47:46

ASP.NET数据缓存

2011-10-21 13:59:48

Java云计算

2023-03-06 17:23:48

2010-01-14 09:57:42

火狐Chrome

2017-03-17 19:48:01

人脸识别

2013-01-06 10:44:43

微软Windows 8云计算

2015-08-10 15:08:00

Java 对象

2018-11-07 13:00:30

机器学习深度学习集成学习

2010-03-19 09:59:20

Python urce

2009-10-26 18:41:05

VB.NET获取硬盘信

2009-10-22 15:35:24

VB.NET循环

2018-07-06 05:05:07

2021-09-17 10:50:14

容器 Linux

2019-01-23 16:13:02

大数据数据处理数据挖掘
点赞
收藏

51CTO技术栈公众号