JavaRush /Java Blog /Random-TW /喝咖啡休息#119。Java 企業版 (Java EE) 簡介

喝咖啡休息#119。Java 企業版 (Java EE) 簡介

在 Random-TW 群組發布
來源:Dev.to Java 企業版(Java EE)是一組 Java 語言的規格和文檔,描述了用於解決大中型企業問題的伺服器平台架構。 喝咖啡休息#118。 Java 企業版 (Java EE) 簡介 - 1在學習 Java EE 時,您會遇到以下術語:
  • 應用伺服器是抽象 Java EE 規範的具體實作。範例:Payara 伺服器 (Glassfish)、IBM OpenLiberty 和 JBoss Wildfly。

  • Java 規範請求(JSR) 是向 Java 社群提出的添加和改進技術的正式請求。它是一個在Java技術平台上標準化API的機構,用於將API分組為區塊,例如JAX-RS(Java API for RESTful Web Services)。對於每個 JSR,總是有一個預設的參考實作。

  • 參考實作是抽象 JSR 的具體實作/實作。例如,JAX-RS 的參考實作稱為 Jersey。Java EE 本身就是一個 JSR。因此,應用程式伺服器是不同 Java EE JSR 參考實作的集合。Java EE 是 JSR 366,其參考實作之一是 Glassfish 5。

  • Jakarta EE是從 2018 年開始的 Java EE 的新名稱。目前,Oracle已將Java平台移交給Eclipse基金會管理。

JavaEE基礎知識

Java EE 中有三個關鍵 API:
  1. Java 持久性 API (JPA)。它負責儲存和檢索關聯式資料庫中的信息,可以擴展為與 NoSQL 資料庫一起使用。這是應用程式中的資料層。

  2. 上下文和依賴注入 (CDI API)。它是減少應用程式耦合的標準化方法。它管理各種組件交互以確保自由解耦。

  3. 用於 RESTful Web 服務的 Java API (JAX-RS)。它透過 HTTP 將資源作為 Web 服務提供。

上下文和依賴注入 API

依賴注入是一種特殊形式的反轉控制(一種軟體策略,其中各個元件接收其依賴項)。這將應用程式中的依賴性外部化以創建低耦合元件。

CDI的特點

  • 依賴注入(Typesafe)可讓您聲明對類型的依賴關係,以便編譯器在執行時捕獲錯誤。

  • 生命週期上下文是將生命週期和有狀態組件互動與定義良好但可擴展的生命週期組件連結起來的能力。

  • 攔截器允許您攔截存取特定方法的請求。

  • 事件是開發高度解耦應用程式的一種方法。當 Observers 方法監聽已觸發的事件時,可以觸發事件。

  • 服務提供者介面 (SPI)是一組可用作擴充功能的技術、API 和接口,例如在 Apache 庫中。

一些 CDI API 概念:

  • CDI Bean Discovery是依賴注入框架解析和發現bean的機制,用於控制預設如何發現bean,即帶有@Annotated等註解的bean。Bean 發現模式分為三種類型:ALL(包括未註釋的 Bean)、ANNOTATED 和 NONE。

  • CDI 容器是一種工廠方法,Java 類別在其中輸入和輸出其功能和能力。這是管理 bean 的應用程式。

  • Bean 和上下文實例。bean 是由開發人員建立的範本。上下文實例是由 CDI 容器建立和管理的 Bean 實例。

Java持久化API

JPA 用於將物件對應到關聯式資料庫表。Java Persistence API 遵循 ORM 宣言的原則。 ORM清單(物件關聯映射清單):
  • 對象,而不是表:開發人員編寫對象,而不是表。

  • 方便,而不是無知: ORM 應該方便。開發人員應該具備最低限度的關係資料庫知識。ORM 不是一種隱藏無知的方法,而是一種便利。

  • 不引人注目且透明: ORM 應該使開發人員能夠控制資料庫中的內容並完全控制保存的內容。遺留數據,新對象:ORM將允許您從遺留資料建立新對象,即將遺留資料庫重建為Java對象。

  • 足夠,但不會太多: ORM 將提供所有工具來解決由於阻抗不匹配(該術語用於指由於資料庫模型和程式語言之間的差異而出現的問題)引起的常見問題。ORM 不應該太重。

  • 局部性和移動性:資料是本地的,但應用程式的持久狀態必須可以移動到應用程式的不同部分。

  • 標準API,可插拔實作:依賴標準API,但可依需求變更實作。

一些重要的 JPA 概念: JPA 實體
  • JPA 物件最模組化的組件是普通的舊 Java 物件 (POJO)。每個物件必須有一個唯一的識別符。

  • JPA 實體通常使用 @MappedSuperClass 等註釋,它允許使用包含公共實體欄位的超類別。@AttributeOverride 註解用於覆寫超類實體。@Column用於配置資料庫映射。@Transient 註解可用於實體類別中不應對應到資料庫的欄位。

  • 存取類型是持久性提供者存取實體中的狀態的過程。當提供者透過反射直接存取類別的欄位時,就會發生欄位存取。當使用 Java Bean 屬性方法存取狀態(即使用 getter 和 setter)時,就會發生屬性存取。要使用屬性訪問,getter 必須使用 @Id 進行註解。混合存取類型使用 @Access 註解來存取同一實體類別中的欄位和屬性。

用於 RESTful Web 服務的 Java API

REST架構的限制:
  1. 客戶端和伺服器是相互獨立的。

  2. 無狀態:到達伺服器的每個單獨請求都是自主且唯一的。伺服器不會對先前的請求做出任何假設。

  3. 可緩存性:系統必須支援不同層級的緩存,以提高效能和可擴充性。

  4. 統一介面意味著客戶端必須有一個通用的統一介面來存取伺服器上的資源,以及與伺服器上的資源互動。多層系統:伺服器可以在不同的層中實現,這樣客戶端就不必擔心多層系統,例如支援負載平衡的伺服器。

與 JAX-RS 相關的一些一般概念:
  • HTTP GET 方法:請求一個或多個資源。GET 請求方法是冪等的,這表示重複向該方法發出相同的請求不會改變伺服器上資源或資料的狀態。

  • HTTP POST 方法:POST 請求用於在伺服器上建立新資源。這會導致伺服器上的資料集發生變更。POST 通常有一個正文,其中發布或附加了有效負載或我們想要在伺服器上創建的任何內容。

  • HTTP PUT 方法:語意上用於更新伺服器上的資源。

  • HTTP DELETE 方法:用於刪除伺服器上的資源。

  • 內容類型。可以透過查詢方法使用和建立多種類型的內容:XML、CSV、EXCEL、TEXT 和 JSON。

  • JAX-RS 具有編寫訊息正文的概念。這些是用於將 Java 類型轉換為客戶端期望的類型的 API 建構。@Produces 註解可用於指定 Java 物件的回應轉換為的類型。

  • @Consumes 註解告訴 JAX-RS 運行時給定資源方法正在使用的內容類型。然後,JAX-RS 運行時將作為有效負載傳遞的 JSON 內容轉換為類型與方法參數相同的 Java 物件。

  • JAX-RS 異常映射器:用於將異常映射到 HTTP 回應的 API 建構。@Provider 註解用於以程式設計方式向 JAX-RS 執行時期註冊異常解析器。

這是 Java EE 的非常簡單的介紹。要使用 Java EE 建立 Web 應用程序,您需要深入研究每個關鍵 API。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION