什么樣的人更偉大,站在巨人肩膀上的人。
當(dāng)
COM/DCOM
僅僅局限于
Windows
平臺(tái)上時(shí),
CORBA
的跨平臺(tái)應(yīng)運(yùn)而生;當(dāng)
CORBA
開(kāi)發(fā)部署應(yīng)用過(guò)于繁雜時(shí),
EJB
石破天驚;當(dāng)
EJB
測(cè)試不利侵入嚴(yán)重效率不佳開(kāi)發(fā)成本依然很大之際,
Spring
當(dāng)仁不讓。新事物的產(chǎn)生首先吸收了前人的優(yōu)勢(shì),在此基礎(chǔ)上不斷完善改進(jìn),直到讓不斷成熟的用戶群滿意。
從
EJB
說(shuō)起,其技術(shù)承諾是解決
CORBA
的所有問(wèn)題并降低其復(fù)雜性,其定位于大型應(yīng)用,尤其是對(duì)高可靠性、分布式、遠(yuǎn)程訪問(wèn)、集群等場(chǎng)合。但一開(kāi)始
EJB
提出并解決了
JavaBean
不具備的系統(tǒng)級(jí)服務(wù)的特性,并著實(shí)降低了
CORBA
的復(fù)雜性,也可以跨越平臺(tái),受到人們的鐘愛(ài),甚至在沒(méi)有任何意義的情況下也在應(yīng)用程序中使用到
EJB
,當(dāng)使用不到
EJB
本身的擴(kuò)展性好以及其它優(yōu)點(diǎn)時(shí),開(kāi)發(fā)者群開(kāi)始抱怨甚至倒戈
EJB
。這也符合歷史,當(dāng)狂熱之后,便是思想成熟后的反思,反思驅(qū)使改良,改良就是進(jìn)步。
EJB
提出了
EJB
組件的生成、銷毀、鈍化、銳化、管理由容器來(lái)做,這本身就是依賴倒置的前身。當(dāng)人們提出了工廠方法模式(生成單一對(duì)象)、抽象工廠模式(生成一系列對(duì)象)、
ServiceLocator
模式(查找某種已有的服務(wù))等模式時(shí),已經(jīng)在使用這控制反轉(zhuǎn)的思想。更甚者,人們提出了回調(diào)思想,用底層的框架調(diào)用上層的應(yīng)用,而不是一般意義的上層訪問(wèn)底層,
EJB
大量使用了
Callback
鉤子方法,比如
EJBCreate
,
EJBRemove
等;當(dāng)
TemplateMethod
模式再次在應(yīng)用中歸納出時(shí),當(dāng)我們這個(gè)也模版模式那個(gè)也模版模式時(shí),
Spring
將此運(yùn)用到淋漓盡致,其封裝
StatelessSessionBean
到
AbstractStatelessSessionBean
之類為開(kāi)發(fā)者封裝了
EJB
使用的侵入性時(shí),我再一次感想,何以是思想真正得以了運(yùn)用?!這些都可以關(guān)聯(lián)涉及到
IoC
思想。
IoC
本質(zhì)是為達(dá)到松耦合的目標(biāo),正在這個(gè)時(shí)候另外的一個(gè)思想
AOP
隨著人們不斷的推敲研究正茁壯成長(zhǎng)著。
OOP
面向業(yè)務(wù)邏輯,人們?cè)?/span>
AOP
是否可取代
OOP
的摸索中,發(fā)現(xiàn)有許多比如日志、事務(wù)、安全等系統(tǒng)級(jí)的服務(wù)并不屬于某個(gè)模塊而是貫穿于整個(gè)業(yè)務(wù),如果
OOP
比作是縱向的業(yè)務(wù)邏輯,那
AOP
豈不正是橫面的服務(wù)。但是如何取得具備業(yè)務(wù)邏輯功能的業(yè)務(wù)對(duì)象?
IoC
不正是把對(duì)象的創(chuàng)建、管理、銷毀都放到框架容器中處理的么,
IoC
與
AOP
的結(jié)合點(diǎn)一出現(xiàn),就整個(gè)業(yè)界帶來(lái)了前所未有的沖擊。思想都是現(xiàn)成的,思想的發(fā)展升華卻是空前的。
EJB2
終于被批駁的體無(wú)完膚,雖然有些不合理,
Spring
,
HiveMind
等一大批優(yōu)秀框架競(jìng)相而出,不是喧鬧,而是對(duì)應(yīng)用的經(jīng)驗(yàn)的累積。
EJB3.0
也走上了這條路。更有甚者,
JBoss
推出了
MicroContainer
容器,以打破服務(wù)遷移的困頓。
站在巨人肩膀上的人才是更偉大的,無(wú)論是
IoC
還是
AOP
,概念是新的,但是其思想的應(yīng)用卻早已出現(xiàn),甚至有變相的應(yīng)用,但卻沒(méi)有突破了以前的圈子。說(shuō)成一個(gè)是改良一個(gè)是革命,應(yīng)該不屬為過(guò)。量的累積導(dǎo)致質(zhì)變的過(guò)程也得以體現(xiàn)。
由此不由得想起
JDK
提供的
reflect
機(jī)制,當(dāng)
JDK
牛牛人指定并推出后,當(dāng)
JBoss
創(chuàng)始人靈光一閃,推出
JBoss
后,反射機(jī)制被人們認(rèn)識(shí)到,而剛剛說(shuō)的又哪個(gè)離開(kāi)了反射?!
呵呵,看來(lái),巨人的肩膀扛起一波又一波的人是沒(méi)有問(wèn)題的,我們開(kāi)始攀登?!呵呵。從業(yè)界的發(fā)展看,浮躁是不利的,累積總結(jié)深入到底層本質(zhì)方是正確之道。
新補(bǔ)充續(xù)篇:
什么樣的人更偉大,站在巨人肩膀上的人---由業(yè)界思想進(jìn)化的反思(二:IoC價(jià)值強(qiáng)化篇)