首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

編寫真正跨平台 Java 程序的 12 條鐵律

     編輯:Java 相關知識

核心原則:100% Pure Java

「一次編譯,到處運行」非自動實現。必須嚴格遵循以下規範:

  1. 僅使用核心 API:禁止依賴第三方非 Pure Java 庫(如 Visual J++ 專有類),否則需分發專用 JVM。
  2. 開啟所有編譯警告:javac -Xlint 或 IDE 最大警告級別,捕獲平台相關代碼。
  3. 拒絕過時與非文檔 API:檢查 Javadoc,避免 @Deprecated 方法與內部類(sun.*, com.sun.*)。
  4. 慎用 System.exit():會終止整個 JVM,影響同進程其他應用。正常退出用 destroy() 或停止所有非守護線程。
  5. 避免本地方法 (JNI):優先用 Pure Java 實現;必須用時,隔離為服務端通過 RMI/CORBA 調用。
  6. 禁用 Runtime.exec() 固定命令:命令本身平台相關(如 notepad.exe vs vi),改為用戶配置命令路徑。
  7. 字符集堅持 ASCII:不依賴 Unicode 顯示,確保中文等非 ASCII 內容通過屬性文件/資源包外部化。
  8. 絕不硬編碼路徑分隔符:使用 System.getProperty("file.separator")、line.separator、path.separator 動態獲取。
  9. 網絡編程用 IP 而非主機名:InetAddress.getAddress() 獲取統一格式 IP,避免 getHostName() 平台差異。
  10. 文件路徑完全外部化:不硬編碼任何路徑;文件名僅用 ASCII,避免長度/字符集衝突。
  11. GUI 必須使用佈局管理器:禁止 setBounds() 硬編碼座標/大小,交由 LayoutManager 自適應。
  12. 動態獲取顯示屬性:
    • 系統顏色:SystemColor 類常量(menu, window 等)
    • 屏幕分辨率:Toolkit.getScreenResolution() (DPI)
    • 屏幕尺寸:Toolkit.getScreenSize()

驗證清單

  • 在 Windows/Linux/macOS 至少三平台實測
  • 使用 javac -Xlint:all 零警告編譯
  • 所有字符串資源外部化至 .properties 文件
  • 無 sun.*/com.sun.* 導入
  • 無 System.exit() 正常流程調用

總結

跨平台非語言天賦,而是嚴格工程紀律的結果。這 12 條規則涵蓋了類庫依賴、編譯檢查、API 選擇、進程控制、本地交互、字符編碼、系統屬性、文件系統、網絡地址、GUI 佈局、顯示適配等所有關鍵維度。將其納入團隊編碼規範,配合自動化檢查工具,才能真正實現「Write Once, Run Anywhere」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved