Bruce Eckel 谈 Python、Java、Flex 及 RIA

  • Jon Rose
  • 张龙

2009 年 5 月 9 日

话题:JavaPython语言 & 开发架构

在本文中 InfoQ 有幸采访到了 Bruce Eckel 以了解其对 RIA 前景的看法及目前所从事的工作,因为他最近与人合著了一本书,名为First Steps in Flex

首先 InfoQ 问到 Bruce 最近在忙什么呢:

前不久在滑雪的时候我把腿摔坏了,因此过去的 9 周我一直在恢复。此前一直都没受过什么伤,这也算是一个新体验吧,我做了外科手术、全身麻醉以及各种恢复治疗——太多新体验了。尤其是全身麻醉,我用了好几周的时间才从中恢复过来,真的。我就呆在那,无所事事,脑子的反应速度也变慢了,在最后恢复过来时,我才真切的感觉到意识的存在。在无所事事的那段时间内,你真的会想去做些事情。

此前我就问过自己“我现在想要做些什么呢”,在腿摔坏后这种感觉尤为明显。继续从事着之前所做的事情已经无法满足我的心愿了——我想干点有意思的事情。

我开始编写关于 Python 书籍的一个主要原因就是我发现自己最喜欢做的还是咨询工作,这个工作经常需要和很多公司打交道,而这些公司当中有一些已经决定采用 Python 了(我想肯定也有不少公司开始使用动态语言,但我的经验主要还是在 Python 上)。这个工作极具挑战性,每天我都感觉像是在前苏联一样——他们不会对我进行搜身检查,但也差不了多少,在我去浴室的时候总有人陪着我(因为腿受伤了)。但这些公司的技术经理还是坚持使用 Python 而不管我的兴趣所在(然而,现在我知道了负责 Python 提交的公司的作用和有决断力的个人对其的推动力之间的差别了)。

一般来说,愿意使用 Python 进行开发的公司文化一定是很开放且享受这么做的。有些公司坚持使用某种语言的原因仅在于它能提供一些“直接(directing)”的特性(策略性不强的一些人称其为“束缚与铁律”特性),这种公司更多的是希望降低风险而不是进行挖掘或是不断试验。当然在很多情况下,降低风险是必要的,但我却觉得这么做不太爽。快速试验与边缘挖掘才是我的兴趣所在,在我的印象中,选择 Python 的公司更倾向于我的这种做法,我也很愿意与这样的公司合作。

也就是说我又回到了“过去为自己工作的那种状态”以便与那些公司进行合作。写写书,在各种会议上发表演讲。虽说这种工作方式不是我发明的,但到目前为止,我还没有找到其他更适合的方式。

当然了,我还一直在为Open Spaces events进行创作,同时这些创作也让人感到满意。在一场研讨会之后(整整一周我都在不停的说,同时大量的试验也让人精疲力竭,这么做的目的是为了让与会者都能步调一致的进行学习,你可能会觉得这有点傻),我简直是身心俱疲,短时间内绝不想再来一次了。但在 Open Spaces event 上的演讲结束后,我总是感到非常失望并且下周也不想再演讲了。我想知道如何才能实现双赢。这也是 James Ward 和我编写“First Steps in Flex”一书的原因之一,为了让我们的“Flex Jams”在市场上打开名号。

前几年我一直活跃在当地的剧院中。Crested Butte 里充满了众多富有才华的人们,我们也组建了一个活跃的 theater group,要想让自己的作品在其中站住脚可不是那么容易的事情——目前我已经在 5、6 个剧目中一显身手了。上一个叫做“Into the Woods”,此前我可没演过音乐剧,但最后还是出演了“长发女王”。加上“灰姑娘”一剧,我们上演了最甜美的二重奏,这么说可能不太恰当,因为很多其他演员的工作要比我们更辛苦。我的伙伴王子刚刚从戏剧学校毕业,他学的是声学专业——他的母亲是伦敦歌剧院的首席女主角——因此要想赶上他对我来说可是个挑战。但这整个经历中最值得称道的地方是能与这么多认真且专业(虽然只是大家在业余时间打造出的产品)的人们一同工作实在是可遇不可求。这也让我对团队有了更深刻的认识,能成为卓越团队的一分子是件多么高兴的事啊。

随即我开始阅读大量关于软件团队和工作方式的书籍。这倒不是因为我觉得自己要成为团队经理了,而是因为理解团队对于一个咨询师来说是个重要的技能,这也是这么多年来我一直在不懈追求的东西。

剧院所做的一件事就是加上了当地作者所编写的 10 分钟长的剧本,我也这么做了好几次。我已经开始编写大型的剧本同时还参加了当地的一个 writing group。过去的几年中我参加了各种小说讲习班,发现小说要比其他文学作品难写的多(可能这就是为什么每年只有 5,000 部小说出版但却有 50,000 个散文书出版的原因所在吧)。

过去几年我参加了绘画讲习班, 所以现在也开始学习绘画了(我觉得参加好的讲习班是种习惯;从中能学到不少东西,但同时也希望这些经验能对自身改进起到帮助作用)。在我参加的上个讲习班中,老师总是强调“我们不是用刷子在画布上绘画 ,而仅仅是在平面上绘制一些标记而已”。我觉得这对我来说极大地降低了绘画的入门难度,不用担心画的正确与否。做就行了。我发现信手涂鸦要比循规蹈矩的画更好玩。不得不说的是我还没有掌握绘画的精髓,最大的问题在于我做事情有些太谨小慎微了,生怕将好的东西搞糟了。

最近的一件事就是我设计了 Pycon 2009 大会的 T-shirt,上面的画是我画的(一个抽象的易经 22 卦,代表了“优雅与美丽“)。遗憾的是,因为我的腿伤无法参加今年的大会了,但有人告诉我,我画的画有些超现实主义。

我觉得这些经历对软件世界是非常有帮助的。多做试验,多多探索,而不是呆坐在那傻想着,这么做会对项目的进展起到非常大的帮助作用。

接下来,Bruce 与我们一起分享了其最近发布的 Flex 新书:

”First Steps in Flex“是我与 James Ward 合著的,他可是个 Adobe Flex 布道者。我们想写点东西以便让程序员能够轻松上手 Flex,因此这本书很小巧,也没几章。这么做可以帮助大家集中精力于关键的事务上;翻开它你会有这种感觉”这章可真短,搞定它没问题“。下一章也如此... 整本书非常简练,为了达到这个目的我们需要将那些读者完全不需要了解的内容去掉并坚持其本质特性。通过这种方式,人们可以漫步在书中,同时感觉自己可以完成一些事情了,但他们却不会深陷于大量的信息中。这花费了我们大量的时间和精力将 Flex 的精华抽取出来,但对于结果我是非常满意的。

之后,InfoQ 向 Bruce 问到他对当前的 RIA 前景有何高见:

我觉得最重要的事情就是 RIA 是个真实的东西,而不仅仅是 Adobe 制造出来的术语。人们已经接受了这样一个事实:HTML/CSS 和一点点的 Javascript 并不会对这么多的 Web 应用起到颠覆性的作用(当然了,尽管在很多情况下这是正确的处理方式)。用户对丰富及更具响应性 Web 应用的期望越来越高,而站点却无法提供这些体验,同时也无法对付 Web 那些古怪的问题,这时你就需要在一个高质量的平台上编程了。

我越来越感觉到我们所陷入的浏览器“标准”始终无法统一起来,也无法让我们信赖,甚至连可用性都没法保证。看看 CSS 吧,从概念上讲它很棒,但却无法让我们在浏览器上进行一致的编程。HTML 本身更是乱的一团糟。并没有什么标准的方式来包含头(headers)和脚(footers)(是的,SSI 可以做到这一点,但它总是依赖于特定的服务器配置,而我们却不能这么做),这样人们转向了 PHP,接下来采取了我们称之为“比 Perl 要好的东西”,而这仅仅是由于它不会令让我们过早的陷入到麻烦当中(我使用过 PHP,但仅仅是使用过而已)。

底线就是:我们需要在浏览器和 RIA 之间加上一个中间层;浏览器技术始终无法独挡一面。甚至连 GWT 这样的技术也仅仅是降低了平台依赖性问题而并不会消除该问题。与 Ajax 一样——我们仍需手工调整代码以便其能够工作在多个浏览器上。工作量虽然少了,但这毕竟不是我想做的事情。既然加上一个中间层就能完全消除这个问题,那为何还浪费公司的资源在这些问题上呢?

我是个 Flex 迷,因为所有平台都支持 Flash player。Silverlight 宣称支持 Linux,但我不知道其支持力度如何。毕竟过去微软对于非 Windows 平台的支持并不尽如人意。Mac 平台上最新版的 Office 尚不能使用 Windows 系统上的宏,而宏对于我来说是非常重要的,这也导致了很多问题,不仅仅是我,其他人也一样。尽管微软有着这样那样的借口,但谁管你呢?你只能任人摆布。如果微软宣布不再支持 Mac 版的 Silverlight,那他们肯定也会有借口。如果 Linux 对其的威胁变大时,他们也一定有理由说你无法在 Linux 上使用 Silverlight 了,谁管你?如果你过于依赖他的话,我只能说霉运离你不远了。我注意到 Netflix 使用了 Silverlight 进行视频点播,不过到现在为止我还无法在 Mac 上的 Firefox 中使用该功能——可能过不久该功能就会出现,但如果不出现呢?Netflix 会丧失大量用户,同时他们可能已经丧失一些 Linux 用户了。Adobe 也是一家大公司,他们也可以变来变去,但他们却支持所有的平台,而微软却有一个操作系统要推销。Silverlight 的设计很棒,他们从 Flex 上也汲取了不少精华。我觉得有竞争是好事,这样会刺激 Adobe 更加努力。但如果你问我更喜欢 Flex 还是 Silverlight 的话,我会说“放着好好的东西不用,为什么要冒险使用微软的东西呢?”

接下来,InfoQ 问到对于用户界面来说,工业界不断转向客户端运行时是不是件好事呢:

绝对是件好事;我现在就在干这事呢。但我忘记说 JavaFX 了。在 JavaPosse Roundup 09 上,我们用 dojo 编写了少量代码,而 Dick Wall 用 Flex(借助于 James Ward 的帮助)和 JavaFX(借助于 Tor Norbye 的帮助,他就在 JavaFX 团队)实现了其“Flubber”应用。其实这些东西就是在我家完成的,不过由于刚刚做完手术,正在恢复中,我没法给出太多的细节。但给我留下深刻印象的是使用这两种语言可以实现同样的效果。我觉得用 Flex 实现更简单一些,但 JavaFX 的实现结果还是给我留下了深刻的印象。还有,JavaFX 看起来很像是 ActionScript,但却对语言增加了一些更灵活的改进,我觉得这会对 ActionScript 产生小小的冲击,好事一桩。

之后,InfoQ 问到 Flex 要想取得成功,是否需要借助于 Java 的帮助:

我认为 Flex-to-Java 桥非常重要,但 Sun 却不对其提供支持,太差劲了。在这件事上,Adobe 也好不到哪去。有一些开源的工具可以实现这一点,同时我认为还需要更多的商业公司来支持这些开源项目。即便他们不招人或是不完全支持,但看在钱的份上这么做也是有好处的。我觉得只要有人能从这些项目中赚到钱就会有很多公司开始支持他们了。能够简化该过程的任何事情都会让所有人受益无穷。

InfoQ 又问到,除了 Java 以外还有哪些语言能与 Flex 搭配使用:

我所完成的大多数项目都是使用 Python 作为 Flex 后端的。有几种方法可以实现这一点,但 Twisted 程序库对 Flex 通信提供了直接的支持,同时还是异步的,很完美。

Ruby 也支持与 Flex 的通信。我觉得动态语言是非常棒的后端,通过他们你可以做到最好——实现真正的快速开发,包括漂亮的 UI 与后端的业务逻辑。

最后,InfoQ 问到 Bruce 最近是否还在从事着 Java 方面的工作:

偶尔做点设计上的咨询,仅此而已。

我感觉“Thinking in Java”到第四版也就差不多了——到现在为止我基本上已经重写了四次,到上次写完后我觉得应该差不多了。所以我不打算再写新版本,不过我还会以附录的方式对第四版提供支持,增加一些自从第四版之后新出的重要细节和语言特性。但我希望社区能为这本书作出贡献,因此我发布了该书的电子版。这么做能否号召起社区就是另一回事了——这也是我对待 Python 这本书的方式,或许到那时我能想出更好的办法来处理这些事。

可以通过 Bruce 的博客来了解其更多的见地。

查看英文原文:Bruce Eckel on Python, Java, Flex, and RIAs

JavaPython语言 & 开发架构