回忆Java乱谈

昨天聊天被甫鸼问到有没有看过什么Java写open source项目,回答没有。被追问为何没有,回答说真正对open source开始感兴趣的时候已经对Java失去兴趣了。

回想当年对open source还只是草草尝试、没有上手的时候,感觉阅读CC++的代码真的很头疼(其实只是因为当时还没有掌握基本的grep操作,只会用UltraEditsearch in files)。那时候对我来说编译过程就更神秘了(后来花费了两个月的时间读Linux kernelmake file,其中包括一个星期阅读make文档花费,这种神秘感才彻底消除——不管你能不能看懂代码,也不管你的修改是不是在编译之后真的起作用,只有你真正明白到底是什么样的一组命令把一堆C文件变成了一个没有扩展名的文件你才能开始感觉一切在掌握之中)。那时候我对Java的评价是open source设计的完美语言,因为one-true-way的风格让代码只有一种写法,编译过程简单,根本没有连接和后期的binary文件处理。

讽刺的是,当我真正开始推崇open source的时候,已经对Java懒得看上一眼了。这发生在将近四年前,稍候在工作中完全脱离Java也已经近三年。其间也偶尔考虑过Java的成败。这时被甫鸼问起,想来也应该写下来一些感想。

Java失败(姑且认为是失败了吧,可能有人不同意这种说法)的最主要的原因就是Sun只做平台不做应用——甚至还有更绝的,当年有种说法是鼓吹Sun只做标准,连平台实现也不做了,言语中还对能靠写写标准就能赚钱的企业十分羡慕。可惜的是用户可不买帐,没有end-to-end(一头是硬件,一头是最终用户能看得到的产品)的方案,用户不会掏钱。看到Windows独占市场的人都嚷嚷当年的Wintel联盟,可是是不是没看到有多少用户仅仅是因为离不开Office而不得不Windows掏钱的呢?

Sun不好好做应用,天天大吹大擂平台本身。最后的结果是不管如何大家都开始认为这个平台本身就能赚钱了,吸引了一大批围着平台打主意的厂商。微软的J++被干下去了,IBM自己的JDK最终推出了。Sun这下子有点恼火,马上打定主意,对Java标准还得看的死死的。

Sun对待Java标准的态度极大的伤害了Java平台。事实证明,所谓JCP一类的民主,相对于真正的Linux kernel风格的open source来说,都是不可救药的官僚,根本起不到改进软件的作用。Sun也有自己的委屈,所谓一统就死,一放就乱,标准都放开了,Java标准岂不是都乱了。其实问题要从两方面考虑,第一是得相信大众的智慧,好的软件是进化出来的,不是一下子设计出来的,不放到严酷的环境中自然演化不行。第二是如果真的乱了,说明软件本身的接口复杂度过大(参考《HTML 5想到的[2》),换句话说,是不是Java本身的野心太大了?一统武林的想法是好的,但是别成了岳不群。

其实Java这么庞大,也未必是每个模块都开放用户才高兴。Sun应该学学苹果,把Mac OS X的内核和SafariHTML engine和盘托给open source社区,自己安安心心做Cocoa,做OpenGL优化,做高级的色彩管理和字体渲染,做Safari的用户体验。Sun如果早早把JVMopen source社区,自己把Swing的架构、控件和主题做到最好,好好做上层应用而不是把这块丢给ApacheJBoss,那么JVM本身未必会分裂(谁会让一个用户都喜欢的Swing或者App Server运行不起来呢),Java本身未必会失败。

回头看看我对Java失去兴趣的时候也是对open source真正开始入门的时候。这仅仅是一个巧合吗?也许Java满足的只是一种虚假的需求。话说初学者推崇备至的技术有些到了高手看来很难用(反之的情况也有)。软件开发是否也是这样呢?也许很多人只是欠缺一些阅读分析代码的技巧;或者是有些人被C++的滥用语言特性迷惑而失去了对现有语言的信心;或者是当时更为抽象的动态脚本语言比如Python还不为大多数人所知。Sun的强大宣传力量让很多人一时无从分析自己真正需要的是什么,转而寻求一种激进的替代品(话说人类历史上那个被经济危机打乱的年代似乎也有类似的情况)。

过去的已经过去。由Java的现状和它为自己赢得的名声来看,我认为它永远不会回归主流了。我们的未来的语言会如何?C大概会一直占据底层系统开发的地位。C++继续受到C和高层语言的打压。高层应用的仍然保留大量C++代码,但是在寻求转变。原本认为由Java占领的阵地由JavaScript、Flash/Flex、AIR、Objective-C、Python、Ruby、Perl等工具来占领。这些工具能够比Java成功都在于克服了上面所说Java的一个或者多个弱点——或者更开放,或者在早期就拥有优秀的无法让用户割舍的应用。

4条回应 to “回忆Java乱谈”

  1. Casino 1244397951 Says:

    Casino 1244397951…

    Casino 1244397951…

  2. Fuzhou Says:

    要说Sun不做应用也不尽然,他们自己也曾搞过Jini,搞过EJB。考虑到Java后来大部分应用领域都被限制在“企业级应用”(PS:俺对这个极具MS命名风格换句话说无法解释任何问题的术语极为反感)里,Sun所做的也不能不说是一种应用,只是不面向最终用户而已。

    俺认为Java失败是败在了OO一元论,或者更准确一点,Design Patterns一元论上。在早期JCP设计的框架里最明显的设计风格就是反复强调万物皆OO,事事皆Pattern。这种风格的结果使得Java的编码风格变得异常繁琐。比如过度利用Command模式,往往导致程序中大量地出现只为实现某单一操作的类——既然是单一操作,直接定义成函数不行么?答曰:不行,我们要考虑将来的扩展。这种结构带来的巴洛克风格可以很好地迎合某些架构师的审美,却和广大一线coder的观点背道而驰。

    —- 闲聊滴分割线 —-

    以前俺也一度疯狂地迷恋这种巴洛克风格的设计,虽然源头来自Modern C++ Design。但是后来就发现这种风格会导致极为无聊的后果:

    * 反复地编写相同模式的代码(拼接各种Helper之类的class)
    * 胶水代码严重增加代码量
    * 严重降低程序可读性

    为什么Design Pattern在严重降低程序的可读性?因为Design Patterns总是试图把完成实际功能的代码切成细碎再细碎地小块,然后通过替换小块的方式达到所谓复用的目标。可是代码被切碎了之后带来的一个直接问题代码的阅读缺乏连续性,就算俺已经有了ctags做了标签,在VI里跳来跳去三五遍之后也搞不清楚自己读到哪里了。这个方面的经典例子有:

    * 滥用Template Method等Patterns导致代码中大量出现“基类方法-> 子类重载方法 -> 基类方法”的循环调用过程。

    * 滥用Command导致静态地阅读代码完全无法确认代码的调用关系。相信经常Debug COM/DCOM的同学们对此应该深有体会。

    —- 华丽滴分割线 —-

    所以俺不喜欢Java的原因在于Sun过分地把持了JCP的设计,或者说,Sun在试图控制Java的程序设计风格,而这种风格是八十年代中到九十年代初在各个大公司的联合炒作之下培育起来的虚假繁荣,随着时间的推移已经越来越不合时宜。所以之后才有Sprint,Hibernate还有JBoss这样的民间项目进行反抗。俺也很高兴地看到后来这些新一代的Java框架能够被广大coder所承认和喜爱。这也说明了好的程序设计风格是要扔到优胜劣汰的环境里演化出来的,而不是几个“架构师”坐在书斋里写几篇文章就能确立的。

    最后胡诌一句以为注脚:判断一个程序是否优秀的的标准,应该是能够合理地完成功能(稳定性,效率,扩展性,都属于其中的一部分),而不是用于彰显设计的大能。

  3. zy Says:

    同意sipoint说的”好的软件是进化出来的,不是一下子设计出来的“。

    同意Fuzho说的”好的程序设计风格。。。不是几个“架构师”坐在书斋里写几篇文章就能确立的”。

    说这些,你们不反对吧。

  4. Xrumer Says:

    Xrumer

    Xrumer Kings

    We are Xrumer experts, we from been using Xrumer fitted a long leisure things being what they are and know how to harness the titanic power of Xrumer and go off it into a Cash machine.

    We also yield the cheapest prices on the market. Diverse competitors will cost 2x or consistent 3x and a lot of the continuously 5x what we charge you. But we have faith in providing great help at a low affordable rate. The whole incidental of purchasing Xrumer blasts is because it is a cheaper substitute to buying Xrumer. So we plan to stifle that bit in cognizant and afford you with the cheapest rate possible.

    Not just do we be suffering with the greatest prices but our turnaround occasion after your Xrumer posting is super fast. We will have your posting done ahead of you know it.

    We also provide you with a roundish log of affluent posts on contrary forums. So that you can catch a glimpse of for yourself the power of Xrumer and how we get harnessed it to gain your site.

    Search Locomotive Optimization

    Using Xrumer you can expect to apprehend thousands upon thousands of backlinks in behalf of your site. Many of the forums that your Location you will be posted on bear high PageRank. Having your link on these sites can truly serve found up some top-grade quality recoil from links and really boost your Alexa Rating and Google PageRank rating through the roof.

    This is making your position more and more popular. And with this increase in celebrity as grammatically as PageRank you can expect to appreciate your milieu really filthy high in those Search Locomotive Results.
    Transport

    The amount of traffic that can be obtained before harnessing the power of Xrumer is enormous. You are publishing your site to tens of thousands of forums. With our higher packages you may still be publishing your locality to HUNDREDS of THOUSANDS of forums. Create 1 collection on a stylish forum drive almost always enter 1000 or so views, with say 100 of those people visiting your site. Now assume tens of thousands of posts on fashionable forums all getting 1000 views each. Your freight ordain associate because of the roof.

    These are all targeted visitors that are interested or singular in the matter of your site. Assume how divers sales or leads you can achieve with this great number of targeted visitors. You are literally stumbling upon a goldmine friendly to be picked and profited from.

    Retain, Traffic is Money.

    BECOME ENTHUSIASTIC ABOUT YOUR TWOPENNY BURST TODAY:

    http://www.xrumerkings.com/

    buy xrumer
    xrumer blast
    xrumer blasts
    xrumer crack

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s


%d 博主赞过: