转蔡学镛:该学Java或.NET,欢迎大家讨论,要对事不对人呵

原文链接

该学Java或.NET


翔威国际高级工程师蔡学镛  06/11/2003

自从.NET问世以来,程式员都很关心的一个问题是“该学Java或.NET”。我也在挣扎,该“该继续Java的研究,或者该开始准备培养.NET的知识”。当然,最好是能两者兼顾,但是每个人的时间都很有限,想要兼顾两者,其实不太容易。投入在.NET的时间越多,所能花费在Java的时间自然就少了,反之亦然。在资讯爆炸的时代,重要的不是资讯的取得,而是资讯的抉择。资讯太多,时间太少,如果不能慎选适合的技术,只会平白浪费许多时间,斫丧自己的竞争力。

由于我喜新厌旧的个性使然,过去这两年半,我着实花了不少时间在.NET上,对于.NET的认识越来越深,也修正了对于.NET原先的一些误解,渐渐的认同.NET的许多技术理念。姑且不论我们对于微软是褒是贬,单纯就技术本身来看,.NET的确是很卓越的。

我并不是唯一一个这样想的人。以“Thinking in Java”等技术书籍广受欢迎的Bruce Eckel也是如此。他原本认为C.NET只是Java的模仿者,并无新意,但是在深入了解之后,才发现C.NET其实是改良版的Java,不管在各方面,都有比Java更突出之处。当我看到Bruce Eckel说出这样的话,我感觉他说出了我的心声。

下面,我试图从许多不同的角度,简单地比较Java和.NET。

从技术的观点

通常新的技术会比旧技术更好,因为新技术可以从旧技术学到优点,且新技术可以摒除旧技术的缺点。NET比Java诞生的时间晚了六年,许多方面都比Java先进,当然是无庸置疑。

我的意思并不是Java这六年停滞不前,事实上,Java一直在进步中,只是有许多缝缝补补、修修改改的地方。例如,XML是在这六年之间出现的技术,所以.NET对于XML的整合可以说是天衣无缝,但Java是后来才把XML整合进来,且整合的程度比不上.NET。

从历史的观点

以史为镜,可以知兴替。如果你了解近二十年的软体产业发展史,你会发现微软挫败的机会很小,即使是在头几场战役失败,也会在整场战争中获胜。换句话说,.NET挫败的机会不大。在Office软体大战中,WordPerfect、Ami Pro、Lotus 123如今安在?在作业系统大战中,OS/2也已经销声匿迹。在浏览器大战中,Navigator如今只整剩下小小的疆土。你一定可以举出更多这样的例子。

从市调的观点

分析机构如Meta Group和IDC皆预测,在Windows Server 2003推出之后,未来几年市占率会大幅提高。我认为,在longhorn推出之后(2006年?),PC更是会全面.NET化。由于“精通”.NET知识可能需要费时两三年以上,技术人员应该尽量提早学习.NET以为因应。

三年前(2000年)学习.NET恐怕有点太早,三年后(2006年)学习.NET恐怕有点太晚,而现在学习.NET正是时候,不会太早,也不会太晚。学会之后,可以立刻投入市场对于.NET技术的人力需求。

从行销的观点

任何人都不能否定微软行销功力的厉害。平面的行销,包括在电子时报、IT Home等资讯媒体,甚至连商业周刊等非资讯媒体,都看得到相关的广告。动态的行销,包括PDC、TechEd.、修练讲座、产品发表会…等活动,直接走入人群,接触客户。电子的行销,包括MSDN中英文网站、微软TechNet Flash新闻信…等,提供技术新知。

另外,还有多得拿不完的教学光碟,读不完的线上文件,看不完的Microsoft Press出版品…。我发现,微软的作法和另一家公司的作法大相迳庭。微软给我们一堆技术资讯,要什么有什么,但另一家公司却常常把资讯当成“传家宝”,舍不得释放出来给大众,连透过内部管道都还不见得拿得到,“好像很不希望有人学习他们正大力推广的技术”。

从销售指标的观点

关于某个城市的消费者物价指数,麦香堡指标(BigMac Index)是一个很有名也很简易的评估指标。我也发明了一个类似的指标,称为天珑指标(TenLong Index),可以用来评估IT技术的热门程度。天珑书局是台湾最大的IT图书门市,它的技术书籍销售量,对于判断技术的热门程度,有一定程度的参考价值。

2002年全年和2003年上半年,天珑书局在.NET书籍的销售量都不高,但是在2003年下半年之后,.NET书籍已经有相当不错的表现,这意味着最近准备采用.NET技术的公司已经增加了。

我记得在Java推广初期,由于大家对于Java认知不够,所以对于Java有许多FUD存在。现在微软在推广.NET上,也遭遇到许多FUD,这是微软目前必须极力消除的障碍。如果你对于.NET也存有这些FUD,你不妨尝试着去破除这些FUD,就如同七八年前破除Java的FUD一样。你将会发现,就目前来说,.NET是一个非常有潜力的技术,值得投入。

如果是只熟悉某个领域的人
实在不能去批评另外一个领域的

你认同蔡先生在 java 的领域研究的很透彻
想必除了你很多人都是这么认为着
但是这篇文章让"真正"懂 Java 的人大失所望
感觉上, 就像是一篇抹黑的文章
对 Java 而言有太多不实的指控


如同 TSS 发表的 J2EE vs .NET 比较
不公平的评论只会遭引批评
只要是明眼人都不难发现这篇文章的缺陷
打从一开始的引述到最后的结论
都不难看出断章取义的偏差
才会引起 Java 开发者的文笔讨伐


在开发语言的领域之中
孰优孰劣实在很难用几个字评断出来
如果今天是真正评论 Java 与 .Net 的核心
或是开发上面的比较
甚至提出效能上的数据
我想大家才能抛开意识型态去做尝试与比较及创新的设计
就如同 TSS 那篇评论之后
就有 jPetstore 的制作来驳斥与反对


至于蔡先生一味的粉饰着 .NET 的缺失
却使用惹人非议的论点来批评着 Java 的弱点
让人不由得怀疑是不是微软在蔡先生后面撑腰


Java 有没有缺点呢
当然是有..
Java 的最大缺点就是没有更方便的开发工具
造成了初学者的却步
以及在 desktop application 的效能还无法提升
造成了开发上的问题
但是大家都是在竞争中不断进步
.NET 的出现加速了 Java 的成长
这种成长的幅度
是蔡先生没有考量到的
更是令我感到惋惜的地方....


身为软体名人
更应该要对自己的言论负责

说句不客气的话:

这会学庸真的很庸俗,当初,跟从潮流,对Java辗转反彻,夜不能珉,发现自己差距这么大,学点皮毛,写了两篇基础技术文章,现在又对.NET频送秋波,真是古代一个庸学书生。

CSDN力捧的台湾那几个所谓名人,都过分重视具体技术,引导很多初学者误入一个死胡同,害得很多程序员再去学汇编甚至CPU二进制知识,痛心啊。

我也说句不客气的话:
还以为他们是什么高人?
尤其对以下几句话不爽:
“如果你了解近二十年的软体产业发展史,你会发现微软挫败的机会很小,即使是在头几场战役失败,也会在整场战争中获胜。换句话说,.NET挫败的机会不大。在Office软体大战中,WordPerfect、Ami Pro、Lotus 123如今安在?”
难道微软一直胜利,微软永恒?
你要是从技术上论证.NET比J2EE好,那我还服你。
我看你微软给他送了点钱,估计比《java什么夜》的稿费都多,然后要他鼓吹.net。

我觉得这个讨论是of little value(.net还是J2EE),你会J2EE,学.net就是小菜一碟,1w或者2w就能入门或者深入.

反之,会.net然后学J2EE也不是太难,nWeek就好了,反正概念就可以互通的.

再者,.net或者j2ee的市场本来overlapping就不大,用.net的公司本来用j2ee的机会就很小,同样用j2ee的公司转用.net的可能性也不大.

让我们学学IBM的做法吧"以后我们提供的是服务,不仅仅是技术." 把所有的鸡蛋都放在一个篮子里面是很愚蠢的,尤其是iT业界的这个篮子是很容易破的.

从纯技术的观点上来看,我更喜欢.net(当然,6年后的东西没有改进才怪那.我更喜欢Borland公司的精神,因为好多.net对Java技术的改进,我在Delphi上面都看到过,其实Borland公司才是真正的英雄,可惜市场是最终的judge)

还有,Design Pattern本来就是中性的,java和.net都能用,不是J2ee的专利.我觉的为了为了推销某个技术而模糊这一点的行为是会让人失去对他的respect的.

其实,就跟Intel和AMD的竞争一样,最终得利是Consumer,J2EE肯定有改进得.James Gosling现在不是SUN得CTO嘛,他设计得J2SE是在是经典,对J2EE说得话也是在是大实话,那么让我们看看Sun有什么新招数吧.

还是学好中文吧:)

从商业角度说,java在5年内必死!

大家不要只看技术不了解商业,
知道sun怎么赚钱么? sun的业绩? 根据地?

>>>从商业角度说,java在5年内必死!

打个5年的赌吧,赌多大我都下注!赌命也可以!看你能不能输的起?

>>知道sun怎么赚钱么? sun的业绩? 根据地?

Java == Sun ?????

看来你根本不懂Java。

我本身其实很喜欢.net技术,但是.net的fans们实在素质太差。

正文多处地方看起来太扎眼,着实令人不痛快。

java作为第一个纯面向对象思想的软件开发语言,自发布之初,就得到了前所未有的广泛认同和支持,继而众多软件领域精英在java的各个领域已付出相当的心血,来促成人类软件开发能力得以进一步的提高。它不是一个商品,是软件开发界现阶段知识的结晶。否认这门正在稳步发展的语言,无疑是在嘲弄人类现在的软件开发智慧。虽然,由于java是由众多团体和个人推动的,它的发展速度可能不如一家之言的语言,但是由于广泛的支持和参与,她也具备其它语言不可比拟的优势。

商业领域不太可能抹杀java的生存空间,众多牛人的智慧不可能如此不堪一击,如果拿j2ee和.net比较,也只不过大家各有千秋。更何况java作为众多公司和团队与微软对抗的产品,j2ee即使比.net一无是处,她仍然会有很多微软活蹦乱跳也无法挤进的商业领域。

学习java无论如何都会比较有前途;不会.net将来也不至于饿死。让“三年前(2000年)学习.NET恐怕有点太早,三年后(2006年)学习.NET恐怕有点太晚,而现在学习.NET正是时候,不会太早,也不会太晚。学会之后,可以立刻投入市场对于.NET技术的人力需求”见他娘的鬼去。

Java defeats c# in five of six web services categories
see :
http://home.businesswire.com/portal/site/google/index.jsp?ndmViewId=news_view&newsId=20031104005165&newsLang=en

Java defeats c# in five of six web services categories

五个Java获胜的方面(在六个因素当中):
1.Flow control
2.Syntax
3.Object/memory separation
4.Easy access to libraries
5.Tight integration with XML

Java 和 C的Flow Control有差别嘛?
Syntax有很大的差别嘛?内存管理模型有大差别嘛?
Easy access to libraries,什么library?这能说各有所长.
要说tight的话,肯定是是MSXML4.0sp2的Implementation的好,转换XSLT的话,比我用过比所有XML Parser和XSLT engine都快(Xalan,Oracle,XML4J,XalanC)快N倍.


一个C获胜的方面(在六个因素当中):
1.SOAP集成

i.离开具体的WS实现,谈C或者Java最适合意义不大
ii.而且这六个方面,好几个项目都是Java和C一样的

这种report实在是太meaningless了,对这种report,我们还是采用小马过河的方式吧.

热情

这说明国外程序员也很关心java和。net的发展问题,毕竟java已发展这么多年了(相对。net).

世事万变,没有人能够预言,那此所谓的预言家所做的错误的预言比正确的预言
不知多上几倍,而那此所谓的世界十大预言也是建立在无数条错误预言的基础上的,如果蔡学镛先生能够预言他现在会写这篇文章,我想打死他也不会去写那篇:“JAVA夜未眠”。
咱们还是骑驴看唱本--走着瞧吧!