承接第一部分,本文深入 Java 物件導向精髓、J2EE 多層架構、存取 Windows 原生組件的多種路徑、UI 選型策略與部署環境建議。
// VB 6
Private theBalance As Currency
Public Sub Deposit(amount As Currency): theBalance = theBalance + amount: End Sub
Public Property Get Balance() As Currency: Balance = theBalance: End Property
// Java
public class Account {
private double balance;
public Account(int number, double balance) { this.balance = balance; } // 建構子
public void deposit(double amnt) { balance += amnt; }
public double getBalance() { return balance; } // Getter
public void setBalance(double b) { this.balance = b; } // Setter
}
關鍵差異:建構子取代 InitAccount、私有欄位 + Getter/Setter 取代 Property、預設 package-private 而非 public。
extends 單繼承,super 呼叫父建構子,@Override 重寫方法static 欄位/方法屬類別不屬實例(如利率)this 解決參數遮蔽欄位:this.balance = balance;interface 定義契約,implements 多實作,彌補單繼承限制
原則:優先用 Java 標準 API(java.net、java.io)替代平台專有功能;不得已再用橋接技術。
| 技術 | 特點 | 適用場景 |
|---|---|---|
| JNI | 標準、JVM 內建、C/C++ 雙向呼叫 | 原型階段、分階段遷移、COM/DCOM 元件、無原始碼第三方庫 |
| JNI++ | 代碼生成器 + C++ 核心庫,簡化複雜映射 | 複雜 C++ 類別、異常轉換、回調 Java |
| IBM Interface Tool for Java | ActiveX → Java Proxy,typelib 自動生成 | Office 自動化、IE 控制、COM 可腳本元件 |
| Codemesh JunC++ion | C++/Java 雙向混合,單一 API 集 | C++ 客戶端接入 EJB、C++ 實作 EJB |
| JNIWrapper | Java 庫調用原生函數,免寫 JNI 模板代碼 | 系統托盤、自訂啟動畫面、註冊表操作 |
| Jawin | 開源、COM/DLL 互操作、免寫 JNI、含存根生成器 | Office、MSXML、Win32 API(登錄表、安全、事件日誌) |
| Stryon i-HUB | Java-COM+ 橋接中介軟體 | 企業級 .NET/COM 整合 |
J2EE 應用跑在應用伺服器,再由 Web Server(IIS/Apache)反向代理靜態資源。
掌握 OO 精髓、架構分層、原生整合工具箱、UI 遷移哲學與部署拓撲,Windows 開發者即可自信踏上 Java 開放平台之路。