二、学习 JCEF

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 反而是"自虐"


相关推荐
cooldream20091 年前
JetBrains IDE中GPU进程(JCEF)重启问题(Too many restarts of GPU-process)解决方案
idea·gpu·jetbrains·jcef
penngo2 年前
基于JCEF实现网页资源性能分析
java·jcef
凌康ACG2 年前
JCEF中js与java交互、js与java相互调用
java·chrome·jcef
凌康ACG2 年前
java内嵌浏览器CEF-JAVA、jcef、java chrome
java·chrome·jcef