作為一個程序員,我在軟件行業已經整整十個年頭了。現在,我有幸在北京Borland工作,每天面對的是程序員賴以生存的工具軟件,個中滋味,自然難以述說。
Borland其實是一家小公司,在當前IT領域遍地富翁的情形下,在微軟、Oracle、sun等軟件巨頭身旁,Borland銀行裡那一億美元的儲備金,真的算不了什麼。
但是我知道Borland有一個夢,一個程序員的夢。為了這個夢能變成現實,Borland的那些天才的程序員終結者們,總在夜以繼日地耕耘著鍵盤,是的,總有一天,夢會成真,程序員們會為之狂悅。
每個公司都有自己的文化,就像每個國家都有自己的信念一樣,Borland也有自己的底蘊。福勒先生(現任代總裁)說過,要把Borland建設成一個像瑞士一樣的國家。哦,瑞士,這是個不大的國家,是的,Borland只是一個小公司;它以精致的鐘表和工具而聞名遐迩,Borland曾用一個Delphi維持了公司八年;它擁有勤勞聰慧的民眾,Borland擁有全球最有天分的一群程序員;它在各種艱巨的地形下建造了數不清的人工奇跡,Borland打造了一個又一個的極品軟件;在瑞士旅游,你不用擔心便利性的問題,用Borland軟件,你無須關心繁瑣的細節。最重要的是,瑞士完全中立,Borland沒有平台。
是的,Borland的產品沒有平台。這是西蒙先生(Borland高級副總裁)給程序員的承諾。這是Borland夢想的一部分,可以說已經基本實現。CORBA中間件產品VisiBroker屏蔽並連接了不同的平台。軟件對象框架產品APPServer、軟件對象管理產品AppCenter、Java開發工具JBuilder都運行在JVM之上因而只要Java能到的地方,這些產品就能到。數據庫產品Interbase已經做到了Windows、Linux、Solaris三類平台之上。年底前Delphi for Linux、明年上半年C++Builder for Linux將出爐(參照Kylix計劃)。有什麼理由不相信Borland能實現自己的承諾呢?
其實Borland所指的平台不只是操作系統平台,還包括語言平台,無論是Pascal、C++、Java,你看到的IDE環境都會是同一個面孔,你使用的組件都是類似的架構。除開語言平台,還包括不同的軟件對象體系標准。你會發現無論是使用CORBA,或是Java、或是DCOM、或是MIDAS,你的對象總能互相通信,你在IDE環境中時常會看不到具體標准的痕跡。對了,這就是程序員的夢。在程序員們邏輯的世界裡,如何能容忍所有這些平台的束縛呢?我做不到,我一直試圖打破一個又一個類似的壁壘,我一直就像在做惡夢,直到我發現Borland可能做到。Borland有同樣的夢想。
想一想,為什麼一個獨立的軟件,不能成為一個對象?自從我們發明了對象這個名詞以來,似乎已經有太多的人在用這個招牌來吆喝自己的產品了。事實上他們都是對的,因為每一個獨立的軟件都是一個貨真價實的對象。因為它們獨立,所以它們滿足對象的最基本條件:封裝。至於繼承,在新軟件中使用舊的代碼,是不是繼承?還有多形,寫一個類似的程序,把它和現在的軟件放在一起組成一個組,分別實現不同的功能,是不是多形?對了,只有獨立封裝才是對象是與不是的標准。有自己的名字,有自己的數據,有自己的方法,為什麼不是一個對象?是的,這都是對象。
在程序員們邏輯的世界裡,這些對象,那都是活生生的生命啊。那都是他們的將士,時刻聽從他們的指揮。可是那些討厭的操作系統,那些數以萬計的語言,那些為某些公司專用的標准,這些所謂的平台,他們扼殺了這些生靈。平台讓對象們離開出生的家鄉就不能生存,還讓他們互相不能認識對方,不能用長勺喂飽別人。
還好軟件世界裡還有那麼多真正的程序員存在,還好在關心對象命運的公司也不止一家。這些公司(至少有800多個吧),他們組成了一個組織叫對象管理組織(OMG),他們出了一個標准叫CORBA。CORBA認識所有這些對象,這些獨立的軟件。CORBA還讓他們互相認識,請求對方為自己完成自己力不能及的事情。
是的,我們不再需要要求所有的對象都必須符合DCOM的二進制代碼規范,在除Windows以外的世界,我們找不到任何合手的軟件來生成這些代碼塊。我們也不需要所有的程序員來學習Java語言,我們可以用自己習慣的語言。任何舊的代碼都是程序員自己帶出來的兵,我們今天不需要去遺棄他們。
如果現在有人對我說他用UNIX上的Java程序和他的Windows下的C++程序一起集成了一個新的系統,我不會感到奇怪,因為Borland的VisiBroker、JBuilder和C++Builder讓你可以做到。如果有人對我說,他的EJB可以和CORBA對象互相認識並能友好交流,我不會感到奇怪,因為如果你在APPServer框架下開發EJB,那麼它本身就能是一個CORBA對象。Java對象必須存活在某個小一點但完善一點的框架環境之下,但這並不意味著它們不能通過類似於Borland APPServer這樣的框架環境來融入CORBA的大家庭之中。如果明年有人對我說他拿Windows下的Delphi代碼(包括界面描述)到Linux下編譯了一個Linux下的可執行程序,跑起來樣子還跟Windows下的一模一樣,我也不會奇怪,因為用Delphi for Linux,你可以做到。
只有DCOM對象現在還不能適應這個全世界大團結的美好環境。好在微軟並不是那麼萬分的頑固。至少他們想把他們的新語言C#也弄一個IDL2C#規范出來,這樣將來用C#也可以開發CORBA對象。甚至他們在DCOM之外,還能重視SOAP,因為SOAP容易融入CORBA之中,實際上他們已經在申請這麼做。哦,SOAP是什麼?其實不過是XML。用XML作什麼?CORBA對象間傳送的(一般來講)是扁平的消息,結構化的消息最特殊情況下如一個對象則很難傳送。用XML來包裝一個對象,然後把XML文件整個傳送出去,就可以傳送對象了。其實用Java也可以傳送對象,只不過雙方必須都是Java程序罷了。鮑爾默先生(微軟總裁)講XML必將戰勝Java,不是沒有道理,而只是忽略了需要借助於CORBA之力的事實(當然憑借微軟的實力,他可以不用現存的CORBA產品,但它必須有類似的產品,同時這個產品應該可以和CORBA互通,否則就失去了跨平台的意義)。
將來會有人跟我講,他在服務器上實現了Java所寫的MIDAS服務器程序,他用DataModule封裝了所有的業務邏輯,用EJB的形式放在某個框架環境(EJB Server)之下,該DataModule可以在任何平台下用任何語言中的TClIEntDateSet之類的東西來訪問。如果聽到這些話,我不會感到奇怪,因為即便是從當前的技術基礎來講,Borland都有能力能做到這樣。如果將來有人跟我講,他的微軟格式的軟件對象可以跟CORBA對象互相認識並能緊密合作,那我可能有些高興,但仍然不會奇怪,因為只要微軟願意,Borland可以做到。
程序員們邏輯的世界是一個沒有國界的淨土,這裡不允許任何的霸權存在。如果你覺得這只是一個夢想,那麼請允許Borland能和你一起做夢直到美夢成真。