主题:【原创】我看:JAVA和.net孰优孰劣?这是个问题。 -- 睡虫
每次想到这个问题,我就仿若看见原始森林里的盘根错节,脑袋开始发胀――这实在不是一个轻易就能清楚的问题。兼且两大阵营的从业人数和水平均不可小觑,我还是先老老实实戴上安全帽,准备挨砖。
我理解的两者本质
Java是绑定于一种语言的跨系统的平台,是一个有多家供应商提供竞争性产品的规范。
.net是绑定于一种系统的多语言平台,是一个规范性较弱的垄断性产品。
一个是规范一个是产品,本来就不同。于是.net的发言人说,规范和产品没得比,要比就比具体产品。但,Java天生是规范,这不是Java的错,.net生来是迎战Java的,孤军奋战是他的命。
随便问一个稍有头脑的Java程序员,Java最大的好处是什么,他会毫不犹豫地告诉你:“简洁”。Java为Internet而生,也为自己“简单易用并提高生产效率”的理念而活。
Java讨人喜欢,因为他把家底亮出来,鼓励大家发挥聪明才智帮他进步。那么多开源项目,都在竞争中求发展,对Java的发展贡献巨大。Java作为规范,吸收成果不计出身,善于否定自己、自我扬弃的优点有目共睹。EJB3.0就是一例,EJB是Java 2企业版(即J2EE)的杀手锏,在企业级应用中广受推崇,占据大型企业应用的高端市场。但EJB2.x也因其不易开发、部署受到批评。新近通过的EJB3.0几乎是对EJB2.x的全盘否定,丢弃了重量级的EJB2.x,引入轻量级开源项目Hibernate的设计理念,公布不久就获得多方支持。为了理想,Java不惜付出代价,要不然哪有Highway帖子里.net设计师的评价:“Java发展到现在,还能相对那么紧凑精干,不容易!”
.net不同,出生于老牌商人世家,什么理念啦,原则啦,对商人来说不重要。重要的是要保住市场,抢占市场。
他的主人以操作系统雄霸桌面电脑,曾经对互联网不屑一顾。当终于发现自己犯了原则错误,不得不迎头赶上时,.net应运而生。.net世交多,要尽量保持亲戚关系,还要让亲戚的支持者原windows平台开发人员保住饭碗,象EJB3.0那种过河拆桥痛下杀手的事情还没干过。新功能要加,历史物件也要留。但他和自家亲戚关系紧密,外人从亲戚家拐个弯就到他家,自在,没有陌生感,也没有路费。人留住了,市场就留住了。至于跨平台,有违家族利益,不符合祖训,所以理论上的跨平台,他不打算认真对待。但中小企业应用的市场,他占住了。
于是呢,Java阵营继续为理想而战,.net阵营继续为市场而战,各得所需,都忙得不亦乐乎。
站在用户的立场上
虽然Java和.net奋斗的目标不同,但是都是B/S结构软件市场的生力军。
Java对大中小型系统都适用,只要搭配不同的操作系统、应用服务器等等,大到银行综合信息系统、全国全省的统一应用系统,小到手机游戏,Java可以大小通吃,来者不拒。尤其是中国政府的重要系统,全没有.net的份,为啥?你不给我看家底,我怎么知道你有没有留了后门,改天偷偷溜进我家?
.net照顾中小型应用毫无问题,而且开发速度快,作为用户,付了钱很快能看到回报,当然欢喜。大型应用么,.net是不是真的支撑不了,我不知道,但诸如windows不稳定不安全的评论由来已久,.net建构于这些亲戚的基础上,坏事就脱不了干系。
系统交货早,功能实现,运行稳定,安全性不出纰漏,用户就满意。
跨不跨操作系统,这个考量不重要,哪有没事整天换操作系统的用户?
站在开发商的立场上
Java还是.net?继续头疼。
跨平台对开发商是一个巨大的诱惑。一次开发,多个平台使用,降低了迁移成本,有利。但Java的开发工具没有.net顺手,对编码人员的要求比.net要高。
.net培训成本低,上手快。尤其如果开发人员以前都是做windows开发的话,转型成本低得让老板眉开眼笑。
最重要的决定力量是市场。开发商所定位的市场用户的需求和开发上在技术上的历史积累,决定了开发商最终的策略。
站在从业人员的立场上
从业人员被市场所驱动,反过来也引导市场。
Java起手的过程比较漫长。Java开发者要做很多DIY工作,才能写出第一个像样的程序。DIY多了,对于从业的基础素质,必有提高。
.net入门快,windows最大的好处“可视化”在.net延续,集成环境好,单步调试强,这是Java团队中下至程序员上达项目经理历来羡慕的地方。做惯了windows和.net下的开发,难免觉得Java下的开发调试实在比较原始:代码大多要一行一行写,单步调试很多时候不可能。
但Java人员的付出也有回报。我还记得当年Pascal编程课和Unix操作系统带给我的思维冲击,那门编程课应该更准确地说成“结构化编程――pascal”。Pascal强调的结构化编程带来了非结构化语言如Fortran之流无法比拟的美和乐趣,Unix崇尚的“小即是美”、“没有消息就是好消息”深入我心。在软件开发这一生产过程中,除了得到维持生计所需的报酬,同时能得到美的享受和满足的心情,实为天赐。Java从业者乐于谈论Java的美,这一点上比.net有福。
结尾
就服务端市场来讲,Java目前在技术先进性上有绝对优势。应用系统需要各个层面的框架(framework),Java都有大量已完成或正在进行的开源项目帮助开发人员更好地完成自己的任务。诸如struts/JSF类的框架,.net没有对应物,而且Java在扬弃的同时保持着相对的稳定。
.net开发效率差不多是Java的三倍(经验数据),致命的诱惑。在Java放弃的客户端程序上,.net是老大,但在服务端,.net还是个小弟弟,有待成长。微软最初想要构建一个新的技术来回应J2EE,但发现一己之力还办不到。于是匆匆祭出com/com+,被绝大多数程序员评为“丑陋繁杂,迟早会被替换掉”。什么时候替换呢?这一替换对应用的影响有多大呢?微软的新操作系统对.net又会有多大影响?拭目以待。
绕来绕去的意思是,我不觉得两个平台有截然的高下之分。在这个互动的世界上,不想被淘汰的竞争者始终保持警惕,努力学习对手的优点。Java的努力之一就是提供更易用的工具帮助开发人员快速轻松地开发Web应用程序。而.net的当务之急是改进架构,完善框架。
还是那句话:没有最好的技术,只有对于具体项目来说最适用的技术。
本帖一共被 1 帖 引用 (帖内工具实现)
有空该发个系列帖好好谈谈
俺先送一朵花。
花之。
哇,竟然还是mm,更佩服了
怎么给安到April 1st脑袋上去了,可恼!
EJB 3.0有什么东西“打动”了你,能不能说说?
MS SQL 2005里直接用.NET语言写Stored Procedure, Trigger, user-defined function,试验了没有?很有趣的一个方向!
.net直接写stored procedure这些听说了,还没试,要再看看,粗想之下是有帮助,但光MS SQL一家数据库支持这种做法还嫌不够
EJB3.0,晚点给你包子
讲讲?
小弟很明白此文是比较两个产品,愚以为人比工具重要。
很简洁的开发语言,到了二三流的程序员手里,也会变成意大利粉编码。
即使目前服务器端.net比不上Java,(这个我也存疑),但接下来64bit的服务器,加上下一代的.net,到时候鹿死谁手还未可知呢。
一块砖头,盼能引出几块玉来
可见,我有远见――自我鼓励一下先。
人比工具重要――很正确。可是懒厨兄,这里还是公平比赛吧,别搞田忌赛马。如果用同等素质的开发人员,分别做Java和.net开发,代码质量还是Java更好些的。
就好比一个是鲍鱼,一个是鲈鱼,前一样交给二级厨师,后一样交给特级厨师,有没有可能作出来的鲈鱼比鲍鱼好吃?我觉得有可能,完全有可能,但不能就此推断鲈鱼本来就是比鲍鱼好吃的东东。比喻而已,懒厨兄别太当真,我绝没有认为Java比.net是鲍鱼和鲈鱼之比的意思。
至于下一个问题:下一代ms操作系统,下一代.net,鹿死谁手?确实还未可知,我的意思也是要拭目以待。只是呢,私下以为.net要赶上Java,恐怕还没那么快,毕竟Java的体系不是一日之功。
砸砖好,真理愈辩愈明,我一定有错即改。
用鲍鱼,鲈鱼来比喻,睡虫也喜欢入厨?就算您说Java比.net是鲍鱼和鲈鱼之比,这也没啥大不了的,各人口味不同嘛。
个人认为,下一代的.net胜算很高,这是因为有后发优势,可以少走很多弯路,历史包袱,应该会越来越少。
用这个比喻,是估计到在这一点上大家好沟通,求同存异的可能性更大些。
后发优势是有的,后发劣势也是有的,等等看??。
我最希望看到Java和.net你追我赶,互相激励才跑得更快,一枝独秀就没那么好玩了。所以,其实我也希望ms发奋图强,早日和Java不相上下。
BTW,您老有没有芝士?h西兰花的菜谱?前两天就想讨教的,今天逮到机会了。有的话,贴居家生活那里吧,我常常过去看的,放这里怕斑竹生气我们不务正业,呵呵。
这有菜谱
但这玩意儿会好吃吗?