还在用SWT开发UI吗-用JCEF吧

4 篇文章 2 订阅
2 篇文章 0 订阅

目录

 

前言

一. SWT集成浏览器

二. SWT之外的尝试

1. JavaFX浏览器组件(WebView)

2. Jxbrowser

3. Jcef

三. 使用Jcef集成Chromium

1. 获取Jecf相关的jar包

2. 构建

总结


前言

    在工作中, 我们经常会开发一些Windows的桌面软件工具. 笔者使用的是编程语言是Java, 很自然就用了SWT/JFace这套框架进行开发. 实际跟Eclipse搭配使用起来是很爽的. 它可以在Eclipse进行UI界面编辑, 所见及所得, 大大提高了开发效率. 随着用户审美的提高, 大家已经不满足于只能显示表格类的可视化了, 要求要支持各种柱状图, 饼图, 曲线图等等. 显然, 在SWT/JFace框架上开发这个类图形显然有些吃力. 那么自然地就会想到用B/S架构来开发, 问题就在于工具软件在开发的时候, 需要调用一些本地地动态库(dll)去完成一些功能. 另一方面, 工具软件用B/S来开发显得有些重. 所以想法就此打住. 能不能内嵌个浏览器, 然后, 界面优化用前端那一套, 中间再做一个前端JS与Java交互数据的接口. 那么, 问题就可以得到很好的解决. 于是乎, 就这样入坑了...


一. SWT集成浏览器

关于SWT继承浏览器方面的内容. 可以到SWT FAQ看一下关于Browser部分. 我大概瞄了一眼, SWT支持4种样式的浏览器:

  1. SWT.NONE: 使用的是本地的渲染, 也就是IE 浏览器的内核, emmm...IE啊, 嗯, 果断不用
  2. SWT.WEBKIT: 使用的是WebKit, emmm, 也不用,要求用户安装Safari
  3. SWT.Mozilla: 需要装XULRunnner之类的驱动, 不幸的是,XULRunner已过时,Mozilla团队不再构建
  4. SWT.CHROMIUM: 从4.17版本开始, 就支持创建也非常简单, 而且用Chromium内核, 可以支持很多的前端框架. 笔者实际也写了demo, 需要使用JDK 8 64 bit 以上版本构建, 而且没有32 bit的版本, 因为SWT 从4.10开始就不支持32bit了, 感兴趣的可以关注我后面写一篇例子

emmm, 由于笔者需要用32bit的JDk去构建, 所以SWT的这个新特性就只能洒泪放弃了...

二. SWT之外的尝试

1. JavaFX浏览器组件(WebView)

这个东西想法很好, 起码JDK原生就支持, 但是遗憾的是它与GTK +版本存在一些兼容性问题, 由于它使用了旧版本的WebKitGTK, 它运行起来非常缓慢, 最简单的渲染Echart的曲线图, 都一卡一卡的, 让我一度想摔键盘

2. Jxbrowser

JxBrowser是一个让Java可以轻松集成Chrome浏览器的跨平台库, 确实好用, 但是收费. 可以破解, 笔者尝试了6.21版本的破解版, 好用是好用, 但一个电脑只供一个进程使用JxBrowser, 不能同时多个进程使用, 而且会偶尔出现不能使用. 内核加载也慢, 也可能是我程序的问题. 哎, 放弃...

3. Jcef

emmm, 笔者最终选择用它, 加载比较快, 而且可以支持32 bit JDK, 就它了!

三. 使用Jcef集成Chromium

1. 获取Jecf相关的jar包

关于如何获取jar包, 网上有很多教程, 大家可以参考这个: 比较简单的获取 JCEF 相关 jar 包的教程 非常详细的获取 JCEF 相关 jar 包的教程

2. 构建

基于IDEA构建的大家可以参考: 【java】本地客户端内嵌浏览器2 - chrome/chromium/cef/jcef

想一下, 可以去Echart官网看一下: https://echarts.apache.org/examples/zh/index.html

这些图马上就可以支持了, 是不是很香?


总结

通过一系列的调研与尝试, 最终锁定了Jcef去集成Chromium, 然后使用各种前端框架去优化UI, 比如VUE, Echart等等, 下篇文章将使用Eclipse来构建, 期待一下吧

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值