1️⃣ JCEF 到底是什么⁉️
JCEF = CEF + JNI + Java API
-
真正渲染网页的是 Chromium
-
JCEF 只是 Java 层的"壳"
-
多进程模型(browser / render / gpu)
2️⃣ JCEF 的典型架构✅
Java App (Swing / IDEA)
↓
JCEF Java API
↓ JNI
CEF (C++)
↓
Chromium (多进程)
这决定了:
-
启动慢一点(正常)
-
内存比 JavaFX WebView 高(正常)
-
但 网页兼容性几乎 100%
3️⃣JCEF 的三大核心对象(先记住)💭
| 对象 | 作用 |
|---|---|
CefApp |
整个 Chromium 进程 |
CefClient |
事件、回调管理 |
CefBrowser |
单个浏览器实例 |
一个进程一个
CefApp,一个窗口一个CefBrowser
4️⃣ maven依赖
org.cef:jcef 是什么❔(官方原始形态)
<dependency>
<groupId>org.cef</groupId>
<artifactId>jcef</artifactId>
<version>111.0.11</version>
</dependency>
✔ 它包含什么?
-
✅ Java 接口
-
❌ 不包含 Chromium 原生库
-
❌ 不做平台判断
-
❌ 不做自动解压
⚠️ 如果使用意味着需要:
-
自己下载 CEF 二进制
-
自己区分 Win / Mac / Linux
-
自己处理:
-
java.library.path -
jna.library.path -
启动参数
-
-
自己解决版本匹配问题
📌 这是 JetBrains / C++ 团队级别的用法
me.friwi:jcefmaven 是什么❔(社区封装)【idea中引用这个】
<dependency>
<groupId>me.friwi</groupId>
<artifactId>jcefmaven</artifactId>
<version>116.0.19</version>
</dependency>
✔ 它做了什么(非常重要)
| 能力 | 是否 |
|---|---|
| 包含 Chromium binaries | ✅ |
| 自动按平台下载 | ✅ |
| 自动解压 | ✅ |
| 自动设置 JNI 路径 | ✅ |
| 可直接运行 | ✅ |
| Maven/Gradle 友好 | ✅ |
👉 它是"能直接跑"的 JCEF
⚠️ 解决了 5 个致命痛点:
1️⃣ JCEF 原生库太麻烦
-
Windows:几十个 dll
-
macOS:.framework + codesign
-
Linux:so + rpath
👉 jcefmaven 全部封装
2️⃣ 版本匹配是地狱
Java JCEF 版本 ❌ Chromium 版本 → 直接崩溃
jcefmaven:
-
Java API
-
CEF
-
Chromium
三者是"锁死版本"的
3️⃣ IDEA / Maven 项目开箱即用
CefApp cefApp = CefApp.getInstance();
不用任何额外配置,直接跑。
4️⃣ 社区维护比官方更"工程化"
-
自动更新 Chromium
-
修复崩溃
-
示例齐全
5️⃣ 适合学习 & 中小型项目
📌 学习 JCEF 用 org.cef:jcef 反而是"自虐"