成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

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

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

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

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

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

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

畢業(yè)后我就業(yè)于SpringSource,剛好解決的是AJDT(AspectJ Development Tools)問題,在此期間我們遭遇到瓶頸,因為將AspectJ模型集成到JDT的Java模型中非常困難,這主要是因為JDT缺乏對新編程元素的支持。***我們在Eclispe上使用AspectJ來讓JKT更具擴(kuò)展性。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Andy: 從開發(fā)編輯器的角度來看,接下來到發(fā)布v2最終版的幾個月里,主要的工作是細(xì)節(jié)上的進(jìn)一步完善。基本上所以的功能已經(jīng)在alpha版本里了,我們要做的就是確定它們在最終版里可用而且流暢,還要做的工作包括性能提升、存儲使用等。

【編輯推薦】

  1. Groovy使Spring更出色
  2. 在Groovy中編寫正則表達(dá)式
  3. 在Groovy中使用字符串
  4. Groovy腳本文件中的靜態(tài)main方法
  5. 用Groovy編寫Google App Engine應(yīng)用
責(zé)任編輯:yangsai 來源: 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

開發(fā)集成API

2021-11-25 13:02:09

零信任

2022-07-28 16:50:54

安全DevOpsAPI

2009-11-23 20:07:51

ibmdw開發(fā)

2010-02-01 09:21:49

GroovyGoogle App Gaelyk

2009-06-03 16:06:28

Eclipse插件開發(fā)Eclipse

2010-05-07 15:27:26

蘋果

2013-06-13 08:57:47

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

2014-07-22 09:31:30

2018-01-29 09:42:27

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

2013-04-17 10:20:27

GroovyClassLoader

2009-06-10 16:19:33

Eclipse開發(fā)PH

2011-08-16 17:14:41

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

2014-10-11 10:20:50

程序員

2012-11-30 16:55:05

2011-09-23 09:46:09

軟件項目

2012-11-12 10:37:45

JavaEEJavaWebBuilder

2009-06-08 20:13:36

Eclipse自定義控
點贊
收藏

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

主站蜘蛛池模板: 玖玖视频国产 | 国外激情av | 亚洲高清久久 | 成人三区四区 | 日韩一区二区三区四区五区六区 | 99精品视频免费观看 | 欧美久久一区二区 | 99这里只有精品视频 | 欧美午夜视频 | 亚洲视频一区二区三区 | 亚洲天堂男人的天堂 | 99国内精品久久久久久久 | 先锋影音资源网站 | 91在线一区二区三区 | 久久r免费视频 | 精品视频在线观看 | 国产极品91 | 免费美女网站 | 狠狠插狠狠操 | 日韩中文字幕一区二区 | 欧美lesbianxxxxhd视频社区 | 欧美成人专区 | 亚洲在线一区二区 | 中文字幕的av| 国产精品一区二区三区久久 | 久久久久国产精品一区二区 | 99资源站 | 精品国产欧美一区二区 | 欧美视频免费在线 | 婷婷丁香在线视频 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 免费视频成人国产精品网站 | 涩涩视频在线看 | www.日韩| 91亚洲精选| 中文字幕亚洲区一区二 | 精品久久久久久久久久久 | 欧美一区二区在线 | 日韩精品国产精品 | 精品日韩一区二区 | 久久久久国产一区二区三区四区 |