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

Eclipse PDE API Tools 入門:管理 API 相容性、版本號與使用限制

     編輯:Java 相關知識

Eclipse PDE (Plug-in Development Environment) 內建 API Tools,協助開發者管理 API 生命週期:偵測二進位不相容、自動調整版本號、維護 @since 標籤、限制 API 使用方式(@noimplement 等)、識別非 API 代碼洩漏。本文以 Eclipse 3.4 (Ganymede) 為基礎介紹核心功能與實作範例。

什麼是 Eclipse API?

依命名慣例與 MANIFEST.MF 匯出套件決定:

元素類型定義
API 套件至少含一個 API 類別/介面的已匯出套件
內部套件org.eclipse.xyz.internal.*,標記 x-internal:=true,可用但不保證相容
API 類別/介面API 套件中的 public 類別/介面,或被其宣告/繼承的 public/protected 成員
API 方法/建構子API 類別中宣告/繼承的 public/protected 方法/建構子
API 欄位API 類別中宣告/繼承的 public/protected 欄位

訪問內部套件會收到「阻止訪問」警告,意味著代碼可能變更且無官方支援。

API Tools 核心功能

  • 識別兩版本間的二進位不相容
  • 依 Eclipse 版本規範自動更新外掛版本號
  • 為新增 API 維護 @since 標籤
  • 提供API 限制註解(@noimplement 等)
  • 基於 MANIFEST.MF 定義 Bundle 間套件可見性
  • 偵測非 API 代碼使用與內部類型洩漏至 API

啟用 API Tools 兩步驟

  1. 設定 API Baseline:Preferences → Plug-in Development → API Baselines,指向現有 Eclipse 安裝目錄,動態生成基準
  2. 專案加入 API Analysis:
    • 既有專案:右鍵 → PDE Tools → API Tooling Setup Wizard,勾選專案 → Finish
    • 新專案:New Plug-in Project Wizard 勾選 Enable API Analysis

API 限制註解實戰

註解適用元素效果
@noimplement介面客戶端不可 implements/extends
@noextend類別客戶端不可 extends
@noinstantiate類別客戶端不可實例化(任何建構子)
@nooverride方法客戶端不可 override
@noreference方法/建構子/非 final 欄位客戶端不可直接呼叫/引用

範例:Widget Factory API

// IWidget.java
package org.eclipse.example.widgetfactory;
/** @noimplement */
public interface IWidget {
  String getName();
  long getId();
}

// AbstractWidget.java
public abstract class AbstractWidget implements IWidget {
  /** @nooverride */
  public long getId() { return Math.round(Math.random()); }
}

// DefaultWidget.java
/** @noextend */
public class DefaultWidget extends AbstractWidget {
  public String getName() { return "The default widget"; }
}

客戶端違規偵測

// MyWidget.java - 警告:實作了 @noimplement 介面
public class MyWidget implements IWidget { ... }

// MyDefaultWidget.java - 警告:擴展 @noextend 類別、覆寫 @nooverride 方法
public class MyDefaultWidget extends DefaultWidget {
  @Override public long getId() { return 42; }
}

二進位不相容偵測

修改 API 方法簽名(如 findEntry(String) → findEntry(String, boolean))會被標記為錯誤。可在 Preferences → API Tools 配置檢查規則。

版本號自動管理

遵循 OSGi major.minor.service.qualifier:

  • Major:API 破壞性變更
  • Minor:新增 API(向後相容)
  • Service:Bug 修復、內部變更
  • Qualifier:建構識別

新增方法時,API Tools 報告錯誤並提供 Quick Fix:更新 MANIFEST.MF 版本號(如 3.3.0 → 3.4.0)與方法 @since 3.4。

Ant 整合與報表

支援 Headless Build:org.eclipse.pde.api.tools 提供 Ant Task 生成 API Baseline 與違規報表,適合 CI 整合。

總結

API Tools 將「API 設計契約」從文檔落實為「編譯期/建構期強制規則」。核心價值:預防性偵測破壞性變更、自動化版本管理、明確傳達使用限制。對於發佈給第三方使用的 Eclipse Plugin/Feature,強烈建議啟用並納入 CI 流程。

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