AI News HubLIVE
站內改寫2 分鐘閱讀

經典Java RSS閱讀器2026年無法執行,我用AI將其重構為Web版

一位開發者嘗試用AI(Claude Code)將已停止維護的Java桌面RSS閱讀器RSSOwl重構為Web應用。他發現大部分UI可以快速遷移,但由於AI訓練資料截止於Vaadin 25釋出前,生成了大量不存在的API程式碼。透過使用MCP伺服器獲取最新文件,以及手動對比原版行為,最終完成了多使用者版本,但部分功能(如可插拔選單、嵌入式瀏覽器)無法實現。

來源Hacker News AI作者: spicyroman

一位開發者最近分享了他如何利用AI將一個經典的Java桌面RSS閱讀器RSSOwl重構為現代Web應用的經驗。RSSOwl以其優雅的三欄佈局(左側饋送樹、右上可排序標題表、下方文章閱讀器)而聞名,但它的官方Mac版本是32位Carbon二進位制檔案,無法在2026年的Mac上執行——甚至Rosetta也無法翻譯32位程式碼。雖然有一個社群維護的64位分支RSSOwlnix可以在Rosetta下執行,但開發者決定更進一步:用AI將整個介面移植到瀏覽器中,使用Vaadin 25(Java服務端UI框架)和Claude Code(Anthropic的AI編碼助手)。

遷移過程出人意料地順利:標題表格的核心功能(排序、右鍵選單、行顏色)幾乎可以自動轉換。例如,原來需要306行的NewsComparator和467行的NewsTableLabelProvider,現在只需約10行的Grid列比較器和10行CSS。Vaadin 25的Signals機制讓主從檢視聯動變得優雅——無需手動監聽器,只需一個ValueSignal即可。但AI也帶來了不少麻煩:由於它訓練資料的截止日期早於Vaadin 25釋出,它生成的程式碼使用了不存在的API(如已棄用的建構函式和舊式監聽器)。這些程式碼乍看正確,但無法編譯。解決方法是使用Vaadin提供的MCP伺服器,讓AI直接查詢最新文件。即便如此,仍有一些邊緣問題:例如,文件中宣告的自定義CSS屬性 --vaadin-grid-cell-background 在Aura主題下無效,必須用 !important 覆蓋。AI還默默地建立了與原始RSSOwl不同的饋送類別,並編造了文章保留數量限制——直到開發者查閱原始原始碼才糾正為預設每饋送200篇。

有些功能根本無法遷移。Eclipse的可插拔選單體系結構(透過擴充套件登錄檔新增選單項)在Web上不存在;嵌入式瀏覽器被現代網站的X-Frame-Options和CSP頭阻止;與Google Reader的同步功能因後者已於2013年關閉而失效。對於自定義行顏色與選中高亮的組合,CSS部分也無法完美搭配,最終只能妥協。

儘管如此,開發者得到了一個可用的多使用者饋送閱讀器,包含登入、全文搜尋、過濾器、標籤和快捷鍵。AI快速構建了骨架(80%),但剩下的20%——確保與原版行為一致——需要開發者親自驗證和調整。對於其他想嘗試類似專案的人,他的建議是:AI擅長快速復現結構,但每個完整性缺口都需要人工把關,尤其是那些可能被忽視的細微差別。