一家之言

        公司内部关于JAVA和NET的一次讨论,下面是一个同事的看法,不论对不对或者偏激不偏激,只是觉得有点意思,就帖了出来,仅代表一家之言。

        最近XX说了很多java的好处,可是我不完全同意他的看法,我的想法很实在:能帮我在预定时间内完成任务的工具才是好工具。

      JAVA,由于它的开源……它的语法,它的跨平台及其一切优点(在此省略一万字),历经10年时间,在软件开发领域独树一帜,成为众多程序员津津乐道的工具,并成为了“企业级”应用的首选。
 
       可是它的弊端几乎与它的优点一样多。其中最有名的两点是“难以学习”,“界面开发能力弱”。但是这里我不打算直接对比JAVA和.NET的优劣,从技术手段上来说,两者各有胜负。可是咱不妨从一些“特别”的方面分析分析:

1、为什么“JAVA”那么难学?缺文档、缺工具。缺文档:SUN出的文档“简明扼要”,如果自己没有经验,你只能从别人的“经验”中进行学习,没有“官方”的组织领导,大家只能我学你的、你学我的……你能想象零零碎碎地学习别人的“经验”有多难么?缺工具:10年了,你看到多少功能全面、稳定耐用的JAVA ide?就是有也只是最近两年才有,而且使用的时候你可要注意了,里面装有一堆乱七八糟不知道从何而来的插件,开发工具提供商可能不对他们负责的……,再者,几乎所有的开发工具都模仿了SUN的风格,只提供了“简明扼要”的帮助,为什么?——大家看SUN的嘛,我们都是遵守标准的,或者他们能力有限不能提供那么好用的帮助。

2、跨平台将逐渐失去意义。大家如果认真考虑过WEB Service,你就会明白SOA的技术保障是跨平台的高组织能力的通信机制;将来,利用Web Service或者类似的技术,你将可以毫无阻拦地在不同的软件平台之间来去自如,甚至你可以通过这些技术访问互联网上所有的服务,你管它是来自什么平台的!那我们还有多大必要要求每个应用程序跨平台??大家看95598的java + web service + delphi(或者有些时候会换成别的),你觉得这种事情离我们远么?

3、64位系统带来计算能力时代分界点。更甚于当年从16位转换到32位的是64位计算系统到来了,你知道“180亿GB的RAM存储器寻址能力”意味着什么么?——自己去查查网页——一般会说是地球模拟之类的事情。而这些事情将在所有的计算机上,包括最底端的PC上,得到应用!
你能想象么?在未来的20年里,地球上每个人的计算能力将大大地得到满足,而我们现在则处于时代的分界点上!64位系统强大的计算能力将使PC SERVER足以满足绝大多数目前的“企业级”应用的性能要求,作为软件开发的人员面临的主要问题将更集中于需求的解释和表达(前提是用户提出更牛的应用要求之前)。而编程的方式也将发生巨大变化,更完美的表现方式,更自动化的编成体验必将是软件开发工具的发展方向。现在的 JAVA 能代表这种趋势么?

4、计算模式的变更。前两天微软有个工程师来,他对这点的说法我比较认同。从前很多大型系统都是集中部署的,为了完成更高的计算要求,用户必须付出高昂的代价,32个CPU的服务器的性能和它的价格相距甚远,CPU数量越多价格越昂贵——几乎成指数增长,而计算能力的提升则顶多能线性增长,为什么不能在不同的计算机之间共享计算能力呢?这就促使了分布式运算的发展,以后可能我们都在“网格”中。而PC(从目前来看还是MS的WINDOWS当家)无疑是这种变革的最大收益者!——而最早提倡“网络计算”的java无可回避地要依赖于windows实现它的价值。可是在自己的家门口,MS能输给java么?

5、关于“霸权”。JAVA为世界带来了“自由”,可惜“自由”永远都是受控的。从有人以来,能强壮起来的国家、民族、组织无一例外地需要强有力的秩序(包括意识秩序和强制的法律秩序),而只有一致的规则才能降低劳动成本,提高生产效率。就像秦国的“书同文”给了中国人互相理解的机会。当然“有压迫就有反抗”,总有不满现实的人——这些人会使情况变得混乱,同时促使世界变得更好——为了抵抗强者结成了同盟,要精诚团结才有机会生存,可是当它们获得一定的生存空间后,自然又会摆出自己的私心,大打出手,形成新的“霸权”,社会总是如此反复,也因此而得到发展。从IE的故事、.NET的故事可以看出,MS起码还是一个愿意学习的组织,也是一个积极创新的组织——不要光看到垄断的一面,垄断着操作系统睡大觉MS早就玩完了。SUN和IBM从服务器往PC打,MS从PC往服务器打,从而造就了不同的技术风格(例如J2EE)、不同的销售策略(例如开源),如此而已。

6、最近曾看过一句话,大意是说:JAVA的未来在于IBM,可悲的SUN是个自掘坟墓的人。看到最近IBM动作频频,好像有那么点意思了。IBM这只会跳舞的大象或许会成为这个世界的另一个霸权。可是从目前来看IBM还没有这样能力——虽然有了潜力。IBM的重头戏来自于服务,开源对它来说是个恰当的选择,而且它有实力组织起整个JAVA队伍。

7、关于“开源”。从人的私利性来说,当然不希望自己的劳动成果无偿被别人占有。但是开源确实大大提高了学习的速度,如果不是浏览器统统可以查看网页的源代码,可能互联网的发展都没发展那么快。如果私利和公益在软件行业取得平衡那真是天下幸事。这个问题,我没看到过十分信服的说法,自己想不出来怎么判断。说到“社区的沸腾局面”,人们为什么沸腾?我觉得沸腾的原因并非java的语法或者要讨论它的底层类库写得究竟怎么样,而是在讨论编程的模式、软件的框架,从目前的技术实现能力来说在.net论坛里讨论这些东西也是可以的(事实上也开始出现不少开源的.net技术);为什么大家喜欢在JAVA社区里讨论这些问题呢?我感觉可能是因为开源的习惯于java,大家愿意在上面表现自己,它是一种潜在意识的代表——我是为了展现我的实力,不是为了钱——对这个问题不熟。

       上面说的都很“虚”。如果你问我为什么选择.NET的路线,从近的说,它好用,任务完成得快,就这点,可以保障产品质量,使用户满意;性能上,.NET平台其实完成了很多艰巨的任务,只是我们一直没有机会去尝试而已;.NET学习容易,可以很快培养起一个高质量的开发团队——你想想如果2年前如果走的是JAVA现在会是什么情况?再者.NET和JAVA不过是些语言上的差别,相互间学习很容易,从前者入门,要转后者也不难;关于很多框架的迁移问题,或许从java社区里我们学到了很多知识,但是这并不代表.NET本身的技术构架很差,有些东西可能只是不同的策略和理念而造就的不同实现风格——反过来java其实也有很多东西应该向.NET学习的,可是javaer们好像还没有mser们学的认真;关于“从Spring,到Hibernate,再到AOP”这些技术,东西并不是越新越好,新代表创意,但不一定代表生产力,一个稳健而成熟的技术环境至关重要,拿铜剑的也打败过拿铁剑的。

        最后谈到技术投入,某种技术投入的多少要由公司不同阶段的实际情况来决定,就像目前的情况,每年那么多零零碎碎的事情,人员技能底子又不厚,追求的目标当然是快速开发、积极培养团队,这一点上来比当然选择.NET,大量人力投入.NET!可是反过来,如果哪天公司由于将项目集中在了几个大型项目的周围(基于java)、或者咱要开发完全国产化的东东,项目有需要,当然也可能大量人力投入研究JAVA(那时候我们也有底子了)——任何决策都有主次,这不奇怪。

      说那么多,可能也有很多不对的地方,总的来说想让大家保持足够的理性,技术是拿来用的,什么场合就选用什么武器。非常支持任何技术的研究与探讨,不是说搞.NET就不许学别的,想学什么就学什么,吸百家之长成一家之言才是高手,光像个跟屁虫今天跟这个明天跟那个有啥意思。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值