Rock Star 2008 -- Chet Haase
這是一篇在今年的JavaOne會(huì)議期間對(duì)Chet Haase的訪談。關(guān)注Swing,Java 2D的朋友,對(duì)這位圖形/UI開發(fā)方面的大牛肯定不會(huì)陌生。很高興在不久前由他與Romain Guy合著的Filthy Rich Clients一書的中文版已經(jīng)出版了^_^ (2008.06.01最后更新)祝大家六.一國(guó)際兒童節(jié)愉快!愿大家都能保持一顆年輕的心*_*
特別祝地震災(zāi)區(qū)的小朋友們節(jié)日快樂,愿他們?cè)诮窈蟮臍q月中能夠幸福地成長(zhǎng):-)
簡(jiǎn)歷:Chet Haase是Adobe公司Flex SDK組的高級(jí)計(jì)算機(jī)科學(xué)家,他關(guān)注于圖形問題及特性。早些時(shí)候,他工作于Sun Microsystems公司,是Desktop Java組的一名客戶端軟件架構(gòu)師,涉及形如Java 2D,Swing,AWT和部署這樣的客戶端技術(shù)。他與Romain Guy一起是Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java Applications一書的合著者。在2008 JavaOne大會(huì)中,他和Guy有一個(gè)關(guān)于Filthy Rich Client的議題。
Q:若干月前,你出版了Filthy Rich Clients一書。關(guān)于它,開發(fā)者們應(yīng)該知道些什么?
A:有四點(diǎn):第一,它涉及的特性豐富的功能,能幫助開發(fā)者創(chuàng)造更好的應(yīng)用和更好的用戶體驗(yàn)。第二,它有許多關(guān)于Swing和Java 2D的內(nèi)幕,以便開發(fā)者不僅能理解我們寫的功能,還能理解這些技術(shù)本身,他們就能使用這些技術(shù)去寫出他們自己的功能了。第三,它是一本有趣的讀物,至少我們努力去做到這一點(diǎn)。最后,在本書的站點(diǎn)上,可獲取所有的示例和工具類庫(kù),包括源代碼。
Q:在Sun的Java Client組工作了8年之后,你在2008年的1月份離開了,并加入了Adobe。告訴我們你所從事的工作。
A:我加入Flex組,從事與圖形有關(guān)的工作--這沒什么奇怪的。在目前為止,我主要專注于相關(guān)的平臺(tái):Flex,F(xiàn)lash,AIR,MXML,ActionScript3。對(duì)于某個(gè)在過去8年多的時(shí)間中一直從事于Java方面工作的人來說,有很多東西需要學(xué)習(xí)。同時(shí),在全組為下一版的發(fā)布而對(duì)某些組件進(jìn)行重新構(gòu)架的工作中,我已在幫忙了。開始時(shí),我關(guān)注動(dòng)畫方面。
Q:周三下午5點(diǎn),在Metreon,有一個(gè)Adobe的活動(dòng)。到時(shí)你會(huì)與James Ward有一個(gè)簡(jiǎn)短的演講。告訴我們關(guān)于它的一些情況。
A:那會(huì)很有趣。James Ward將給出Flex平臺(tái)的一個(gè)簡(jiǎn)介,包含如何編寫與Java后臺(tái)交互的Flex客戶端程序。而我--也可能是我的合著者Romain Guy--將展示一些"Filthy Rich" Flex應(yīng)用示例。這些示例關(guān)于如何使用Flex去實(shí)現(xiàn)我們?cè)跁姓劦降墓δ堋J褂肍lex去實(shí)現(xiàn)的方法會(huì)不同,但你可以使用該平臺(tái)去達(dá)到非常相似的功能。任何感興趣的人都應(yīng)去Adobe的展臺(tái),然后獲取一份邀請(qǐng)。
Q:是什么吸引你去開發(fā)圖形軟件?
A:我喜歡從我的程序中得到可視化的反饋。當(dāng)它正常工作時(shí),你可以在屏幕中看到結(jié)果。當(dāng)它壞掉了,你也能看到它在屏幕中不正常的樣子。與調(diào)試某些隱蔽的數(shù)據(jù)庫(kù)事務(wù)相比,這更能讓我滿足。還有,圖形能夠?qū)⑽业臄?shù)學(xué)背景結(jié)合到我的軟件背景中。計(jì)算機(jī)圖形學(xué)使用了從線性代數(shù)到三角函數(shù)到幾何學(xué)再到微積分學(xué)的許多技術(shù)。使用數(shù)學(xué)在屏幕上顯示美妙的圖片,與我所處的數(shù)學(xué)領(lǐng)域能做的多數(shù)事情相比,這更加有趣。
Q:對(duì)于那些想以做圖形軟件作為職業(yè)的人,你有什么建議?
A:應(yīng)用你所需要的數(shù)學(xué)課程。并不需要高級(jí)的知識(shí),但以我已做過的很多軟件來看,我著重學(xué)習(xí)了線性代數(shù),及其一定的微積分學(xué)。
Q:對(duì)于新接觸Java程序設(shè)計(jì)語(yǔ)言的程序員,你會(huì)給出什么建議?
A:不使用行號(hào)。不要把你的整個(gè)應(yīng)用放在一個(gè)方法中。相信垃圾收集器能做好它的本職工作。
Q:哪種產(chǎn)業(yè)已經(jīng)準(zhǔn)備開始大規(guī)模履行在Web服務(wù)方面的承諾?
A:摔跤。當(dāng)WWF(世界摔跤聯(lián)合會(huì))在萬維網(wǎng)(World Wilde Web)上使用Web服務(wù)時(shí),網(wǎng)絡(luò)別名就將是wwwwwfws。
Q:能描述一下你寫代碼的過程嗎?
A:我會(huì)試著在腦海中收集素材,可能會(huì)將一些不成熟的想法寫在小紙片上,這樣我之后就不用再去找了。這一機(jī)制中的某些觀念將來會(huì)用得上。然后我開始寫原型。
我在一些書中看過一種理想化的方法,你將整個(gè)系統(tǒng)--API,或隨便什么--以簡(jiǎn)短方法和注釋的形式進(jìn)行描述,然后你所要做的就是填充細(xì)節(jié)。也許真的有人用這種方法寫代碼,但我尚未遇到。
很多軟件是研究性項(xiàng)目,在那里并不清楚什么是可能的或需要做的細(xì)節(jié)是怎樣的。所以當(dāng)我快要知道我想達(dá)到的什么時(shí),我會(huì)開始寫一些代碼以找出接下來要做的工作以及如何去做。
Q:你創(chuàng)造的最讓你感自豪的代碼是什么?
A:Timing Framework。這個(gè)類庫(kù)增補(bǔ)了一項(xiàng)我在Java SE中見到的空白--Java SE缺乏有用的定時(shí)-動(dòng)畫特性。然后基于我們自己的或其他人給我們的需求,Timing Frame有機(jī)地發(fā)展起來。
我也對(duì)Filthy Rich Clients中的所有代碼感到十分自豪。這些代碼示例意在向人們展示如何去完成一些特定的任務(wù),但像簡(jiǎn)單執(zhí)行的代碼一樣,作為教程而寫成的這些代碼也便于教學(xué)。
Q:下一次大的技術(shù)革命是什么?
A:香蕉電話。水果兼具通信元件與營(yíng)養(yǎng)小吃的功能。
Q:在此之前的五年內(nèi),你認(rèn)為最重要的Java API是什么?
A:沒有什么比System.out.println更有用的了?
Q:你能給我們一個(gè)優(yōu)美代碼的例子嗎?
A:這兒就有一個(gè):
10 print "fart"
20 goto 10
Q:如果你想向Santa Claus要一個(gè)NetBeans IDE的新插件,那會(huì)是什么?
A:ActionScript3的編輯器,如何?
Q:當(dāng)你感到困惑時(shí),你會(huì)做些什么?
A:拿一支筆和一張紙,然后思考著這個(gè)問題。也會(huì)散散步,或者與某個(gè)人一起討論這個(gè)問題,或者換一杯咖啡--也許沒什么幫助,但味道不錯(cuò)。
Q:Java平臺(tái)最近的什么變化使你的生活變得輕松些?
A:我發(fā)現(xiàn)J2SE 5.0的一些語(yǔ)言變化,像新的for循環(huán),很有用。
我用過一些泛型以簡(jiǎn)化Timing Framwork API,雖然我知道泛型的真正好處是讓用戶泛型化API,而不是讓開發(fā)者在他們自己的代碼中使用泛型。
Q:Swing開發(fā)者需要理解的最重要的東西是...?
A:在沾手之前,先關(guān)掉食品加工器。
Q:你認(rèn)為Web 2.0的最大技術(shù)障礙是什么?
A:有太多的框架用于"Web 2.0"應(yīng)用。特別是在Ajax世界,很難知道從哪兒開始、繼續(xù)或結(jié)束。從某種程度來看,一個(gè)開發(fā)者的腦海中只會(huì)中意最有可能流行的框架。可能更應(yīng)該寫作"Web Too",即,"太多的選擇"。
Q:你是否是網(wǎng)絡(luò)開發(fā)者社區(qū)的一位正式成員?
A:我并不處在某個(gè)特定的社區(qū)內(nèi),但在我關(guān)注的開發(fā)領(lǐng)域內(nèi),我是一位經(jīng)常寫作的博客。我認(rèn)為擁有偉大的類庫(kù)是吸引開發(fā)者群的重要組成部分。
但是向開發(fā)者們解釋應(yīng)該如何使用這些類庫(kù),以及使用特定的、合適的例子去展示這一點(diǎn),則是另一個(gè)同等重要的部分。
Q:圖形軟件應(yīng)該如何溶入Web 2.0的畫卷中?
A:就我理解,Web 2.0是關(guān)于在瀏覽器中的更好、更動(dòng)態(tài)的用戶體驗(yàn)。不論你使用何種框架,這種體驗(yàn)都意味著豐富的圖形與功能。甚至只是簡(jiǎn)單的如,動(dòng)態(tài)地將購(gòu)物商品拖入購(gòu)物車,或使用有趣的圖形技術(shù)在頁(yè)面上使某個(gè)元素淡入淡出,這樣的功能。
Q:你如何看待開源軟件?
A:我認(rèn)為開源軟件很偉大,但并不是由于人們可能設(shè)想到的原因。當(dāng)人們聽到一個(gè)項(xiàng)目是開源的,他們可能猜測(cè)有一大批來自世界各個(gè)角落的人們?cè)趲椭@個(gè)項(xiàng)目,向其中塞入代碼,并以這種松散的方式進(jìn)行協(xié)作。
我見過的大多數(shù)開源項(xiàng)目已較少關(guān)心人人貢獻(xiàn)了,而更多的是關(guān)心源碼庫(kù)的透明性以及來自開發(fā)者的廣泛反饋。多數(shù)的公司和人可能更關(guān)心的是,他們能夠看到黑箱中的東西,然后會(huì)建議進(jìn)行適當(dāng)?shù)母倪M(jìn),而不會(huì)是實(shí)際地去做這些改進(jìn),也不會(huì)使自己親自加入到項(xiàng)目中。
所以,就像我的Timing Framwork所獲得的好處,并不是大家直接地向它提交代碼,而是大家能夠去看它是如何工作的,然后與我討論怎樣去改進(jìn)它,以去適應(yīng)他們的特定情形。
Java和Flex SDK都是開源。不論選擇加入的人的水平如何,我希望它們都能從社區(qū)的參與中獲益。
Q:大家知道你在博客中寫有滑稽和詼諧的東西。你是否認(rèn)為幽默與滑稽能保持你作為一個(gè)開發(fā)者的敏銳、自由與創(chuàng)意。
A:是的,就是那樣。這就是我那樣做的原因。
不,我這么做其實(shí)也沒有什么理由。我只是喜歡博得一笑罷了。然而我也知道,如果人們都睡著了,你就不能教他們了。
所以,使一次講演具有趣味性,與使其信息豐富一樣重要。我見過十分乏味但內(nèi)容很好的講演,但一般來說,對(duì)于越活躍的講演,大家越能記住它,也越想再聽一次。
這同樣適用于文章:為了使你的觀點(diǎn)具有穿越性,如果你能使用一些有趣的比喻或詞匯,就比只是在他們面前弄一些代碼和方程式,更有機(jī)會(huì)使你的讀者們繼續(xù)看下去。
Q:能與我們分享兩個(gè)你最喜歡的奇客[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,指性格奔放甚至怪僻,擅長(zhǎng)計(jì)算機(jī)的人。
[2]由于對(duì)這兩則笑話的"本質(zhì)"尚未領(lǐng)悟,所以暫不翻譯。
請(qǐng)關(guān)注上一篇譯文:Rock Star 2008 -- Joshua Bloch
posted on 2008-06-01 21:02 John Jiang 閱讀(2638) 評(píng)論(0) 編輯 收藏 所屬分類: Others 、Java 、OpenWorld/JavaOne/SunTechDays 、翻譯