![]()
作者 | Olimpiu Pop
譯者 | 平川
針對“讓 2026 成為終端側的 Java 之年”這一號召,首個現代化 Java TUI 庫 TamboUI 應運而生。受 Ratatui(據推測是開發 Claude CLI 時使用的庫)的啟發,它承諾提供從低級終端繪制到高級 API 的全面支持,包括組件和事件處理。目前,該庫已發布 0.3.0 版本,并且已經被 Maven 和 Spring 等主要項目采用。
在一月初發表的博文中,Andersen 鼓勵 Java 社區使用 Java 而非其他編程語言來構建文本用戶界面(TUI)。他堅稱,在開發文本用戶界面方面,該語言的成熟度和功能使其至少與 Python、Rust 或 Go 一樣出色。
Andersen: 如今的不同之處不在于對終端的懷舊,而在于壓力。如今的開發者期待快速的反饋、簡便的流程,以及能夠融入現有工作環境的工具。
Andersen 指出,打包和分發曾是 Java 命令行界面(CLI)的一大障礙,但如今,得益于原生選項和更簡化的運行時部署方式,這些方面已經能滿足當今開發者對“低門檻”的期待。Java 成熟的庫和跨平臺可靠性完美契合 CLI 應用場景,這使得使用 Java 而非其他語言來構建新的終端工具成為必然之選。
Bluesky 上 一場關于 Claude Code CLI 的討論 激發了新建一個 Java TUI 庫的想法。隨后,一篇多人合作撰寫的博文 正式宣布推出 TamboUI 。Champeau 承諾,這款新發布的庫將把 Java 生態系統的 UI 構建能力從“原始”水平提升至現代化水平,提供更廣泛的功能,更貼近社區需求,并且具備更高層次的能力。它提供的 API 范圍將涵蓋從低級(在終端上“繪圖”這種最基本的特性)到高級(如組件、事件處理、CSS 等)的所有 API。
Champeau:[TamboUI] 為 Java 開發者提供的功能與他們在桌面應用程序(例如 JavaFX)中使用多年的功能相同,并且可在終端環境中實現。
為了進一步了解該庫的現狀及其開發動機,InfoQ 聯系了 Andersen 和 Champeau,請他們發表更多的看法。
InfoQ:為什么 Java 現在適合開發高效的 TUI 了?
Max Rydahl Andersen:分發本應簡單直觀,用戶不需要關心 JAR 文件、類路徑或 JVM 參數。命令行工具(CLI)應該像任何原生工具一樣,讓人感覺可以輕松地安裝和運行。像 JReleaser 這樣的工具,再結合 JBang ,只要是使用主流的打包生態系統,打包和分發完整的應用程序就會變得輕而易舉。這種體驗與人們熟悉的 npm/pip/pipx/npx/uvx 非常相似。
InfoQ:要讓使用 Java 開發終端用戶界面要變得更加友好,還需要做些什么?
Max Rydahl Andersen:從技術角度來看,我們需要現代化的終端 UI 庫,具備合理的布局和控件、支持鍵盤和鼠標操作、可以正確地處理 Unicode、在終端支持的情況下可以顯示圖片,以及良好的風格設計。
從文化層面來看,將 Java 置于虛構的基座之上,僅將其視為“企業級”或“微服務架構”的專屬工具,這種做法并沒有什么好處。Java 的絕大多數原生工具,包括編譯器、構建工具、依賴管理器和測試工具,都運行在終端環境中。然而,我們卻始終未能投入足夠的精力來優化這方面的使用體驗。
這兩個方面都需要改變。
InfoQ:您從其他生態系統中得到了什么啟發?
Champeau:我們最初的靈感來源于使用 Rust 編寫的 Ratatui。不錯,Ratatui 的實現層次仍然比較低,與 Java 開發者習慣的開發方式相比尤其如此。因此,我們很清楚地意識到,我們需要更進一步的抽象。我們借鑒了 Charm 、 Bubbletea 等其他框架的理念,同時也從 Java 桌面生態系統中汲取了靈感,融合了 Swing 和 JavaFX 的設計思想。簡而言之,我們的目標是提供 Java 開發者所熟悉的抽象層次,并為現代 Java 提供適配的 API。對我們而言,TamboUI 采用模塊化架構同樣至關重要,用戶可以自由選擇所需的抽象層級,從最低層到最高層都可以。我認為,這在 TUI 生態系統中相當獨特:其他框架往往自帶一個固定的模型,而我們則提供選項,讓你在需要時可以構建自己的模型。
InfoQ:那么,Java 適合用于構建命令行界面(CLI)嗎?
Champeau:毫無疑問!我想補充一點,如果你擔心啟動時間或分發問題,我們從一開始就考慮到了這一點:TamboUI 與 GraalVM 完全兼容,這讓你能夠從 Java 源代碼構建原生二進制文件。實際上,你可以發布一個約 10MB 的可執行文件,其中包含所需的一切,能夠立即啟動,并且內存占用更小。這是我們在將自己與 Go 等其他語言進行比較之前必須解決的最后一個問題。
這款新的 Java TUI 替代方案迅速被采納,并被集成到 Quarkus 生態系統 中用于實現響應式開發控制臺,同時被用于驅動 Maveniverse Pilot 的交互式構建日志儀表盤,并創建了基于控制臺的 Spring Initializr TUI 。另有一個 Spring 集成的示例介紹了 TamboUI 與 Spring Boot 的集成。此外,該公告在更廣泛的社區中也獲得了 積極的反饋。
https://www.infoq.com/news/2026/05/tamboui-java-tui/
聲明:本文由 InfoQ 翻譯,未經許可禁止轉載。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.