easyAi:純 Java 零依賴的 AI 框架,Java 後端不想養 Python 服務時,能讀到什麼、又讀不到什麼
一個跑了好幾年的 Spring Boot 後台,業務單位開口:能不能在裡面加一點圖像辨識,或是簡單的預測?團隊沒人寫 Python,部署清單已經夠長,沒人想再多養一台模型服務。
這個處境是我假設的,不是哪個真實專案。但我讀 easyAi 的時候,腦子裡放的就是這個人。
我讀過的範圍是這些:我讀了 GitHub 上的倉庫資料、Maven Central 的 maven-metadata.xml、pom.xml、README,加上我自己的一份原始碼目錄筆記。沒有 clone,沒有編譯,沒有跑過任何訓練或推論,也沒有任何效能或準確率數字。下面每一句「跑起來怎樣」,答案都是我不知道。
這個人的第一步多半是搜 Maven。easyAi 在 Maven Central 的座標長這樣:
1 | <dependency> |
maven-metadata.xml 寫 latest 與 release 都是 1.7.3,lastUpdated 是 20261015064317,也就是 2026-10-15。版本歷史裡最早看得到的是 1.2.9。
座標找到了,接下來要問的是那句最誘人的話。倉庫描述寫「easyAi是一款純用java實現的機器學習的框架」,README 寫「EasyAi無任何依賴,它是一個原生Java人工智能算法框架」。對一個不想再多一個執行環境的後台來說,這就是全部賣點。
所以我去翻 pom。整份 pom 我 grep 不到任何 <dependency> 或 <dependencies>,跟 README 的說法一致;編譯的 source 與 target 都是 1.8(pom 第 48 到 49 行)。
這兩條的涵蓋範圍很窄。pom 沒宣告依賴,證明的是宣告面乾淨;它沒證明專案能在你的 JDK 上乾淨編譯,也沒證明你的 Spring Boot 版本不會跟它的 Java 8 目標打架。最高支援到哪個 JDK,我讀不出來,只知道 target 是 1.8。
pom 裡還有一個讓我多看兩眼的地方:url 與 scm 都指向 gitee.com/dromara/easyAi(第 14 行與第 41 到 45 行)。所以 GitHub 這邊很可能是 Gitee 專案的鏡像,但這只是我從 pom 推論的,倉庫本身沒這樣寫,Gitee 那邊我也沒看過。這代表,我在 GitHub 上讀到的冷清,未必就是真實的冷清。
605 比 5
GitHub 的貢獻者共 6 人,查詢日 2026-11-04:thenk008 605 次,aoshiguchen 與 xiaoshuai125 各 5 次,fushoujiang 4 次,lifejwang11 2 次,yysxjz 1 次。
要注意的是,605 次的帳號是 thenk008,不是倉庫 owner lifejwang11,兩個帳號是不是同一個人,我不知道。可以確定的只有:這份提交紀錄裡,一個帳號的量是第二名的 121 倍。
這個 121 倍只是 605 除以 5,口徑是「GitHub 這邊的貢獻次數」。Gitee 那邊的提交紀錄我沒看過。
我把其他讀到的倉庫資料收進一張表,每個數字都綁著查詢日 2026-11-04:
| 項目 | 讀到的值 | 它能說明什麼 | 它說明不了什麼 |
|---|---|---|---|
| 星數/fork | 122/25 | 有人收藏過 | 有多少人在正式環境用 |
| open issues | 0 | GitHub 上沒有待處理的 issue | 專案沒問題,或問題都在 Gitee |
| Releases | 0 筆,只有 tag v1.7.3、v1.7.2、v1.7.1 | 版本是用 tag 標的 | 每版改了什麼,沒有 release notes 可對 |
| 最後 push | 2026-10-16 | 查詢日 19 天前還有動靜 | 之後會不會持續 |
| 授權/狀態 | Apache-2.0,未封存 | 商用條款是常見的那種 | 專案接下來的路線 |
| .java 檔數 | 253 個(預設分支 test) | 程式碼量不算少 | 品質、測試覆蓋 |
預設分支叫 test,別因為名字像測試用的分支就略過它。建立日是 2024-03-21。
筆記裡的目錄,和我讀不出來的
README 自己把定位比成:「EasyAi對於Java的用處,等同於在JavaWeb領域spring的意義一樣」。我不同意這個比法。Spring 是把物件接起來的容器,easyAi 照 README 列的內容,是一個演算法工具箱,兩者解的不是同一種問題。這是我的比喻判斷,不是 README 說的。
README 列出的功能是圖像目標檢測與人工智能客服兩個模組,另有深度學習、機器學習、強化學習、啟發式學習、矩陣運算這些底層工具。圖像部分的示例是自動販賣機視覺結算與圖像摳圖;人臉識別與智能客服,則是指向外部倉庫(seeFace、easy-ai-face、sayOrder)。所以那個後台如果想要的是人臉識別或客服,那一塊在別的倉庫,不在這個 repo 裡。
至於 253 個 .java 檔裡面有什麼,下面是我筆記整理的套件目錄,我只重驗了檔案總數與 pom 這兩項,其餘沒有逐項重驗:nerveCenter、nerveEntity、batchNerve、conv、resnet(含 FPN)、unet、yolo(FastYolo)、naturalLanguage、transFormer、rnnNerveCenter、recommend(GNN)、td、gameRobot、pso、matrixTools,以及 NMS、SoftNMS(1.7.3 新增)與 Watershed。
筆記裡還有幾條是讀簽名與原始碼判讀出來的,全部沒跑過:神經元是 Java 物件,靠 eventId 傳訊(SensoryNerve.postMessage);NerveManager 的建構子有十餘個參數;CudaMatrix 是介面,用 ServiceLoader 載入,筆記判讀這個倉庫裡沒有實作,找不到時退回 CPU。這幾條我當閱讀線索看,不當事實。尤其最後一條,退回 CPU 的行為我沒執行過,更不知道速度差多少。
README 還把入門資料指向 B 站影片、官網 myeasyai.cn 與 Gitee 上的 demo 倉庫,這三處我都沒讀。它另外寫入門與實戰教程「將於2027年春由清華大學出版社出版」,這是 README 的自述,出版社那端我沒查證。
回到那個後台
那個團隊今天的選項,我自己會這樣排:先不排進工期。
我的立場是,easyAi 現在最有價值的身分是一份可以讀的 Java 原始碼,而不是一個能放進交付清單的元件。理由很具體:貢獻次數集中在一個帳號,GitHub 上沒有 release notes,我沒有任何一個準確率或速度的數字,也沒看到任何能在自己資料上重現的結果。這四件事只要缺一件,我就不敢替一個真實後台背書。
會讓我改變想法的條件也很具體:有人拿自己的資料在隔離的小專案裡,把 demo 倉庫的範例跑出可重現的結果並公開;或是我在 Gitee 那邊看到 issue 有被回應的紀錄(我沒看過)。兩者出現任一,我就會把它從「讀」升級成「試」。
如果非要動手,我會拿一張真實的圖或一份真實的表,在獨立的 Maven 專案裡跑一次,跑不出來就停,連同 JDK 與 Spring Boot 版本一起記下來。這是我的計畫,我還沒做。
pom 裡沒有 dependency,只能證明它沒宣告。那個後台真正缺的,是有人替它跑過一次。










