JDK 9 javac 採用「一加三」策略:同時支援 1.9/9、1.8/8、1.7/7、1.6/6 版本選項,JDK 10 延續此策略。意味著早期不合理設計將被修正,帶來源碼級不兼容:
false 變為 true(如 String == 比較)。Integer i = new Integer(0); Integer j = new Integer(0); i == j 未來可能返回 true。通過擴展表結構預留欄位,新版本 API 可在不破壞舊結構下新增欄位,舊版本忽略新欄位,實現平滑遷移。
新版本完全支援舊版本行為,舊客戶端零成本升級。
在新環境中模擬舊版本運行時行為(如 Windows 兼容模式、JVM 解釋模式)。
同一進程加載多版本庫,透過隔離機制(如 OSGi、模組系統)共存。

設計時預留擴展點:介面預留方法、數據結構預留欄位、協議預留字段。避免「為了兼容而犧牲創新」(如 Intel Atom 背負 x86 包袱、微軟移動系統背負 Windows 風格),應敢於自我革新(如 Google Android 專為移動設計)。
Windows 註冊表維護「專門處理的軟體清單」,新版模擬舊 Bug 讓舊應用正常運行(如《模擬城市》釋放記憶體後立即重用,Windows 為其啟用特殊記憶體管理模式)。
優先**新增 API**,避免調整舊 API 及測試成本;微小修正可直接修改舊 API。
框架動態調用鏈路中,協議演進導致擴展參數難以預判。利用 ThreadLocal 透傳上下文,將複雜擴展簡化為簡單定義,滿足介面通用性與向下兼容。