Rock Star 2008 -- Chet Haase

Rock Star 2008 -- Chet Haase(译)
Rock Star 2008 -- Chet Haase
    这是一篇在今年的JavaOne会议期间对Chet Haase的访谈。关注Swing,Java 2D的朋友,对这位图形/UI开发方面的大牛肯定不会陌生。很高兴在不久前由他与Romain Guy合著的Filthy Rich Clients一书的中文版已经出版了^_^ (2008.06.01最后更新)
    祝大家六.一国际儿童节愉快!愿大家都能保持一颗年轻的心*_*
    特别祝地震灾区的小朋友们节日快乐,愿他们在今后的岁月中能够幸福地成长:-)

简历:Chet Haase是Adobe公司Flex SDK组的高级计算机科学家,他关注于图形问题及特性。早些时候,他工作于Sun Microsystems公司,是Desktop Java组的一名客户端软件架构师,涉及形如Java 2D,Swing,AWT和部署这样的客户端技术。他与Romain Guy一起是Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java Applications一书的合著者。在2008 JavaOne大会中,他和Guy有一个关于Filthy Rich Client的议题。

Q:若干月前,你出版了Filthy Rich Clients一书。关于它,开发者们应该知道些什么?
A:有四点:第一,它涉及的特性丰富的功能,能帮助开发者创造更好的应用和更好的用户体验。第二,它有许多关于Swing和Java 2D的内幕,以便开发者不仅能理解我们写的功能,还能理解这些技术本身,他们就能使用这些技术去写出他们自己的功能了。第三,它是一本有趣的读物,至少我们努力去做到这一点。最后,在本书的站点上,可获取所有的示例和工具类库,包括源代码。

Q:在Sun的Java Client组工作了8年之后,你在2008年的1月份离开了,并加入了Adobe。告诉我们你所从事的工作。
A:我加入Flex组,从事与图形有关的工作--这没什么奇怪的。在目前为止,我主要专注于相关的平台:Flex,Flash,AIR,MXML,ActionScript3。对于某个在过去8年多的时间中一直从事于Java方面工作的人来说,有很多东西需要学习。同时,在全组为下一版的发布而对某些组件进行重新构架的工作中,我已在帮忙了。开始时,我关注动画方面。

Q:周三下午5点,在Metreon,有一个Adobe的活动。到时你会与James Ward有一个简短的演讲。告诉我们关于它的一些情况。
A:那会很有趣。James Ward将给出Flex平台的一个简介,包含如何编写与Java后台交互的Flex客户端程序。而我--也可能是我的合著者Romain Guy--将展示一些"Filthy Rich" Flex应用示例。这些示例关于如何使用Flex去实现我们在书中谈到的功能。使用Flex去实现的方法会不同,但你可以使用该平台去达到非常相似的功能。任何感兴趣的人都应去Adobe的展台,然后获取一份邀请。

Q:是什么吸引你去开发图形软件?
A:我喜欢从我的程序中得到可视化的反馈。当它正常工作时,你可以在屏幕中看到结果。当它坏掉了,你也能看到它在屏幕中不正常的样子。与调试某些隐蔽的数据库事务相比,这更能让我满足。还有,图形能够将我的数学背景结合到我的软件背景中。计算机图形学使用了从线性代数到三角函数到几何学再到微积分学的许多技术。使用数学在屏幕上显示美妙的图片,与我所处的数学领域能做的多数事情相比,这更加有趣。

Q:对于那些想以做图形软件作为职业的人,你有什么建议?
A:应用你所需要的数学课程。并不需要高级的知识,但以我已做过的很多软件来看,我着重学习了线性代数,及其一定的微积分学。

Q:对于新接触Java程序设计语言的程序员,你会给出什么建议?
A:不使用行号。不要把你的整个应用放在一个方法中。相信垃圾收集器能做好它的本职工作。

Q:哪种产业已经准备开始大规模履行在Web服务方面的承诺?
A:摔跤。当WWF(世界摔跤联合会)在万维网(World Wilde Web)上使用Web服务时,网络别名就将是wwwwwfws。

Q:能描述一下你写代码的过程吗?
A:我会试着在脑海中收集素材,可能会将一些不成熟的想法写在小纸片上,这样我之后就不用再去找了。这一机制中的某些观念将来会用得上。然后我开始写原型。
我在一些书中看过一种理想化的方法,你将整个系统--API,或随便什么--以简短方法和注释的形式进行描述,然后你所要做的就是填充细节。也许真的有人用这种方法写代码,但我尚未遇到。
很多软件是研究性项目,在那里并不清楚什么是可能的或需要做的细节是怎样的。所以当我快要知道我想达到的什么时,我会开始写一些代码以找出接下来要做的工作以及如何去做。

Q:你创造的最让你感自豪的代码是什么?
A:Timing Framework。这个类库增补了一项我在Java SE中见到的空白--Java SE缺乏有用的定时-动画特性。然后基于我们自己的或其他人给我们的需求,Timing Frame有机地发展起来。
我也对Filthy Rich Clients中的所有代码感到十分自豪。这些代码示例意在向人们展示如何去完成一些特定的任务,但像简单执行的代码一样,作为教程而写成的这些代码也便于教学。

Q:下一次大的技术革命是什么?
A:香蕉电话。水果兼具通信元件与营养小吃的功能。

Q:在此之前的五年内,你认为最重要的Java API是什么?
A:没有什么比System.out.println更有用的了?

Q:你能给我们一个优美代码的例子吗?
A:这儿就有一个:
  10 print "fart"
  20 goto 10

Q:如果你想向Santa Claus要一个NetBeans IDE的新插件,那会是什么?
A:ActionScript3的编辑器,如何?

Q:当你感到困惑时,你会做些什么?
A:拿一支笔和一张纸,然后思考着这个问题。也会散散步,或者与某个人一起讨论这个问题,或者换一杯咖啡--也许没什么帮助,但味道不错。

Q:Java平台最近的什么变化使你的生活变得轻松些?
A:我发现J2SE 5.0的一些语言变化,像新的for循环,很有用。
我用过一些泛型以简化Timing Framwork API,虽然我知道泛型的真正好处是让用户泛型化API,而不是让开发者在他们自己的代码中使用泛型。

Q:Swing开发者需要理解的最重要的东西是...?
A:在沾手之前,先关掉食品加工器。

Q:你认为Web 2.0的最大技术障碍是什么?
A:有太多的框架用于"Web 2.0"应用。特别是在Ajax世界,很难知道从哪儿开始、继续或结束。从某种程度来看,一个开发者的脑海中只会中意最有可能流行的框架。可能更应该写作"Web Too",即,"太多的选择"。

Q:你是否是网络开发者社区的一位正式成员?
A:我并不处在某个特定的社区内,但在我关注的开发领域内,我是一位经常写作的博客。我认为拥有伟大的类库是吸引开发者群的重要组成部分。
但是向开发者们解释应该如何使用这些类库,以及使用特定的、合适的例子去展示这一点,则是另一个同等重要的部分。

Q:图形软件应该如何溶入Web 2.0的画卷中?
A:就我理解,Web 2.0是关于在浏览器中的更好、更动态的用户体验。不论你使用何种框架,这种体验都意味着丰富的图形与功能。甚至只是简单的如,动态地将购物商品拖入购物车,或使用有趣的图形技术在页面上使某个元素淡入淡出,这样的功能。

Q:你如何看待开源软件?
A:我认为开源软件很伟大,但并不是由于人们可能设想到的原因。当人们听到一个项目是开源的,他们可能猜测有一大批来自世界各个角落的人们在帮助这个项目,向其中塞入代码,并以这种松散的方式进行协作。
我见过的大多数开源项目已较少关心人人贡献了,而更多的是关心源码库的透明性以及来自开发者的广泛反馈。多数的公司和人可能更关心的是,他们能够看到黑箱中的东西,然后会建议进行适当的改进,而不会是实际地去做这些改进,也不会使自己亲自加入到项目中。
所以,就像我的Timing Framwork所获得的好处,并不是大家直接地向它提交代码,而是大家能够去看它是如何工作的,然后与我讨论怎样去改进它,以去适应他们的特定情形。
Java和Flex SDK都是开源。不论选择加入的人的水平如何,我希望它们都能从社区的参与中获益。

Q:大家知道你在博客中写有滑稽和诙谐的东西。你是否认为幽默与滑稽能保持你作为一个开发者的敏锐、自由与创意。
A:是的,就是那样。这就是我那样做的原因。
不,我这么做其实也没有什么理由。我只是喜欢博得一笑罢了。然而我也知道,如果人们都睡着了,你就不能教他们了。
所以,使一次讲演具有趣味性,与使其信息丰富一样重要。我见过十分乏味但内容很好的讲演,但一般来说,对于越活跃的讲演,大家越能记住它,也越想再听一次。
这同样适用于文章:为了使你的观点具有穿越性,如果你能使用一些有趣的比喻或词汇,就比只是在他们面前弄一些代码和方程式,更有机会使你的读者们继续看下去。

Q:能与我们分享两个你最喜欢的奇客[1]笑话或故事吗?
A:我不能保证他们是我最喜欢的或是最好笑的,但至少它们都很新--在本周才把它们帖到我的博客中--也很奇客:
  What do you call it when a chip manufacturer loses money?
  A cash miss.

  What do you call someone that has to use a dull web application?
  Bored to tiers.[2]
译注
[1]奇客,Geek,指性格奔放甚至怪僻,擅长计算机的人。
[2]由于对这两则笑话的"本质"尚未领悟,所以暂不翻译。

请关注上一篇译文:Rock Star 2008 -- Joshua Bloch

你可能感兴趣的:(Rock Star 2008 -- Chet Haase)