Java 發明以來,短短幾年迅速佔領桌面應用到伺服器,再到嵌入式系統的開發市場。其語言吸收 Smalltalk 純物件導向理念,擺脫 C++ 歷史包袱,簡潔自由風格贏得開發者喜愛。JDK 1.1 使 Java 成為實用語言;JDK 1.2 大量增強;JDK 1.3 HotSpot 提升效能;JDK 1.4 融合百家之長,現已成熟穩重。
企業級市場多建立在資料庫基礎上,傳統語言先後在資料庫開發舞台展現風采。Java 當然不會錯過,於是出現了 JDBC。今天要談的 JDO 與 JDBC 有密切關係,雖然 JDO 不只面向 JDBC 的資料物件封裝規範。下面簡單介紹 JDBC。
關聯式資料庫歷史一言難盡,僅從我的經歷簡述。早期電腦僅在大型研究機構,蘋果電腦引入個人電腦,IBM PC 標準開放,微軟 DOS、Borland Turbo 系列讓大眾發現電腦用途。後來出現 dBASE、SQL 語言。Borland 推出 Paradox 佔領民用資料庫市場,收購 dBase、InterBase,優勢持續到 Windows 3.0。微軟推出 Windows 3.0/3.1/Win32 API 確立桌面霸主地位,收購 Fox 公司技術形成 FoxBase/FoxPro,推出 Access 贏得開發者青睞。同期 Oracle、Sybase、Informix 等專注企業級資料庫成為高端領軍。微軟自行開發企業級資料庫失敗,收購 Sybase TDS 技術包裝成 SQL Server,憑易用性佔領市場。
市場出現眾多資料庫產品後,Borland 和微軟分別制定資料庫存取規範。微軟推出 ODBC,Borland 聯合 IBM、Novell 推出 IDAPI(即 BDE 核心),後 Novell、IBM 退出,僅 Borland 支撐。BDE 效能優於早期 ODBC,微軟後來加入連線池等技術追趕。BDE 仍是 Borland 產品線標準,微軟靠作業系統壟斷使 ODBC 佔據多數市場。
Java 介入資料庫應用後,Sun 極力制定 Java 資料庫規範。JDBC API 類似 ODBC,對資料庫底層協定進行基本封裝,形成統一資料存取介面。為方便配置,Sun 推薦純客戶端的 Type 4 JDBC 驅動,無需安裝客戶端。為相容舊資料庫,JDBC 規範包含連接 ODBC 的 Type 1、需安裝客戶端的 Type 2、廠商在伺服器端提供 JDBC 服務的 Type 3 驅動。
JDBC 最早不屬於標準 JDK,作為額外包提供下載。隨著 Java 資料庫應用增加和 JDBC 規範成熟,JDBC 成為 JDK 1.1 一部分。目前最新 JDBC 3.0,4.0 討論中。實際開發最常用仍是 1.0 API,2.0 增加可雙向捲動結果集、批次更新等提升可用性和效能的 API,3.0 增加連線池、可更新結果集等特性,4.0 將在可管理性、連線池規範化等方面改進。
現今程式設計師無人不知面向物件。作為接近真實世界的開發概念,面向物件使程式碼更易讀、設計更合理。在普遍存在的資料庫應用領域,開發人員對面向物件的追求從未停止。八十年代起,許多公司和研究機構進行面向物件與資料庫結合研究。
面向物件語言早期有多種雛形,IBM Smalltalk 最流行,一切皆物件、一切皆類,將面向物件概念發揮極致。面向物件編程比面向過程邁進大步,但受限於硬體架構,Smalltalk 難在理想效能下推廣。C++ 出現,因 C 語言用戶多而成主流,但為相容 C 保留指標、全域變數等面向過程痕跡。Object Pascal 相對安全,Borland 改名為 Delphi,嚴謹語法、快速編譯吸引開發者,完美 VCL 元件體系比 MFC 方便,完整資料庫元件簡化資料庫開發。微軟將 MFC 內建作業系統搶回市場。這也是 Delphi 編譯後程式比 VC、VB 大的原因。1995 年 Sun 團隊為嵌入式系統開發 Oak 語言,意外發展出 Java,完全擺脫傳統語言包袱的面向物件語言,保留基本型別保證速度。現為最流行面向物件語言之一。微軟推出 C# 競爭,保留變種指標吸引 C 開發者。各語言特點此不贅述。