J2EE 和 do tNET到底谁好一些?欢迎灌水!(100分)

D

dxd0222

Unregistered / Unconfirmed
GUEST, unregistred user!
J2EE好像是富人的游戏,更好象是从富人兜里取钱的好游戏?
dotNET好像是穷人的工具,可大家都说他不好,不稳定,不安全。
要上ERP是找死,
不上ERP是等死,
上了ERP折腾死。
 
这两个是什么东西?我听听。
 
.NET VS JAVA   会员名:minnie  发布时间:2001/11/20



文章摘要:
  微软为了不断的对抗自己的对手,不断的更新和创新自己的技术,新的.net技术则是微软的未来发展战略目标,其中很多部分都是为了对抗JAVA的,可它们之间到底有什么不同与相似的地方呢,看了这篇文章就不会了解不了.

--------------------------------------------------------------------------------

正文:
.NET VS JAVA
前言:
  最近这半年的讲师生涯之中,遇到不少从VB转到Java的学生,绝大大部分的工程师或新进软体开发领域的朋友都会问:"我该学.NET 还是Java ?" "该学C# 还是Java ?"相关的主题在网路上可谓暗潮汹涌,随时可能擦枪走火,在发表本文之前, 自己把C# Spec 深入地读了一次 ,也大致研读了.NET的相关技术文章所以想想在此发表一心得,没有什么预设立场,请大家多多包含。也感谢洪志鹏先生愿意让这篇文章藉由Java周报发表。
本文适用对象:
  "本文内容只适用一般工程师,特殊情况不算!"何谓特殊情况呢?以我个人为例,明明知道Delphi的原生语言是Object Pascal, 所以要用Object Pascal才能和Delhpi融为一体的感觉.可是,开发Project 的时候,我就是莫名其妙地喜欢用C++Builder.当"程式语言基本教义派"或"程式语言民族主义"遇到正常行为的时候,是怎么说也说不清的。(以上是李敖先生说的话,我只把关键字换了,希望不会被他告)另外一种特殊情况就是,如果您的思考方式与普通人不同,那么,本文亦不适用於您。
首先想讨论的是架构的问题:
  笔者并没有深入研究过架构,也实在不清楚网路上诸位先贤所谓的架构指的是什么.但是我凭一个工程师的直觉可以笃定,".NET就根基架构上一定比Java的根基架构还要好!"因为.NET的推出比Java晚了近5年,中间还有J++与WFC的发展,如果搞了个比Java还鸟的东西,像话吗?只要Sun在这次帝国大反击之後,没有被MS弄得节节败退,从此消失於市场,相信它若干年後还会推出个比.NET还好的东西,然後若干年後MS又搞出一个更好的东西.事实上,科技的演进就是如此.所以谁强谁不强,纯粹是历史必然的结果.所以没有什么好争论的.至於将来谁会是市场的霸主,就看两家龙头太厂谁比较会行销,谁比较亲近工程师.虽然资讯界过去曾经好几次重复"好东西被干掉,次级品占领市场"的历史.但是仍然没有人敢断言。
其次是压宝谁的问题:
  Sun的标语是"网路即电脑",所以在Java的策略上,Sun假设这个世界上充满异质平台,所以设计Java 的时候希望以单一一个Java程式语言为中心,让它可以在各种平台上执行.因此JVM要采stack machine的设计方式,因为不管你是谁,都可以实作出stack machine.但是这毕竟是一个不理想的世界,连Sun自己Solaris都要好几个patch才能使用新版的JDK.连Borland也花了三年以上的努力才让 JBuilder可以同时推出Windows , Linux , Solaris , Mac OS X 四种版本,可见"Write once, run anywhere"的理想真的有其实际上的难度.Borland除了证明Sun 的理想是有机会实现的礼运大同篇,也证明经过精心的架构设计和最佳化,加上工程师累积了许多经验後,仍然可以突破stack machine 先天上速度慢的原罪(虽然还是不理想,需要用很多RAM来填补理想).Sun把其官方工具JDK搞的很难用,网路上老是有人抱怨它是Java Developer Killer,虽然.NET Framework SDK一样难用,可是微软至少还有Visual Studio.NET如果说微软的Visual Studio.NET让工程师感觉像在开Benz,那么Forte就很像路上随便一台前方贴著Benz标记的烂公车.所以Sun实在需要多多加强.不过这也难怪,MS是纯软体起家,Sun是纯硬体起家,Sun做软体做不过MS是正常的事情.
  反观MS,它假设世界上只有x86的CPU,或者广泛的说是Wintel 平台,并假设世界上存在许多会各种语言的工程师们.因为以此假设为策略中心,所以设计.NET的时候CLR可以针对x86 CPU 作最佳设计,有些指令甚至可以和op code达到1 to 1的mapping,所以速度自然跑的快.但是叫他移到SPARC或AS/400上就麻烦大了..就工程师的角度,自然会偏向.NET,因为选择很多(喔,这点有待商榷,後面会提到),但是就3rd party 厂商的利益和老板不想被特定平台绑死的观点来说,会偏向Java。
各位想, .NET的WinForm设计的那么漂亮,很可能累积了Anders离开Borland之後的许多好点子,如果.NET出来,Borland大概真的只剩下IDE可以做了.所以最後谁的利益胜出,很可能就会决定输赢,
  因此笔者曰:"你想信耶稣就信耶稣,想信佛教就信佛教,你心中的神自然会带领你走向他口中的天堂."喔,对了,如果两边都要压宝的人当然没问题,但是请一定要小心,不要到时候上不了其中一个神所谓的天堂,却同时下了两个神口中的地狱啊!
再来是Programming Model的问题:
  记忆中,上一次给我惊艳感觉的时候是Delphi出来的时候,让我第一次觉得写程式是很美好,很简单的事情,可是自从那次的美好经验之後,一直到目前为止,都没有任何新意让人有耳目一新的感觉,总让我觉得软体的开发方式是不是已经走到一个瓶颈了呢?Anders搞VCL的时候,Borland说它是VB Killer, Anders 搞.NET,MS 当.NET 是Java Killer,怎么每次Anders出现的时候都会出现杀手呢? 我建议以後改叫他enders算了,大家觉得如何?
  总之,元件架构不管是VCL, JavaBean, WFC, .NET Framework,搞了搞去都是setXXX()与getXXX()那一套,进步也只是小迈步,不是大跃进.以前语言里头不支援,所以要搞特殊语法,现在搞个新语言来支援,然後把他标准化罢了.自从Jordon退休之後,NBA就变得有点不热闹了,但我还真希望既Anders之後,有新一代的鬼才提出另外让我们工程师轻松的Programming Model呀!!
最後是语言上的问题:
  C#比Java复杂多了,多了很多关键字,让我觉得很复杂,先说型态好了,C#提供value type与reference type,value type还分成simple type ,enum type , struct type,reference type还分成class type , interface type , delegate type , array type.这些型态如果在配上传递参数时可以选用纯粹的by value , by reference(ref) , ouput(out) , parameter array感觉上还真是热闹哩!!c#之中我们还可以利用unsafe关键字对指标直接做存取.存取权限修饰字除了固有的public, protected , private之外,也加了internal , protected internal.在多型上,除了以前的virtual之外,也加了override关键字.喔,当然有人会说我何必庸人自扰,但是如果您的汽车有类似霹雳车可以Turbo的功能,我想任何有好奇心的人都会想找机会试看看他的极限在哪里,才不管会不会粉身碎骨.Java程式语言的功能有限,工程师遇到特定问题通常会找其他特定的解决方案,这么一来程式在维护上会比较容易.但是语言复杂了,同一件事情有好多种做法,自由度变大了,工程师发挥的好,就可以突破很多限制,实现自己梦想.但是维护上呢?
  君不见有些天才可以用C简单几行程式写出求PI值的程式,但是有多少人看的懂?个人主义和团队合作之间是有一些gap存在。语言的简单与复杂之间,实在是个dilemma.如果程式语言里头都是宣告,回圈,函式呼叫这三种基本要素,那么要设计出很复杂,功能超强的程式语言都没问题的,不是吗?Sun大可在Java里头开始引进很多C++的功能,可是它没有,原因何在?C#的复杂度,如果加上operator和template,那么和C++可有的拼哩!
  每次上Java课程时有好多好多的VB Programmer跟我说他无法提升上来,虽然我要负大部分的责任,但是我开始怀疑如何把VB Programmer提升到.NET的层级呢?我说的VB Programmer当然不是少数精通各种语言,用VB只是纯粹好玩的工程师,而是指目前台湾资讯业界的许多中坚分子和SOHO族,当然,有人会叫我去用VB.NET, COBOL.NET,问题是,大家有没有想过为什么C++那么强大,可是还是很多人喜欢用C ?为什么开始有人改用Java ?为什么虽然Pascal不是主流,可是大家还是喜欢用Delphi ?
  现在打出MS的行销广告告诉所有工程师一个讯息:"各种语言的工程师都可以广纳在.NET之下."相信去参加过微软或其他研讨会之後的朋友,除了发现.NET很不错,很棒,有很多功能是自己过去梦寐以求的功能之外,也发现他们被MS骗了(有人跟我说他觉得他被MS抛弃了),因为他们发现过去学的根本没用,啥米VB.NET,要他去学那种VB,他宁愿去学C#,反正比起VB.NET的语法,C#也没难到哪里.
http://www.vbqa.com/discuss/vb.net/read.asp?id=11
  这个论坛里头,ChrisTorng先生说的很好:"况且 vb.net与c#的相似度,依我看比vb.net与vb6的相似度还高…^_^"
  任何语言,要能够在CLR上发挥功能,就必须符合CLS的规范,意思就是说,VB.NET不会因为它的前面有VB两个字,就可以让过去用VB的朋友仍然有著绝佳的生产力.如果语法没有扩充,您相信VB.NET写的component可以被C#用吗?我是指"优美的用法",而不是旁门走道绕了一大圈之後的用法.MS在.NET Framework SDK beta 2里头,据说把VB改回来了,虽然不知道修正的幅度多大,那么这个新生代的VB可以发挥多少CLR的能力呢? 大家就拭目以待罗!
 我只能打个比喻,同样的马力,扭力以及内部装潢,载女朋友的时候你要用的车子是长的像BMW的样子? 还是长的像电子花车?用VB用到很精通的情况之下,所以的工程师都会发现,要打破任督二脉,就必须去了解COM,否则永远无法突破,这个在.NET里头一样适用,要发挥.NET的能力,最後一定往C#走.所以要在.NET上发展程式,我绝对选原生语言C#,不会用VB.NET.因为,车子也不会因为他长的像飞碟,就可以不用轮子行走呀!
  那么,同样是交通工具,台北车站到天珑,你会选飞机还是计程车?所以有些事情,在Windows平台上,Java或许做得到,但是做起来很复杂又不美观的时候,我用.NET.写GUI程式的时候我会选VB或Delphi,至少不会像JBuilder和Visual.NET一样,只是个简单的GUI,改了点property,竟然跑出一大堆让我不知道从何改起的程式码.每次看到这些无聊又重复的程式码,让我久久无法言语。
结语:
  不管是大陆还是台湾的工程师,都存在著"广义中国人"的劣根性,东西还没出来,就可以诸多猜测,跟我们电视上那些算命的半仙没啥两样..而且,大家还真喜欢算命耶!难怪我妈看到我在读The Art of Computer Programming的时候跟我说,程式设计师和巫师没啥两样,只不过他们靠乌龟壳和咒语,而我们靠的是程式语言.我们总是人家在煮米粉,我们再喊烧,一大堆会写病毒的高手,一大票善於破解的高手.但是就是做不出世界级的软体.当然,这也骂到我自己了,但是我真的是对软体业没啥贡献就是了。
非官方观点,欢迎大家来信讨论.

原作者:王森
供稿者:刘明亮
稿件来源:luyu.net

 
Wintel的坚固联盟使MicroSoft 和Intel在PC的平台上统治了几十年,对于个人用户
或者业务相对简单、并不太在意系统安全的中小企业来说选择这个平台的前期成本是相对
便宜的,但是一旦选择了Wintel联盟也就注定了要在MicroSoft 和Intel的“领导”下磕磕
绊绊的成长。
Sun 的java 不是一门普通意义上的语言,它更像是一个平台。因此才能够在MicroSoft
Windows+Office+Visual Studio的全方位的封锁下成长壮大。微软的.Net架构和Sun的J2EE
架构都是面向企业级市场的开发架构,事实上无论是COM/DCOM还是JavaBeans 都是不错的分
布式开发架构。但是由于Java天然的跨平台性以及Sun早在微软的.Net框架之前提出J2EE架构
,而且Sun为面向企业级开发市场提供了更大更多更早的努力。所以眼下MicroSoft的.Net架构
比起Sun的J2EE架构来还显得比较稚气和流于形式,但是微软已经发些了自己在企业级开发市
场上的劣势并发誓占领这个利润丰厚的市场,而且从包括Borland、IBM和Sun在内的IT巨人那里
大肆挖掘墙角(想起尊敬的Delphi的架构师Herls Berg,现在在MicroSoft主持C#的开发),
所以.Net的成长潜力应当不容忽视。
根据MicroSoft一贯的作风,只要是看准的市场肯定会不惜一切代价去占领的,而且估计
也不会有人会怀疑MicroSoft的研发实力。就像当年的Windows 95虽然GUI的界面开发要晚于
苹果,但是MicroSoft依然笑到了最后。希望Sun不会重蹈苹果的覆辙。不过我对于Sun充满
信心:虽然在股市上表现不佳,但是Sun和Java已经赢得了包括IBM、Oracle等业界领导厂商
的鼎立支持,尤其是在大企业应用级市场上估计.Net在三五年之内还难以撼动J2EE的地位。
当然在中小企业市场微软的.Net肯定会取得飞速成长。
究竟鹿死谁手,我们将拭目以待。不过有一点是可以肯定的:这两个架构只会出现此消
彼长的竞争,绝对不会出现一方“消灭”另一方的局面。
 
有道理!
 
从历史沿革上看,.NET和J2EE的战争,实际上是Windows平台和Unix平台斗争的延续。
因为.NET的所有相关应用,都要以Windows平台为依托;而J2EE的所有应用,也毫无疑问地
建立在Unix基础上。
对于软件开发商来说,选择决定着公司今后的命运。
如果选择了.NET,今后所有的产品开发都将只有一个供应商——微软。员工要使用微软的
操作系统,利用微软的开发工具,学习微软的开发规则,最后的产品也只能在微软的产品上
运行。而微软的产品升级换代很快,且换代后平台还存在一些不兼容的地方。尽管第一次
实施的成本比较低,但高昂的升级成本将令用户和供应商头疼。
当然,微软的产品便宜,开发人员的成本低,开发工具好用,开发效率高。不过,这些优
势的另一面是巨额的培训成本。微软产品更新非常频繁,需要对员工不断进行培训。如果购
买微软的技术服务,每天8000元的成本并不是每家软件公司都能承受的
而且多数客户都有一种先入为主的印象:在微软平台上运行的产品价格不会太高。这就意
味着开发商基于微软平台开发的产品只能走薄利多销的路子。
由于了解微软产品的人太多,几乎所有的病毒、大部分黑客的攻击都是针对微软平台的。
所以,一些客户对微软平台的安全性存在疑问。涉及高可靠性、高安全性、高访问量的系统
,通常会谨慎考虑微软的平台。这自然对开发商不利
而那些在行业内已有长期积累的软件公司CTO们,有许多是希望在这个关键时刻把握住发展
机会,将原有的系统升级到J2EE的平台。J2EE所具有的开放性、跨平台性、安全性让很多大
牌厂商都对其全力支持。无论是硬件平台、操作系统、数据库、中间件、应用系统都有很多
的选择,只需开发一次,就可以为不同需求的客户完成不同级别的方案。
不过, Sun、Oracle、IBM等大牌厂商虽然都宣称全力支持J2EE,但各家的方案各有不同。
IBM号称提供全方位解决方案,使用DB2作数据库,以WebSphere作为中间件开发平台,开发
工具是VisualAge——全部是IBM自己的体系。而作为Sun ONE开放网络环境的核心,J2EE号
称是开放体系,其中任何一部分都可以更换其他符合标准的产品。但在实际使用时,也还是
有这样那样的兼容性问题
J2EE的开发工具虽然有很多,如Sun的Forte,Borland的J Builder,IBM的VisualAge,但
与微软.NET的开发平台相比,在与数据库的集成性与易用性方面还有一定的差距。如果开发
同一个项目,使用J2EE的进度可能会比使用.NET慢一些。这对于那些时间较紧的项目来说并
不是个好消息。
虽说J2EE是通用的,但是由于不同厂商的数据库、Web服务器、中间件服务器等等都有一
些细微的差别,要开发真正的跨平台产品就需要对所有的产品都精通,分别为不同的搭配设
置不同的参数,而且要进行长时间的调试,这也是中小软件公司难以企及的。
另外,熟悉J2EE的程序员比熟悉微软产品的开发人员薪水要高出一块,能精通整个J2EE前
后多种平台的项目经理与系统分析师的薪水更高。

 
先JAVA,再C#,都学。
 
先学好一个再说!犹豫太久反而浪费时间。
 
WINDOWS下面,我认为DELPHI已够我用,
所以正搞JAVA。
 
微軟選擇了操作系統
sun選擇了語言
 
没办法,只有跟着M$
 
专业软件公司当然要用J2EE,开发自己的软件最好用.Net
 
.net copy 了 j2ee,属于盗版
想当年MS为了对抗java,推出了VJ++,现在不也无疾而终了吗[8D][8D]
 
我觉得他们可能会在不同的市场寻找机会
.net 中小企业应用
j2ee: 企业级应用
我想上了一定规模的企业级应用暂时没有人敢用.net.这个不一定是技术问题,但
至少短期内用 .net作这类应用是要冒风险的.
 
选择总是需要有代价的!你的选择?
 
这个是朝钱看的社会~
 
争论太多没用的,也学好一门再说。
 
网络就是计算机
J2ee!
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部