作者简介:Bruce Eckel编写了很多关于计算机编程的著作和文章。他经常为计算机编程人员进行演讲和讲座。它是ANSI/ISO C++标准委员会的创始成员。他最著名的著作是《Thinking in Java》和《Thinking in c++》,适用于面对对象编程经验很少的编程人员。
java抵触情绪已经初步显现,我们开始看到一些由此引起的根本转变。
Bruce Tated 的一些著作中集中讨论了java的缺陷,并主张放弃一些尚未实现的想法。一些博客(如Jens Alfke’s Thought palace 和Stephen Colebourne’s Webblog)也频繁提这个问题。当然还有Steve Jobs的著名引用(谈到iPhone时):java了他只是个巨大的累赘
产生这抵触的唯一原因就是,SUN坚持认为Java是无去不在、无所不能的。他曾经的令人惊叹的,但是一中语言只有其设计者和提倡者能够认识到其中的问题时,才可以得到发展。当一中语言已经不再成功,仍坚称它的行为本身就是一中否认。
能够发现可能性当然很好,但是这样做的却点在于,很难确定何时出现故障。Web的概念非常具有远见。但是大部分Web都是失败的。的是。我们已经可以勉强使用HTML、CSS和JavaScript技术开发复杂应用程序其开发的难度和成本都非常高。而且似乎不可能在不同的浏览器上获得相同的外观。甚至简单的页面也会因为字体的问题而看起来不同。
如果不使用Firefox,有多少网站由于仅仅针对Internet Explorer (IE) 创建而导致全部分内容无法阅读?在我看来情况越来越糟糕!我看到更多(而不是更少)网站不能很好地兼容Firework,以至我们从认真考虑从新使用IE。
CSS许下的美好承若并没有实现。许多年过去了,它在各种浏览器上的实现仍然不一致。只要你使用HTML和CSS,你就会说知道自己创建应用的程序在不同的浏览器上是否产生不符合预期的效果。IE和Firefox以外的浏览器通常会使用情况变的更糟糕。
事实上。JavaScript在Web的初期就出现了,但是浏览器的混乱导致了JavaScript不一致性和难以使用Ajax的关键部分在于:已经有人开始解决JavaSpcirpt的跨越平台问题。因此你不用考虑不同浏览器之间经常出现的不一致。
这种方法存在两个问题。一是JavaScript的功能有限。尽管Ajax可以充分利用JavaScript的功能,但它的功能也非常有限。二是温暖依靠Ajax库来处理浏览器问题。如果想编些自己的代码,我们就必须精通这些问题,但是那样的Ajax及大的改善了体验,但是它仍然在局限性,我们想我们已经了解Ajax将提公更大的功能。
更令人印象深刻的是Google Web Toolkit(GWT),为了加速开发进程,它将类型检查的Java转换为了JavaScript。首先使用Java写代码,然后GWT将其编译为跨浏览器的JavaScript.然后,JavaScript变成了能够在所有平台上运行的中间代码。但是这让Google的智嚷团结不得不解决本不应该出现的问题。而且。如果没所需的库,你仍然会被JavaScript和浏览器发内在局限搞的筋疲力尽。
我们却看到了有些另人奇怪的基于Ajax的工具,比如Gmail和Google工具,他们正在不断地诱惑我(但是我重申:Google创建了这些而不是业余编程人员)它们确实非常好.但是这是你希望在Web上看到最好的结果吗?你已经看到,如果没有这些局限,这些应用程序就非常接近理想成果了,即使它们还不能持续工作(我们知道Google 工具还处于测试阶段)。例如,在Gmail中,你按下“r”键以后应该能够回复消息。有时候这是可行的,但是更多的的时候这是不可行,这简直让人抓狂!更常见的情况的当我们使用Gmail这样的web应用程序时Ctrl-C复制操作也是不起作用,这可以能是windows、Firefox、JavaScript或其他软件的问题,但它似乎与Web应用程序有关,并且这中情持续了一年。坦白发讲,我并不关心为什么会出现这样的问题,相信其他用户也不关心。如果这样简单的事情都会出现问题,其前途不容乐观。
对导致Web现状的一连串错误决侧,我们要需要付出多少努力才能补救?
有时候我们想知道,为什么Java Applet未能作为RIA(Rich Internet Application 富internet应用程序)的客户端标准在Internet得以普及
着是一个非常尖锐的问题,因为Gosling及其团队非常促进地完成了java(从而导致了很多考虑不周的决策)以便引起了Internet的变革。这就AWT和Applets在最后时刻加进来的原因。据说从概念到完成只花了一个月的时间。Bill Venners引用Patrick Naughton的话:“这是时间问题,只需3个月就会波及正个Java领域我们几乎不能完成”我之前就听这句发话,在构建编程语言时。这中态度似乎是错误的,你要创建一个基本的体系结构,并希望人们采纳和使用更多年,这正是需要谨慎思考的地方,而且仓促应付只能是后患无穷。
我们明白为何Green Team会有这个样的Microsoft的方式。抛弃出一个产品以吸引大众的目光。这个产品不必是完美的;他只占领市场空间就可以了。随着时间的推移,你可以修复任何由于仓促推出而产生的缺陷。这是敏捷方法在市场运销上的运行。
这中方法也适合用于动态语言。曾经最流行的语言之一Visual Basic,历经了多年的发展。Python已经修复了一些对原有代码有害发缺陷以优化语言。据说,pubye也计划怎么做。
但是对于包含大量基础代码(尤其是沉长的语言)的静态语言来说,修复漏洞似乎不怎么凑巧。所以代码都必须从新编译,甚至也可能更改。尽管我认为,java本来就是也可以采用Python的方法;如果不希望更改就不要更新。无论如何。许多公司改就不要更新。无论如何。许多公司没有更新其java版本。
Java已经存在十年了。但是applet并不是与web交互的首方式。这是另一个未被重视的java 的问题。老实说,为什么我们喜欢Ajax?
这显然不是因为javaSpcript易于使用——javaSpcript跨越平台问题就是过去人们不愿意用它的原因。Ajax能够流行就是因为我们知道客户端已经安装所需的软件。人民必须首先解决Java Runtime Environment(JRE)很容易安装,所以人都知道创建Java applet没有怎么流行,因而每个人都转变使用Ajax。所以, Ajax就成了大家喜欢的RIA技术。
尽管借助ECMAScirpt的当前版本将成为几乎所以浏览器的标准。但是当前版本的JavaScript已经可以使用了(尽管实现比较随意)并且不存在于安装问题。
经管着些年对java已经进行饿各种各样的修补,但是我们认更本的问题在于,所有尝试解决安装问题的人都只关注内在的技术需要;外部用户体验
安装JRE需要用户回答问题,对于精通的人来说。这样的问题的答案很简单或者是很易见的,但是对于其他Web用户来说,这些问题会让他们在安装时深深受到打击。在SUN Nerver Set on Java Security Updates 一文中,Inforworld 的Ed Foster 评价并举例说明了Java的安装问题尽管这片文章主要是对更新的抱怨。但也对久版的java很不满意。Pyan tomayko也写饿一片博客java installation issues讨论java安装问题。
Java network launch protocol(JNLP)是 java webStart的基础,以创建易于安装的桌面应用程序。我以为JNLP未被广泛使用的原因可以在https://aerith.dev.java.net/上找到,这是Cool JavaOne Demos 的一个页面。如果你单击该页面上的JNLP version link .它将开始启动。下载一些东西并寻问一些问题。然后就没有下文了。没有错误消息或者是任何信息告诉你发生了什么。重复尝试还是同样的结果,只是你能够正常使用,那么就更糟糕了——它只是随机地可以在一些平台上运行,而且另一些上就不行。这样的产品你如何调试呢?
使用java构建GUI应用程序并非不可能,但是10年过去了,applet java Webstart 和常应用程序仍然存在安装问题。10年之后,人民不在信任它了。如果10年后还这样,我敢说人们会以为这样的问题已经不值的修复了,即使他修复了,由于用户已经有了如此多的糟糕体验,那么重新建立之前的信任需要更多的时间。
AWT最初的用户体验沉重打击了 Sun对java的狂热吹嘘,而且我以为Applet到现在还没有辉元气,因此java永远不会成为RIA的主流。
即使在现在,我在web站点运行java applet的体验上仍然很糟糕,他们就是失败了,而且没有任何错误就失败了了,没有任何错误的提示。更糟糕的是,有时甚至会阻止Firefox打开新窗口,直到我从新启动计算机。
对”applet”已经死了“的常见的回答是“不”,他们还没有死。我们仍然在使用他们“ applet并不是一个无是处人们仍然使用它们创建出色的产品。Java posse每周都会推出一个或多个applet。上面的论述应该理解为”对于web RIA来说,applet已经四了。“ JRE和任何特定的Applet的安装过程并满足以任何将它们作为通用的web站点。
Java 的缺点同样影响了桌面应用程序,applet也因此受到了牵连。我曾经使用过一个叫做MemeorexexPressit的java产品。他的界面非常糟糕而且缺陷很多,我还使用过Logitech IO钢笔支持软件,(使用.ENT完成),它运行流畅而且非常漂亮,与Memorex expressit形成鲜明的对比。你也许会狡猾说,这是因为Memeorex的编程人员却乏经念,但是Logitech软件只是一个很小的应用程序似乎不需要编程人员付出艰苦的努力就可以运行良好,而我我们使用java编写的应用程序中,几乎没有一个易于使用。Eclipes 是一款优秀的软件,但是我想其背后一定包含着“艰辛的劳动”。
Corel曾经尝试使用java创建一个文字处理程序(我忘记了他们他们是想移植Wordperfect还是从新编写)。显然他们行动的太早了,因为他们只有Awt。但是只有事后才知道——如果你听说了sun 夸张的宣传,就觉