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