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