JavaRush /Java Blog /Random-TW /喝咖啡休息#157。2022 年將 Java 用於前端 Web 應用程式

喝咖啡休息#157。2022 年將 Java 用於前端 Web 應用程式

在 Random-TW 群組發布
來源:Nocodefunctions 我們要請您注意一篇有關使用 Java 開發獨立 Web 應用程式的經驗的文章。 喝咖啡休息#157。 2022 年將 Java 用於前端 Web 應用程式 - 1

Java 前端-這真的可能嗎?

很多人認為使用Java進行前端開發根本不可能:畢竟Java是為後端設計的。是的,很久以前,Java applet 和 Java Webstart 允許您從瀏覽器執行 Java 應用程式。但這是古老的歷史,和 Flash 插件一樣古老。但即使沒有小程序,也有一種使用 Java 作為前端的方法 - 這些是 JSP(Java 伺服器頁面),許多小學生在電腦科學課程中學習它。然而,儘管 JSP 仍在一些 Java 書籍中討論,但該技術自 2010 年代以來已被棄用。難道真的又是一條死路嗎?還有一些框架允許 Java 開發人員使用 Google Web Toolkit(GWT,它也不是超級新)或透過J2Cl(也來自 Google)將其程式碼「轉換」(以複雜的方式轉換)為 JavaScript 。需要注意的是,GWT 和 J2Cl 並不適合初學者,它們是 Google 開發的更多企業工具,用於大型專案。

Java 前端的無名英雄:Jakarta Faces (JSF)

Java Server Faces (JSF),現在稱為“Jakarta Faces”,至少從 2010 年代初期就已經存在。我總是感到驚訝的是,它鮮為人知,很少被提及,因為這個框架可以輕鬆、快速、安全、可靠地開發 Web 應用程式。JSF 易於學習並充分利用 Java 生態系統。例如,以下是建立包含動態內容的網頁的方法:
  • 建立一個 html 頁面(擴展名為 .xhtml)。
  • 將 <head> 和 <body> html 標籤改為 <h:head> 和 <h:body> 標籤。
  • 現在,要透過呼叫後端的某些屬性來顯示動態內容,只需將此程式碼放在主題標籤之後和控制列之間:

    #{backendscript.myText}
然後在後端建立一個 Backendscript.java 文件,加入一個名為String myText = "hi!welcome to my page!" 的變數 。它將顯示在網頁上。JSF 確實非常簡單。由於Stackoverflow 上的許多問題、官方文件、幾本書(這個鏈接,我也喜歡David Heffelfinger 的書),當然還有Youtube 視頻,它得到了很好的記錄。

JSF 複雜嗎?它的優點是什麼?

JSF 一點也不複雜。而且:
  1. 它與經典 Java IDE(NetBeans、IntelliJ IDEA 和 Eclipse)良好整合。每個 IDE 都提供:
    • 填寫 Maven 配置範本的範本專案(順便說一下,這非常簡單)。
    • 調試工具(具有熱重載功能,至少對於 NetBeans 而言)。
    • 適用於 Java 生態系統的強大自動完成、重構、導航和錯誤突出顯示工具。IDE 可以提供您在 html 頁面中提到的任何類別的有用資訊(例如上面提到的#{backendscript.myText})。HTML 頁面實際上將與您的程式碼庫的其餘部分整合!
  2. 它可以非常輕鬆地處理 html 頁面上的複雜程式碼變更。
    • 您是否需要透過簡單的按鈕點擊來刷新頁面的一部分?將更新屬性新增至您的按鈕,後面接著要更新的元件的 ID。
    • 關於更新和動態內容:我真的很喜歡 JSF 的簡單性:前端更新後端,更新自身,或後端更新前端。所有這些都是 Web 應用程式的基本要求,它們都在這裡。
    • 如果你希望使用者能夠下載一個或多個文件,並且有文件類型和大小的條件,只需在程式碼中加入一行明確的參數
    • 需要製作多語言網站嗎?將<f:view>標籤新增到您的 html 中,然後在後端只需一行即可取得使用者的語言。
  3. 您可以新增和混合 HTML 標籤、JS 和 CSS 腳本,並且所有這些都經過 SEO 優化。
您可以完全控制 JSF 產生的 html,並且可以隨時新增 html 和 js 程式碼。這使得與不了解或不關心 JSF 的設計人員和前端開發人員合作變得更加容易。當我使用 CSS 時,我得到了一位設計師的幫助,他可以處理我使用 JSF 創建的 HTML 頁面,毫無困難地進行必要的更改。JSF 產生您可以在瀏覽器中檢視和閱讀的 HTML 程式碼。這對於使用常規開發工具進行偵錯並驗證 SEO 操作是否正確實施非常有幫助。

Primefaces:大量免費 JSF 組件和主題列表

JSF 附帶了一長串可立即使用的元件,這些元件可建立 html 頁面的經典部分,因此您不必自己動手。例如,使用<h:dataTable>標記建立一個表,該表顯示從後端載入的特定數據,而無需從頭開始重新建立。還有一個更好的選擇:Prime Tek 開發了一套名為Primefaces的開源元件。它們具有附加功能並具有多種優點。例如,只需使用 Primefaces <p:dataTable> 標記即可取代 <h:dataTable>。這將建立一個基本資料表,您可以在其中輕鬆新增列開關動態列或編輯表中的 功能。

但Java慢又重?

1.Java慢嗎?

不。有趣的是,像 React、Angular 和 Vue 這樣的 JS 框架是在創建時承諾比 Java 中的 JSF 更快、更智能,因為它們將所有應用程式邏輯直接發送到網站訪客的瀏覽器。JSF 的工作方式有所不同:當使用者呼叫頁面(例如 https://nocodefunctions.com)時,後端應用程式僅產生該頁面的 html 並將其發送回。這稱為“伺服器端渲染”(SSR)。實際上,單頁應用程式可能需要使用者花費很長時間來檢索和載入構成整個應用程式的 JavaScript 檔案。這可能會導致糟糕的用戶體驗(必須等待首頁加載)和 SEO 問題。因此,Java 風格的伺服器端渲染重新流行起來,因為它被認為在速度和效能方面優於客戶端渲染。新的SSR 框架不斷湧現,需要習慣客戶端渲染的開發人員來處理和混合這兩種不同的邏輯。

2.Java很難嗎?

不。部署 JSF 應用程式需要什麼:
  • 應用程式本身。一個簡單的 JSF「hello world」應用程式可能只有 10KB 或更小。
  • 如果您需要更高品質的組件,可選的是 Primefaces(如上所述)。這是額外的 4.5 MB
現在在伺服器上運行它。為此,您需要:
  1. 在雲端或其他地方擁有伺服器。對於 Nocodefunctions (https://test.nocodefunctions.com) 的測試版本,我使用 Hetzner,在那裡我以每月 4.15 歐元的價格租用了一台 2 GB RAM 的裸機伺服器。我可以使用更少的 RAM,但我的應用程式提供了一些資料密集型服務,並且需要適合記憶體。nocodefunctions 的真實(非測試)版本在更大的伺服器(也與 Hetzner 一起)上運行,以支援更多用戶並行的資料密集型任務 - 每月費用不到 50 歐元。

  2. 您必須安裝 Java。這是適用於 Mac、Win 或 Linux 的小於 200 MB 的單一檔案下載,即使用於商業用途也是完全免費的。

  3. 您需要有一個 Java Web 伺服器來運行它。很多。就我個人而言,我使用 Payara Micro(社群版),它是免費的,單一下載檔案大小為 77MB。

  4. 啟動您的應用程式。

結論:想想 Java!

我覺得有些程式設計師認為 Python、Ruby、PHP、NodeJS + React...是啟動小型 Web 應用程式時的唯一選擇。但現在我希望他們在下一個專案中也考慮使用 Java + JSF。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION