五千年(敝帚自珍)

主题:【原创】我看:JAVA和.net孰优孰劣?这是个问题。 -- 睡虫

共:💬49 🌺19
分页树展主题 · 全看首页 上页
/ 4
下页 末页
  • 家园 【原创】我看: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的当务之急是改进架构,完善框架。

    还是那句话:没有最好的技术,只有对于具体项目来说最适用的技术。

    元宝推荐:铁手,Highway,

    本帖一共被 1 帖 引用 (帖内工具实现)
    • 家园 据说新的java支持generic programming了?

      can u elaborate?

    • 家园 Java 的更新太慢了

      技术支持也不如vc

      • 家园 比.net快

        如果你指的是Java核心技术的话,并不慢啊。.net比较新,补课的地方多,所以你觉得更新快吧。Java的最大好处就是开发队伍强大,有许多免费资源可以用。

        至于技术支持,从来如果碰到Java问题,google一下就出来啦。碰到.net问题的话,只能找专门的技术支持,很不爽

      • 家园 什么意思?

        您说的更新太慢作何解?

        另外技术支持您是指?

    • 家园 愚以为,孰优孰劣要看在什么市场环境中比较

      在高端企业计算市场,如电信级,.net那是相当被动,本身就不具备任何竞争的优势;

      在中低端企业计算市场,java和.net还是基本势均力敌的;

      在桌面应用市场,java没戏;

      在嵌入式设备领域,目前.net不是java对手;

      呵呵,在我心目中,java当然胜过.net。鄙人基本站在反M$的立场上,呵呵

    • 家园 从用户的角度看问题

      我不做程序员已经2年多了,由于工作的原因现在更多从一个用户角度看问题。对睡虫的观点说上两句。

      作为用户,我们对开发工具本身并无成见,但我们对产品是否符合我们的要求很在意,对产品开发周期很在意,对产品的维护使用是否方便很在意。

      关于产品的可移植性一直是JAVA框架推销员们津津乐道的东西。但是从用户的角度来看,所谓可移植性基本等于0。用户和开发商在选择系统架构时首先考虑系统的规模。如果需要在小型机以上平台的硬件性能,我们自然不会考虑.net。因为没有在小型机上跑得WINDOWS。如果系统本身就是在IA架构的服务器上运行,问题才出现。一个轻型系统,我们用户希望系统尽快上线取得效益。没有人会规划设计一个系统然后在半年内升级系统的软硬件。而2、3年之后,谁知道JAVA会不会发生改进,而我所需要的功能也可能发生很大变化。所以在我看来可移植性意义不大,因为我的系统需要升级时反正会重新开发的。

      从系统开发的过程管理来看。我认为如果一个开发工具能够尽快将用户界面和操作流程展现在用户面前才是好的。大多数情况下用户不懂技术。你把算法和处理过程给用户看是没用的。只有到用户在实际界面上操作,并且处理实际数据他们才能发现问题。在这个意义上.net的快速开发的理念是很好的。不过JAVA其实也不错。在这个问题上我觉得两者胜败在于谁能够在业界产生更多的成熟可用的系统构件。不仅仅是提供数据库中间件、用户界面、业务逻辑之类,还包括安全、系统管理之类的构件。这一点java平台可能略胜一筹。因为在构建异构多平台分布式系统上java会稍好一点。而windows因为安全性不好而受了拖累。

      然后是性能及可靠性问题。在实际使用中我觉得由于追求跨平台而导致了java的效率似乎不高,可靠性也一般。这本应是.net的强项,但似乎由于windows自身的原因,系统的故障发生率也不少。两者算平手吧。

      .net上手快,程序员容易培养,似乎在人才上容易站上风。但是正因为如此,开发商容易招募新人而对旧人的培养和发展并不热心。我认识的资深程序员和开发者都转到在UNIX上做java了。

      胡乱说几句,仅供参考。

    • 家园 问个无关的问题

      睡虫MM认识梁晋清吗?

      • 家园 不认识

        狗了一下,梁是编程技术方面的专家?量子为什么问这个?要是有什么可以让我长进的,还请赐教。

        我最近比较忙,N久没来西西,回晚了,见谅!

        • 家园 呵呵,瞎问问的

          看到睡虫MM写到了学Pascal的结构化编程,想起了以前教课老师的名字。想和睡虫套近乎未果

          • 家园 我知道你的母校了

            可惜我不是。

            不过是同一座城市,两个对角。你猜到了没?

            有一段时间,我喜欢你们学校的一个男生……

分页树展主题 · 全看首页 上页
/ 4
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河