只要你愿意,嚴(yán)肅規(guī)矩的java也同樣可以變得“動(dòng)態(tài)”靈活起來(lái)。動(dòng)有動(dòng)的好處,靜有靜的好處。俗話說(shuō)得好,“沒(méi)有規(guī)矩不成方圓”,但“生命誠(chéng)可貴,愛(ài)情價(jià)更高,若為自由故,兩者皆可拋”。那么作為忙碌在程序藝術(shù)世界里的子民們,我們何去何從呢?投奔動(dòng)態(tài)語(yǔ)言陣營(yíng)還是繼續(xù)在四平八穩(wěn)的Java領(lǐng)域奮戰(zhàn)? 在我看來(lái),“動(dòng)”或“不動(dòng)”需要一個(gè)黃金分割點(diǎn)。
1、尋找“動(dòng)”與“不動(dòng)”的黃金分割點(diǎn)
兩年前,以Martin Fowler為代表的一群大師們突然集體投奔到了動(dòng)態(tài)語(yǔ)言陣營(yíng),手持RoR這個(gè)“核武器”,大喊著要滅了Java,要取代Java。現(xiàn)在回頭來(lái)看,動(dòng)態(tài)語(yǔ)言給我們確實(shí)帶來(lái)了一些的革命性的思想,但同時(shí)我們也發(fā)現(xiàn)被大師們忽悠了一把。
對(duì)于強(qiáng)類型的Java語(yǔ)言來(lái)說(shuō),與真正的動(dòng)態(tài)語(yǔ)言比起來(lái),確實(shí)要受限制很多。在我看來(lái),借某位大師的比喻,Ruby的敏捷相當(dāng)草書,而java就是正楷。用Ruby,十個(gè)程序員寫出來(lái)的程序就是十種風(fēng)格,這跟我們寫文章是一樣的。而Java就是規(guī)規(guī)矩矩微軟雅黑方塊字,橫是橫,豎是豎,先寫哪一筆后寫哪一劃,一切都是規(guī)定好了的。強(qiáng)類型的靜態(tài)語(yǔ)言從語(yǔ)法的底層就建立了一套較為穩(wěn)固的規(guī)則體系,因此更加規(guī)范,從長(zhǎng)遠(yuǎn)來(lái)說(shuō),或者是對(duì)于大型項(xiàng)目來(lái)說(shuō),肯定是有規(guī)范并且規(guī)范嚴(yán)格的,較之規(guī)范不嚴(yán)格的表現(xiàn)起來(lái)從擴(kuò)展性、可維護(hù)性等要優(yōu)秀得多。
動(dòng)態(tài)語(yǔ)言與強(qiáng)類型的靜態(tài)語(yǔ)言,他們各有自己的特長(zhǎng)范圍。在企業(yè)級(jí)應(yīng)用領(lǐng)域,JavaEE的優(yōu)勢(shì)不是一天兩天建立起來(lái)的。而動(dòng)態(tài)語(yǔ)言其實(shí)由來(lái)已久,秀我覺(jué)得應(yīng)該算是javascript了,想想以前用asp寫程序,服務(wù)器及客戶端腳本都用的js,對(duì)于小型的應(yīng)用來(lái)說(shuō),確實(shí)很舒服。而近兩年由于Ajax概念股的走紅,javascript更加春風(fēng)得意,prototype.js等一批的Ajax框架及引擎更是把javascript的OO及動(dòng)態(tài)特性發(fā)揮到極致。對(duì)于來(lái)勢(shì)兇猛的RoR來(lái)說(shuō),在我看來(lái)先去跟php、Python這種同類的競(jìng)爭(zhēng)者好好PK幾年,如果不被他們滅掉的話,然后再來(lái)研究要“花多少光年來(lái)滅掉java”這樣的命題。
對(duì)于小型的應(yīng)用來(lái)說(shuō),小巧、靈活、簡(jiǎn)單的動(dòng)態(tài)語(yǔ)言,肯定在先機(jī)上占有一定優(yōu)勢(shì)。但對(duì)于大型的企業(yè)級(jí)應(yīng)用來(lái)說(shuō),動(dòng)態(tài)語(yǔ)言的這種巧、活、隨意性恰好成為其劣勢(shì)。這其中的原因除了本身能力(多核、線程、系統(tǒng)資源等)有限以外,太“草”了也是限制其發(fā)展的原因。事實(shí)證明,動(dòng)態(tài)語(yǔ)言能做到的,咱們靜態(tài)語(yǔ)言稍為動(dòng)動(dòng)腦子調(diào)整一下也能做到,比如Groovy;而靜態(tài)語(yǔ)言能做到的,動(dòng)態(tài)語(yǔ)言打死也做不到,除非他自己變成靜態(tài)的強(qiáng)類型語(yǔ)言,比如多核線程、二階段分布式事務(wù)。如果做到了,他可能就不僅僅是動(dòng)態(tài)語(yǔ)言了。
動(dòng)有動(dòng)的好處,靜有靜的好處。俗話說(shuō)得好,“沒(méi)有規(guī)矩不成方圓”,但“生命誠(chéng)可貴,愛(ài)情價(jià)更高,若為自由幫,兩者皆可拋”。那么作為忙碌在程序藝術(shù)世界里的子民們,我們何去何從呢?投奔動(dòng)態(tài)語(yǔ)言陣營(yíng)還是繼續(xù)在四平八穩(wěn)的Java領(lǐng)域奮戰(zhàn)?
在我看來(lái),“動(dòng)”或“不動(dòng)”需要一個(gè)黃金分割點(diǎn)。而在EasyJWeb之所以提供一些“動(dòng)態(tài)”特性的支持,也就是尋找這樣一個(gè)分割點(diǎn)而做的,把動(dòng)與靜的好處進(jìn)行分析、權(quán)衡,然后讓JavaEE應(yīng)用開(kāi)發(fā)變得更加的容易。努力尋找這樣的黃金分割點(diǎn),對(duì)一些非常好的動(dòng)態(tài)特性及思想提供應(yīng)用級(jí)的支持,而對(duì)于一些必須規(guī)范才能產(chǎn)生效率的特性,則堅(jiān)持推廣應(yīng)用。Java社區(qū)中的很多人都在為尋找這個(gè)分割點(diǎn)而努力。Java本身也已經(jīng)意識(shí)到這一點(diǎn),在其新的版本中都增加了對(duì)一些優(yōu)秀的動(dòng)態(tài)語(yǔ)言特性的支持。
當(dāng)然,對(duì)一直覺(jué)得“受約束、受限制”的我們來(lái)說(shuō),能“動(dòng)”一點(diǎn)、想“草”的時(shí)候“草”兩下,這是一件非??鞓?lè)的事兒。因此,EasyJWeb在基于Java這樣一個(gè)具有規(guī)范的平臺(tái)及環(huán)境作為基礎(chǔ)的前提下,做了一些工作,使得我我們?cè)谝欢ǖ姆秶鷥?nèi)也可以靈活的“動(dòng)”起來(lái),隨性地“草”起來(lái),這樣使得我們可以放開(kāi)手腳、輕松大膽的往前走。下面我通過(guò)一些例子來(lái)說(shuō)明。
2、百變CmdAction-AbstractCmdAction
在EasyJWeb-.10新版本的Command類型的Action基類即AbstractCmdAction中,提供了足夠的靈活特性使你得可以像使密宗拳一樣書寫Java Web Action??梢愿鶕?jù)你不同的應(yīng)用場(chǎng)景,像用動(dòng)態(tài)語(yǔ)言那樣書寫Action中的command。
假如我們?cè)谝粋€(gè)模塊中要執(zhí)行一個(gè)名為create操作,下面的方法簽名都是合法的:
public Page doCreate(WebForm form,Module module)
public Page doCreate(WebForm form)
public Page doCreate(Module module)
public Page doCreate();
public void doCreate(WebForm form,Module module)
public void doCreate(WebForm form)
public void doCreate(Module module)
public void doCreate();
1、尋找“動(dòng)”與“不動(dòng)”的黃金分割點(diǎn)
兩年前,以Martin Fowler為代表的一群大師們突然集體投奔到了動(dòng)態(tài)語(yǔ)言陣營(yíng),手持RoR這個(gè)“核武器”,大喊著要滅了Java,要取代Java。現(xiàn)在回頭來(lái)看,動(dòng)態(tài)語(yǔ)言給我們確實(shí)帶來(lái)了一些的革命性的思想,但同時(shí)我們也發(fā)現(xiàn)被大師們忽悠了一把。
對(duì)于強(qiáng)類型的Java語(yǔ)言來(lái)說(shuō),與真正的動(dòng)態(tài)語(yǔ)言比起來(lái),確實(shí)要受限制很多。在我看來(lái),借某位大師的比喻,Ruby的敏捷相當(dāng)草書,而java就是正楷。用Ruby,十個(gè)程序員寫出來(lái)的程序就是十種風(fēng)格,這跟我們寫文章是一樣的。而Java就是規(guī)規(guī)矩矩微軟雅黑方塊字,橫是橫,豎是豎,先寫哪一筆后寫哪一劃,一切都是規(guī)定好了的。強(qiáng)類型的靜態(tài)語(yǔ)言從語(yǔ)法的底層就建立了一套較為穩(wěn)固的規(guī)則體系,因此更加規(guī)范,從長(zhǎng)遠(yuǎn)來(lái)說(shuō),或者是對(duì)于大型項(xiàng)目來(lái)說(shuō),肯定是有規(guī)范并且規(guī)范嚴(yán)格的,較之規(guī)范不嚴(yán)格的表現(xiàn)起來(lái)從擴(kuò)展性、可維護(hù)性等要優(yōu)秀得多。
動(dòng)態(tài)語(yǔ)言與強(qiáng)類型的靜態(tài)語(yǔ)言,他們各有自己的特長(zhǎng)范圍。在企業(yè)級(jí)應(yīng)用領(lǐng)域,JavaEE的優(yōu)勢(shì)不是一天兩天建立起來(lái)的。而動(dòng)態(tài)語(yǔ)言其實(shí)由來(lái)已久,秀我覺(jué)得應(yīng)該算是javascript了,想想以前用asp寫程序,服務(wù)器及客戶端腳本都用的js,對(duì)于小型的應(yīng)用來(lái)說(shuō),確實(shí)很舒服。而近兩年由于Ajax概念股的走紅,javascript更加春風(fēng)得意,prototype.js等一批的Ajax框架及引擎更是把javascript的OO及動(dòng)態(tài)特性發(fā)揮到極致。對(duì)于來(lái)勢(shì)兇猛的RoR來(lái)說(shuō),在我看來(lái)先去跟php、Python這種同類的競(jìng)爭(zhēng)者好好PK幾年,如果不被他們滅掉的話,然后再來(lái)研究要“花多少光年來(lái)滅掉java”這樣的命題。
對(duì)于小型的應(yīng)用來(lái)說(shuō),小巧、靈活、簡(jiǎn)單的動(dòng)態(tài)語(yǔ)言,肯定在先機(jī)上占有一定優(yōu)勢(shì)。但對(duì)于大型的企業(yè)級(jí)應(yīng)用來(lái)說(shuō),動(dòng)態(tài)語(yǔ)言的這種巧、活、隨意性恰好成為其劣勢(shì)。這其中的原因除了本身能力(多核、線程、系統(tǒng)資源等)有限以外,太“草”了也是限制其發(fā)展的原因。事實(shí)證明,動(dòng)態(tài)語(yǔ)言能做到的,咱們靜態(tài)語(yǔ)言稍為動(dòng)動(dòng)腦子調(diào)整一下也能做到,比如Groovy;而靜態(tài)語(yǔ)言能做到的,動(dòng)態(tài)語(yǔ)言打死也做不到,除非他自己變成靜態(tài)的強(qiáng)類型語(yǔ)言,比如多核線程、二階段分布式事務(wù)。如果做到了,他可能就不僅僅是動(dòng)態(tài)語(yǔ)言了。
動(dòng)有動(dòng)的好處,靜有靜的好處。俗話說(shuō)得好,“沒(méi)有規(guī)矩不成方圓”,但“生命誠(chéng)可貴,愛(ài)情價(jià)更高,若為自由幫,兩者皆可拋”。那么作為忙碌在程序藝術(shù)世界里的子民們,我們何去何從呢?投奔動(dòng)態(tài)語(yǔ)言陣營(yíng)還是繼續(xù)在四平八穩(wěn)的Java領(lǐng)域奮戰(zhàn)?
在我看來(lái),“動(dòng)”或“不動(dòng)”需要一個(gè)黃金分割點(diǎn)。而在EasyJWeb之所以提供一些“動(dòng)態(tài)”特性的支持,也就是尋找這樣一個(gè)分割點(diǎn)而做的,把動(dòng)與靜的好處進(jìn)行分析、權(quán)衡,然后讓JavaEE應(yīng)用開(kāi)發(fā)變得更加的容易。努力尋找這樣的黃金分割點(diǎn),對(duì)一些非常好的動(dòng)態(tài)特性及思想提供應(yīng)用級(jí)的支持,而對(duì)于一些必須規(guī)范才能產(chǎn)生效率的特性,則堅(jiān)持推廣應(yīng)用。Java社區(qū)中的很多人都在為尋找這個(gè)分割點(diǎn)而努力。Java本身也已經(jīng)意識(shí)到這一點(diǎn),在其新的版本中都增加了對(duì)一些優(yōu)秀的動(dòng)態(tài)語(yǔ)言特性的支持。
當(dāng)然,對(duì)一直覺(jué)得“受約束、受限制”的我們來(lái)說(shuō),能“動(dòng)”一點(diǎn)、想“草”的時(shí)候“草”兩下,這是一件非??鞓?lè)的事兒。因此,EasyJWeb在基于Java這樣一個(gè)具有規(guī)范的平臺(tái)及環(huán)境作為基礎(chǔ)的前提下,做了一些工作,使得我我們?cè)谝欢ǖ姆秶鷥?nèi)也可以靈活的“動(dòng)”起來(lái),隨性地“草”起來(lái),這樣使得我們可以放開(kāi)手腳、輕松大膽的往前走。下面我通過(guò)一些例子來(lái)說(shuō)明。
2、百變CmdAction-AbstractCmdAction
在EasyJWeb-.10新版本的Command類型的Action基類即AbstractCmdAction中,提供了足夠的靈活特性使你得可以像使密宗拳一樣書寫Java Web Action??梢愿鶕?jù)你不同的應(yīng)用場(chǎng)景,像用動(dòng)態(tài)語(yǔ)言那樣書寫Action中的command。
假如我們?cè)谝粋€(gè)模塊中要執(zhí)行一個(gè)名為create操作,下面的方法簽名都是合法的:
public Page doCreate(WebForm form,Module module)
public Page doCreate(WebForm form)
public Page doCreate(Module module)
public Page doCreate();
public void doCreate(WebForm form,Module module)
public void doCreate(WebForm form)
public void doCreate(Module module)
public void doCreate();

