自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Groovy Eclipse開(kāi)發(fā)團(tuán)隊(duì)訪談:不要畏懼內(nèi)部API

開(kāi)發(fā) 開(kāi)發(fā)工具
Groovy Eclipse插件的目的在于更好的將Groovy語(yǔ)言與Eclipse結(jié)合。本次訪談的對(duì)象是Groovy Eclipse的兩個(gè)開(kāi)發(fā)者,他們介紹了開(kāi)發(fā)過(guò)程中的一些心得經(jīng)驗(yàn)。

Andrew Eisenberg曾是英屬哥倫比亞大學(xué)的一名PhD開(kāi)發(fā)人員,后來(lái)工作于SpringSource團(tuán)隊(duì),并從事Groovy Eclipse工具支持方面的工作。他的主要開(kāi)發(fā)理念是:通過(guò)與正確的IDE交互,將更具表達(dá)力。

Andy Clement則是SpringSource的高級(jí)軟件工程師,他做許多與開(kāi)發(fā)工具有關(guān)的工作( Groovy,AspectJ、Tasktop以及SpringSource工具套件)。過(guò)去的幾年里Clement一直在領(lǐng)導(dǎo)AspectJ Eclipse項(xiàng)目。他還在Spring Framework 3 中創(chuàng)建了Spring Expression Language支持并為SpringSource dm Server寫(xiě)了不少代碼。

作為Groovy Eclipse v2的開(kāi)發(fā)者,Dzone對(duì)兩人進(jìn)行了專(zhuān)訪。

Dzone:你們剛剛宣布了Groovy Eclipse v2插件的alpha版本,Groovy / Eclipse社區(qū)對(duì)Groovy與Eclipse的更好結(jié)合期待已久,在這次的發(fā)布的版本中,有哪些特性值得他們的期待?

Andrew:對(duì)于這個(gè)Alpha版本,我們的目標(biāo)是:在Groovy與所有開(kāi)發(fā)者期待的Java工具的特性中,能夠支持基本的編輯-保存-編譯-運(yùn)行周期。盡管如此,這還只是一個(gè)alpha版本,雖然它包含最終版本中的大部分主要功能,但仍會(huì)有很多新增、性能調(diào)試和測(cè)試

Andy:我們從AspectJ和它的工具支持學(xué)到了很多。這個(gè)問(wèn)題不在于你的語(yǔ)言有多聰明,而在于IDE的功能,如果IDE中沒(méi)有漸進(jìn)式編譯、代碼協(xié)助和導(dǎo)航,那么依然影響應(yīng)用的編寫(xiě)。這個(gè)Alpha版本也是支持另一種語(yǔ)言直接進(jìn)入Eclipse JDT的標(biāo)志性版本。

Dzone:你是如何進(jìn)入Eclipse插件開(kāi)發(fā)領(lǐng)域的?

Andrew:早在我做PhD時(shí),我就有了擴(kuò)展型編輯器的想法。像Groovy這樣的語(yǔ)言可以通過(guò)使用元程序來(lái)擴(kuò)展語(yǔ)言,當(dāng)時(shí)我就在想能否通過(guò)元程序來(lái)擴(kuò)展編輯器。盡管我可以找到一些頭緒,然而我還是沒(méi)能真的找到可用的擴(kuò)展編輯器,這與JDT的局限性有關(guān)。JDT是高度優(yōu)化和優(yōu)秀結(jié)構(gòu)的框架,用來(lái)構(gòu)建Java語(yǔ)言的工具,而不是用來(lái)擴(kuò)展或者支持其他JVM語(yǔ)言。

畢業(yè)后我就業(yè)于SpringSource,剛好解決的是AJDT(AspectJ Development Tools)問(wèn)題,在此期間我們?cè)庥龅狡款i,因?yàn)閷spectJ模型集成到JDT的Java模型中非常困難,這主要是因?yàn)镴DT缺乏對(duì)新編程元素的支持。***我們?cè)贓clispe上使用AspectJ來(lái)讓JKT更具擴(kuò)展性。

不久之后,我被邀請(qǐng)到參與Groovy-Eclipse支持的開(kāi)發(fā)。最初我認(rèn)為同樣的方法可行(即使用AspectJ來(lái)讓Eclispe更加兼容Groovy),結(jié)果發(fā)現(xiàn)每種語(yǔ)言都不同而且相應(yīng)的開(kāi)發(fā)工具也不同。由于JDT要求的擴(kuò)展類(lèi)型不符,因而使用AspectJ來(lái)支持Groovy不可行。后來(lái)我們發(fā)現(xiàn)也許存在一種方法將Groovy編輯器與Java編輯器整合起來(lái)。

Andy:當(dāng)時(shí)我就職于IBM從事于Java支持CICS主機(jī)的支持優(yōu)化工作,想尋找一個(gè)新的工作。我的同事當(dāng)時(shí)從一個(gè)會(huì)議上回來(lái)并告訴我們一個(gè)關(guān)于新項(xiàng)目的主意,他的名字是Adrian Colyer,現(xiàn)在是SpringSource的CTO,他發(fā)現(xiàn)了一種叫做面向Aspect編程(Aspect Oriented Programming)的東西,并試圖為這種新語(yǔ)言創(chuàng)建Eclispe工具。漸漸的,我們轉(zhuǎn)向于從編輯器端尋找解決方法,可以讓更多兼容Eclispe的開(kāi)發(fā)者在UI端工作。幸虧有了AJDT項(xiàng)目,AspectJ作為一個(gè)改良過(guò)的Eclipse JDT編輯器,我從中學(xué)習(xí)到了很多。

最初我試驗(yàn)Groovy插件遇到了麻煩,于是回頭查看到底是因?yàn)槭裁?,與Jochen Theodorou討論了架構(gòu)之后,我意識(shí)到這是Eclispe支持的一個(gè)很好的方法。有時(shí)候我們會(huì)花費(fèi)很多時(shí)間來(lái)復(fù)制一大段Eclipse JDT代碼只是為了改變其中的某幾行,或者編寫(xiě)許多代碼來(lái)為AJDT中的某個(gè)特性創(chuàng)建支持,比如漸進(jìn)式編譯。通過(guò)讓Eclispe理解Groovy編輯器,可以實(shí)現(xiàn)這些功能。

Dzone:在開(kāi)發(fā)Eclispe插件的過(guò)程中有哪些可以分享給開(kāi)發(fā)者呢?

Andrew:為Eclispe開(kāi)發(fā)插件很不容易,有許多東西要學(xué)習(xí),而且似乎有數(shù)不盡的API要了解。盡管如此,如果你知道如何正確地使用這個(gè)平臺(tái),那么仍然可以創(chuàng)建強(qiáng)大的應(yīng)用。

學(xué)習(xí)Eclispe平臺(tái)***的方法之一就是閱讀它的源代碼,這些代碼寫(xiě)得很好而且標(biāo)注也很全。平臺(tái)本身就是***的客戶端,可以讓你獲悉它的API是如果運(yùn)行的。

另外一個(gè)建議是不要畏懼使用內(nèi)部API,它們通常是獲取一些未公開(kāi)的服務(wù)的唯一方法,從長(zhǎng)遠(yuǎn)來(lái)看使用它們可以讓你的代碼更加優(yōu)良。

Andy: 當(dāng)我們開(kāi)始AJDT項(xiàng)目的時(shí)候,發(fā)現(xiàn)API的數(shù)量果然很驚人,同樣我也贊同***的學(xué)習(xí)方法是閱讀一些Eclispe代碼,尤其是那些跟你從事項(xiàng)目比較相關(guān)的代碼。

Dzone:你們是怎樣開(kāi)始Groovy的開(kāi)發(fā)的?

Andrew: 與其說(shuō)我來(lái)自于Groovy,倒不如說(shuō)我來(lái)自Eclispe。對(duì)于語(yǔ)言我已經(jīng)有了好多年的了解,但是直到工作在這個(gè)Eclispe插件項(xiàng)目我才找到真正使用語(yǔ)言的機(jī)會(huì)。這真是一種很棒的語(yǔ)言:Groovy代碼像Java代碼卻又有不同之處,初學(xué)者也因此可以很快地了解Groovy,然后漸漸發(fā)現(xiàn)它更多的性能包括:腳本、AST轉(zhuǎn)換以及閉包等。

Andy:最初為了學(xué)到Groovy,我想做一些Grails上的工作。然而當(dāng)我開(kāi)始在Eclispe上從事Grails的時(shí)候,這不同于我從事Java開(kāi)發(fā)的經(jīng)歷。我太習(xí)慣于一個(gè)IDE,于是考慮到我之前的工作經(jīng)歷我想我可以從這里做點(diǎn)文章,只要IDE工作了,我就可以回到Grails。

Dzone:在開(kāi)發(fā)Groovy Eclipse v2插件的過(guò)程中***的挑戰(zhàn)是什么?

Andrew:回想起來(lái)將插件的UI組件移植到新的編輯器是個(gè)很恐怖的事情。最初的插件使用一種Java模型的復(fù)制品來(lái)表現(xiàn)Groovy代碼,我必須找出這些部分然后使用一個(gè)真正的Java模型取代它。當(dāng)然這也帶來(lái)了不少優(yōu)點(diǎn):***,可以為Groovy程序組件做Java掃描,由于我移除了原來(lái)代碼中許多不相干的部分,所以新的代碼更簡(jiǎn)短了。

在開(kāi)發(fā)中,可能我花費(fèi)時(shí)間最多的是創(chuàng)建可以生成升級(jí)網(wǎng)址的headless構(gòu)建腳本,這是一個(gè)很枯燥的任務(wù),需要自展新的編輯器來(lái)構(gòu)建自己。直到現(xiàn)在,我仍在花費(fèi)大量的時(shí)間來(lái)調(diào)試構(gòu)建腳本以產(chǎn)生***的結(jié)果。

在此我也有個(gè)建議:如果要為Eclispe構(gòu)建插件,使用其他平臺(tái)來(lái)編寫(xiě)構(gòu)建腳本。

Andy: 迄今為止我只接手了一項(xiàng)任務(wù),而且這項(xiàng)任務(wù)特別有挑戰(zhàn)性:集成兩個(gè)完全不同的編輯器代碼基,同時(shí)還要確保漸進(jìn)式編譯功能正常運(yùn)行。這項(xiàng)任務(wù)需要在正式開(kāi)始工作前做許多編程工作,這非常讓人不爽。

***次我使用原型,一直到開(kāi)始構(gòu)建Grails的時(shí)候發(fā)現(xiàn)很多困難,難以繼續(xù)開(kāi)發(fā)下去,所以我徹底放棄了這個(gè)方法,重寫(xiě)代碼。幸運(yùn)的是,除了JDT編輯器,我還可以使用JDT測(cè)試插件并且用Groovy支持?jǐn)U展它們,所以重寫(xiě)代碼我使用的是TDD方法。

Dzone:能否透露一下下一個(gè)版本的一些情況?

Andrew:你指的是V2的最終版吧?目前而言,主要的特性已經(jīng)應(yīng)用到了alpha版本中:漸進(jìn)式編譯、代碼瀏覽、內(nèi)容輔助(content assist)等。然而其中的某些特性尤其是代碼瀏覽和內(nèi)容輔助仍處于優(yōu)化過(guò)程中。

除了這些主要的特性,我們還希望能夠引進(jìn)其他編輯器的特性,如快速檢錯(cuò)、以及AST轉(zhuǎn)換的編輯器支持、一個(gè)功能更加完善的Groovy控制面板,也許還會(huì)加入一些Grails支持。

Andy: 從開(kāi)發(fā)編輯器的角度來(lái)看,接下來(lái)到發(fā)布v2最終版的幾個(gè)月里,主要的工作是細(xì)節(jié)上的進(jìn)一步完善?;旧纤缘墓δ芤呀?jīng)在alpha版本里了,我們要做的就是確定它們?cè)谧罱K版里可用而且流暢,還要做的工作包括性能提升、存儲(chǔ)使用等。

【編輯推薦】

  1. Groovy使Spring更出色
  2. 在Groovy中編寫(xiě)正則表達(dá)式
  3. 在Groovy中使用字符串
  4. Groovy腳本文件中的靜態(tài)main方法
  5. 用Groovy編寫(xiě)Google App Engine應(yīng)用
責(zé)任編輯:yangsai 來(lái)源: CSDN
相關(guān)推薦

2011-07-07 11:02:46

丁香園用藥助手iPhone 4

2009-08-07 10:27:45

Eclipse和Net

2021-06-07 08:00:00

開(kāi)發(fā)集成API

2009-11-23 20:07:51

ibmdw開(kāi)發(fā)

2021-11-25 13:02:09

零信任

2010-02-01 09:21:49

GroovyGoogle App Gaelyk

2022-07-28 16:50:54

安全DevOpsAPI

2013-06-13 08:57:47

Web開(kāi)發(fā)Web工具Web訪談

2009-06-03 16:06:28

Eclipse插件開(kāi)發(fā)Eclipse

2014-07-22 09:31:30

2013-04-17 10:20:27

GroovyClassLoader

2018-01-29 09:42:27

創(chuàng)業(yè)技術(shù)團(tuán)隊(duì)

2010-05-07 15:27:26

蘋(píng)果

2009-06-10 16:19:33

Eclipse開(kāi)發(fā)PH

2012-11-30 16:55:05

2014-10-11 10:20:50

程序員

2011-08-16 17:14:41

Oracle數(shù)據(jù)庫(kù)OCM

2011-09-23 09:46:09

軟件項(xiàng)目

2012-11-12 10:37:45

JavaEEJavaWebBuilder

2009-06-08 20:13:36

Eclipse自定義控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)