讓我們開(kāi)始吧,您現(xiàn)在在哪個(gè)部門(mén)工作呢?您目前在Sun公司所做的工作是什么呢?
James Gosling說(shuō):我們一直努力嘗試著使人們能夠更好的相互協(xié)作。我們注意到了分組——在某種程度上說(shuō),分組也是一種隔離。我們一直致力于使那些從事Java SE和NetBeans開(kāi)發(fā)的程序人員能夠更好的相互協(xié)作。在過(guò)去的兩年內(nèi),我們的努力已經(jīng)使這一狀況有了很大的改善。
有些Java程序員非常推崇Ruby on Rails,而且,他們爭(zhēng)辯說(shuō)Ruby的強(qiáng)項(xiàng)在于,相對(duì)團(tuán)隊(duì)開(kāi)發(fā)而言,它能夠更好的支持個(gè)人獨(dú)立開(kāi)發(fā)。您認(rèn)為,團(tuán)隊(duì)開(kāi)發(fā)優(yōu)于獨(dú)立開(kāi)發(fā)呢,還是相反?
Gosling說(shuō):哦,一個(gè)單獨(dú)的開(kāi)發(fā)人員恐怕無(wú)法很好地把握。最初的時(shí)候,確實(shí)也有單獨(dú)的程序員獨(dú)立開(kāi)發(fā)Java。在Java剛剛出現(xiàn)的前四年,只有我一個(gè)人獨(dú)自工作。然后,Java越來(lái)越流行,無(wú)限的需求使Java變得非?;?。大約就在那個(gè)時(shí)期,我患了非常嚴(yán)重的腕管綜合癥,有三四年我完全不能打字,但是,這并沒(méi)有阻止Java的迅速發(fā)展。就在那時(shí),Java的使用迅速發(fā)展,人們使用Java的“天賦”不斷增加。那些把大部分精力放在Java上的開(kāi)發(fā)人員都是真正的聰明人,而這些人的隊(duì)伍是非常龐大的。人們不斷地使用Java,它的發(fā)展相當(dāng)驚人。
那么,可以這么說(shuō),相對(duì)于您是世界上唯一的Java程序員這個(gè)時(shí)期,當(dāng)您身處Java 社團(tuán)組織中時(shí),您感到更加舒服,是么?
Gosling說(shuō):都有一點(diǎn)吧。我要自己完成所有這些事情是完全不可能的。在Java的世界中,有太多相當(dāng)棒的內(nèi)容。這么說(shuō)吧,當(dāng)你獨(dú)自使用Java時(shí),你完全能夠在10分鐘內(nèi)做出大范圍的改動(dòng),以及相當(dāng)有影響力的決策。但是,如果你已經(jīng)擁有了很多用戶,那么,無(wú)論怎么樣,你都不會(huì)很快的做出改動(dòng)或者決策。這個(gè)時(shí)候,你已經(jīng)變得極其小心了。我的意思是,你有能力做出非常大的改動(dòng),然后再?gòu)念^開(kāi)始,但是,一旦你擁有了用戶基礎(chǔ),你就必須真正地尊重他們。另外,我當(dāng)然不是世界上最聰明的人,有很多領(lǐng)域我從未涉及,所以,我并不是一個(gè)全能專家。有那么一兩個(gè)領(lǐng)域,我能夠確切地了解,我在這個(gè)領(lǐng)域中所做的工作是什么,但是,我認(rèn)為能夠激勵(lì)其他人并使他們發(fā)揮主動(dòng)性,這才具有極大的價(jià)值。對(duì)我而言,我需要了解開(kāi)源環(huán)境真正棒的地方。不是許可證和源代碼,而是社會(huì)經(jīng)驗(yàn)。
與如此多的開(kāi)發(fā)人員和決策者一起工作,你是否感覺(jué)到了威脅?您設(shè)計(jì)一個(gè)解決方案,但是委員會(huì)提出更好的。
Gosling說(shuō):嗯,團(tuán)隊(duì)做得更好,這并沒(méi)有給我?guī)?lái)太多的擔(dān)心,但是,如果他們?cè)斐鲎龇ㄗ詳赖墓治铩皇前迅鞣N不同的模塊勉強(qiáng)組合在一起,而它們之間相互沒(méi)有任何關(guān)系。我一直擔(dān)心這種情況的發(fā)生。技術(shù)的樂(lè)趣在于它確實(shí)需要加快發(fā)展,深入到各個(gè)領(lǐng)域。因此,我們投入大量的精力,放在組織這些域上,使它們相互不受影響,因此,這些域都被適當(dāng)?shù)卮虬_@正是面向?qū)ο蠹夹g(shù)的耀眼之處。包、類,以及幫助我們組織代碼的東西,正因?yàn)橛羞@些,與Web服務(wù)相關(guān)的代碼才能夠獨(dú)立于業(yè)務(wù)相關(guān)的代碼,如現(xiàn)金登記。這些模塊之間不再需要進(jìn)行交互,因?yàn)槊總€(gè)模塊都整合的很好。這是相當(dāng)平衡的藝術(shù)品。
說(shuō)到開(kāi)放源代碼,Sun公司開(kāi)放了所有的Java源代碼,您對(duì)這一做法有何見(jiàn)解呢?
Gosling說(shuō):嗯,我對(duì)Sun公司的這一做法感到非常自豪。我非常高興,我們公司最終做到了這一點(diǎn)。在公司內(nèi)部,這種做法已經(jīng)爭(zhēng)論了很久,而且仍然還存在著許多大問(wèn)題。但是,我們致力于開(kāi)放源代碼,只要條件成熟,我們立即就會(huì)將源代碼開(kāi)放。您是在前Web時(shí)代開(kāi)始使用Java的么,那時(shí)公司內(nèi)部仍然主要使用以太網(wǎng)?
Gosling說(shuō):是的,但也不完全是。Java是在Web存在之前產(chǎn)生的。但是,我們所做的每一件事都是圍繞著互聯(lián)網(wǎng)技術(shù)的。網(wǎng)絡(luò)技術(shù)和互聯(lián)網(wǎng)深深影響著Java中的每一個(gè)細(xì)節(jié)。你已經(jīng)對(duì)公司內(nèi)部的網(wǎng)絡(luò)做過(guò)評(píng)論了。那時(shí),我們?cè)跇?gòu)建Java——并且花了幾十年的時(shí)間來(lái)解決。30年前,互聯(lián)網(wǎng)就已經(jīng)橫跨了我們的地球。當(dāng)然,30年前的互聯(lián)網(wǎng)還稱為ARPANET。但是,傳輸主要是基于某一種協(xié)議的。所有的從事Java的開(kāi)發(fā)人員所做的工作都是關(guān)于網(wǎng)絡(luò)的。當(dāng)Tim Berners-Lee提出HTTP協(xié)議和HTML文件格式時(shí),第一個(gè)Web瀏覽器誕生了,這就是人們現(xiàn)在通常所談?wù)摰腤eb。Java出現(xiàn)之后,沒(méi)過(guò)多久Web技術(shù)就出現(xiàn)了,因此,可以這么說(shuō),當(dāng)Java技術(shù)最終敲定之后,當(dāng)我們發(fā)布了Java第一個(gè)版本之后,Web技術(shù)才出現(xiàn)。因此,所有的Web技術(shù)所需要的基礎(chǔ)都已經(jīng)是存在的了。
您是在前Web時(shí)代開(kāi)始使用Java的么,那時(shí)公司內(nèi)部仍然主要使用以太網(wǎng)?
Gosling說(shuō):是的,但也不完全是。Java是在Web存在之前產(chǎn)生的。但是,我們所做的每一件事都是圍繞著互聯(lián)網(wǎng)技術(shù)的。網(wǎng)絡(luò)技術(shù)和互聯(lián)網(wǎng)深深影響著Java中的每一個(gè)細(xì)節(jié)。你已經(jīng)對(duì)公司內(nèi)部的網(wǎng)絡(luò)做過(guò)評(píng)論了。那時(shí),我們?cè)跇?gòu)建Java——并且花了幾十年的時(shí)間來(lái)解決。30年前,互聯(lián)網(wǎng)就已經(jīng)橫跨了我們的地球。當(dāng)然,30年前的互聯(lián)網(wǎng)還稱為ARPANET。但是,傳輸主要是基于某一種協(xié)議的。所有的從事Java的開(kāi)發(fā)人員所做的工作都是關(guān)于網(wǎng)絡(luò)的。當(dāng)Tim Berners-Lee提出HTTP協(xié)議和HTML文件格式時(shí),第一個(gè)Web瀏覽器誕生了,這就是人們現(xiàn)在通常所談?wù)摰腤eb。Java出現(xiàn)之后,沒(méi)過(guò)多久Web技術(shù)就出現(xiàn)了,因此,可以這么說(shuō),當(dāng)Java技術(shù)最終敲定之后,當(dāng)我們發(fā)布了Java第一個(gè)版本之后,Web技術(shù)才出現(xiàn)。因此,所有的Web技術(shù)所需要的基礎(chǔ)都已經(jīng)是存在的了。
最初,您是否想象過(guò),到今天,在應(yīng)用程序開(kāi)發(fā)領(lǐng)域中, Web服務(wù)將會(huì)發(fā)展成什么樣子呢?
Gosling說(shuō):我不的不承認(rèn)我曾經(jīng)想象過(guò):有一天清晨,我睜開(kāi)眼,然后這個(gè)版本的Web服務(wù)就出現(xiàn)了。實(shí)際上,Web服務(wù)不僅僅是我所假想的。因?yàn)?,在二、三十年之前,網(wǎng)絡(luò)還只是作為服務(wù)的集合,其結(jié)構(gòu)的架構(gòu)理念就已經(jīng)相當(dāng)?shù)凝嫶罅?。而且,它確實(shí)是互聯(lián)網(wǎng)曾經(jīng)的真實(shí)寫(xiě)照——一個(gè)互相通信的服務(wù)的集合。使用哪種協(xié)議,使用的是HTTP上的XML還是CORBA上的,以及一些其它技術(shù),這些都已經(jīng)不重要了。這些技術(shù)只相當(dāng)于你拼寫(xiě)單詞的方式,而文章才真正是基礎(chǔ)理論的一部分。
用于SOA和Web服務(wù)應(yīng)用程序的語(yǔ)言的復(fù)雜性,有可能簡(jiǎn)化么?或者繼續(xù)增加復(fù)雜性?
Gosling說(shuō):復(fù)雜性確實(shí)是非常難以回答的話題。因?yàn)?,這樣說(shuō)吧,如果你到Santa Cruz海灘,那里有一種叫做打鼴鼠的游戲。鼴鼠,正是一種動(dòng)物的名字。打鼴鼠這個(gè)游戲是這樣玩的:有一塊木板,上面有一個(gè)3乘3的表格,每個(gè)表格代表鼴鼠的洞,不斷地會(huì)有鼴鼠從不同的洞中探出自己的頭,你要做的就是,拿著棒球球棒站在那,在鼴鼠把頭縮回洞之前,瞄準(zhǔn)并打擊它。然后,鼴鼠會(huì)突然從其它洞里冒出來(lái),你必須不停地把它擊倒。許多工程,尤其是那些與復(fù)雜性相關(guān)的工程,就像是打鼴鼠這個(gè)游戲。你可以暫時(shí)實(shí)現(xiàn)難以置信的簡(jiǎn)單化,但是,不久的將來(lái),復(fù)雜性就會(huì)不斷地從不同的地方冒出來(lái),因?yàn)椋?dāng)人們不斷嘗試使用工程時(shí),他們可能會(huì)發(fā)現(xiàn),在語(yǔ)言或者是API中,根本無(wú)法找到解決工程中所遇到問(wèn)題的方案。
基本上,由于一系列不可避免的、人們?cè)噲D支持的操作,我們所面臨的復(fù)雜性越來(lái)越多。如果你只是考慮手機(jī)或者Web頁(yè)面的話,那么,當(dāng)你站在長(zhǎng)城上,另外一個(gè)人正乘坐從Monterey到Salinas的公交車,你們兩個(gè)人使用手機(jī)打電話,這個(gè)該如何解決?而且,還要解決公交車在行使的狀況。哦,順便提一下,長(zhǎng)城離北京很遠(yuǎn)呢。我確實(shí)嘗試過(guò)這樣做,我女兒正在參加會(huì)議的途中,而我在工作中,我們之間在進(jìn)行通話。如果,你認(rèn)為所有的員工都正準(zhǔn)備這樣做的話,那么,復(fù)雜性是絕對(duì)無(wú)法避免的。
很多人提出簡(jiǎn)化生活這一解決方案,但是,實(shí)際上,他們所做的是把復(fù)雜性轉(zhuǎn)移到了其它地方。真正的困難不是使任何特定的技術(shù)更為簡(jiǎn)單,也不是使特定的API更加簡(jiǎn)單,而是完全立足于系統(tǒng)之外,來(lái)考慮如何把整個(gè)系統(tǒng)改造的更加簡(jiǎn)單。你肯定不希望出現(xiàn)這種現(xiàn)象:當(dāng)你僥幸地把簡(jiǎn)化了某一部分,然后,你發(fā)現(xiàn)這樣做的后果是,導(dǎo)致在其它地方出現(xiàn)新的復(fù)雜性。沒(méi)問(wèn)題,我們能夠倒退回男耕女織這樣的社會(huì)形態(tài),生活得相當(dāng)簡(jiǎn)單。但是,我認(rèn)為沒(méi)有人會(huì)希望倒退。
架構(gòu)師的工作是觀察整個(gè)系統(tǒng),然后檢驗(yàn)一下系統(tǒng)是否還能再做簡(jiǎn)化,您同意這個(gè)觀點(diǎn)么?
Gosling說(shuō):你說(shuō)的這些任務(wù)當(dāng)然是架構(gòu)師應(yīng)該做的。這些任務(wù)其實(shí)是非常困難的,因?yàn)椋阃耆梢栽诠局姓业铰毼粸榧軜?gòu)師的人員。但是,他們與實(shí)際細(xì)節(jié)如此脫離,以至于他們所做的架構(gòu)決策完全沒(méi)有意義。因?yàn)?,?dāng)你深入研究如何實(shí)現(xiàn)這個(gè)決策時(shí),你才會(huì)發(fā)現(xiàn),這個(gè)架構(gòu)決策完完全全沒(méi)有考慮技術(shù)因素。架構(gòu)師的工作確實(shí)非常困難,而且有很強(qiáng)的挑戰(zhàn)性——既要有很深厚的專業(yè)知識(shí)技能,確保能夠做出可信的架構(gòu)決策,另一方面,還要有非常寬泛的知識(shí)背景,以便能夠跨越各種不同的技術(shù)領(lǐng)域。而且,為一個(gè)大規(guī)模系統(tǒng)做架構(gòu),這種困難是難以置信的。
架構(gòu)師既需要懂得底層的知識(shí),也要懂得業(yè)務(wù)流程層面的知識(shí),您這樣認(rèn)為么?
Gosling說(shuō):我同意這個(gè)觀點(diǎn),但是,如果你這樣認(rèn)為——當(dāng)你真正努力來(lái)構(gòu)建系統(tǒng)時(shí),你就不需要了解底層細(xì)節(jié)了,那么,有句諺語(yǔ)可以描述:這就是困難之所在。(責(zé)編:SELINA)
{{item.content}}