Lunski's Clutter

This is a place to put my clutters, no matter you like it or not, welcome here.

0%

Java EE

親兒子,Spring是私生子=p

Spring一樣採用MVC架構,Java EE是Java平台企業版(Java Platform Enterprise Edition),之前稱為Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名為Jakarta EE

Jakarta EE

img

Six Stages of JSF life cycle

  1. Restore Phase of view
  2. Process events: Apply step of request values
  3. Process events: Step of process validation
  4. Process events: Step update of model values
  5. IProcess events: Invoke step of application
  6. Render response step

Jakarta EE Annotations

javax.persistence.Entity;

1
2
3
4
5
6
7
8
9
10
11
12
@Entity @Table @Id @Persistence 

@Named - 設定xhtml呼叫名稱, 預設class name(與# class.method關聯)
public class ...{}

@Inject - 呼叫其他 controller,由於來自 CDI 規範,因此不僅可用於 Jakarta EE 環境,也可用於標準的 Java SE 環境中,前提是在類路徑中包含了 CDI 實現

@Stateless / @Stateful - 標記在stateless EJB上,表示狀態,facade一般stateless

@EJB - 呼叫其他Facade,是 Jakarta EE 規範的一部分,因此只能在 Jakarta EE 應用程序服務器中使用

@ViewScoped - 當前畫面存活,比@RequestScoped更長

@Inject 具有更廣泛的適用性和更標準的依賴注入機制,因此在現代的 Jakarta EE 應用程序中被更多地使用。但在處理傳統的 EJB 時,@EJB 仍可能是必需的選擇。

Framework

  • JSF: Primefaces
  • CDI(Dependency Injection @Inject):WeId
  • Managed Beans
    • EJB(Business Services)
    • JAX-RS(REST): Jersey
    • JAS-WS(SOAP: web service交換帶結構的資訊)
  • JPA: Eclipselink

[Controller && View] 6 Presentation Layer

技術標準: JAX-RS: 各家可以實作RESful API 的解決方案

  • XHTML: 繼承HTML並融合XML的嚴謹

  • JavaFX
    Oracle官方UI框架, awt, swing 後繼, java 8後內建於jdk, 要取代swing, 建構行動與桌面UI
    AWT>swing> JavaFX

  • PrimeFaces
    基於JSF建構企業網頁UI, 可以想成java版的jQuery, 但PrimeFaces在伺服器運行, 通過JSF生成HTML

PrimeFaces bottom update連到另一個xhtml panelGroup id
PF(‘xxx’).show() 中 PF 是PrimeFaces 元件的選擇器

  • JSF(JavaServer Faces)
    Java EE的MVC web框架,定義標準UI與提供API, 用Ajax實現無頁面刷新, 良好支援Spring, Hibernate之類的其他標準,用”action”呼叫controller, p:commandButton的update跳轉到下個xhtml的p:pannelGroup id

core: JSF 驗證與轉換Tag
html: HTML Tag
facelets: 頁面區塊

使用
main/resources/A.properties
app.title=標題

main/webapp/jsff/B.xhtml
’#{A[‘app.title’]}‘

  • Faces Servlet
    JSF 框架的一部分,用來處理頁面請求

  • JSP(JavaServer Pages)
    靜態網頁渲染, 不像JSF要求MVC, 可以隨意加入Java程式, 與JSF可合併使用, 或說JSP可以被包含在JSF

ref,
ref2,
ref3,
ref4,
ref5


Model = Domain Model + Data Access Layer

[Domain Model] Business Layer

負責業務邏輯和處理,實現系統的核心功能, Spring只實現部份Java EE與新增其他新功能。

技術標準:EJB(Enterpise JavaBean)
一種伺服器規範, 在JavaEE規範下完成訪問後端資料庫與安全, 部屬等事務

技術標準:CDI(Contexts and Dependency Injection)
標準化依賴注入,開發者不會再深陷於特定廠商@Annotation

  • Payara: 支持EJB的開源應用

ref
ref2
ref3


[Data Access Layer] Persistence Layer/Integration Layer

技術標準:JTA(Java Transaction API)
Java管理事務的規範, Java EE自帶JTA, 方便管理事務

技術標準:JNDI(Java Naming and Directory Interface)
為應用中對象命名, 提供API讓EJB透過它查找目錄, 廣泛應用於J2EE, Spring框架獲取配置信息, 資源查找, 服務訪問等, 但也存在Log4j2中的JNDI注入漏洞

Java物件和關聯式資料庫之間儲存資料, 有整個Java生態系, 但發展放緩, 只是個規範, 實現的ORM(Object-Relational Mapping)框架有開源的EclipseLink, Spring 中的HibernateSpring Data JPA簡化JPA開發的框架,不implemention接口的情況下, 直接對資料庫做CRUD,底層使用了Hibernate

  • JPL(Jakarta Persistence Layer, jakarta.persistence)

JPL持續發展, 但較不成熟

Java持久化查詢語言,是JPA中使用的面向對象的查詢語言,語法可類似SQL, 但其查詢資料源是持久化物件(Entity)而非資料庫本身

implements Serializable 為了在不同JVM共享物件
Marven中位於/src/main/resources/META-INF/persistence.xml


OSI Model

Steps to load class

  1. Application Class Loader
  2. Extension Class Loader
  3. BootStrap Class Loader

pdfBox

創建、解析和操作PDF的Java庫

* 加載pdf PDDocument.load()
* 取得頁面 PDPageTree
* 取得頁面字, 圖 PDResources
* 取文本 PDFTextStripper
* 取得頁面 PDDocument.getPages()
* 取得關鍵字 PDDocumentInformation
* 插入 PDPageContentStream
* 儲存 PDDocument.save()或PDDocument.saveIncremental()

如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)

Welcome to my other publishing channels