在被Jcef的时不时卡死折磨以后,我开始了翻译JxBrowser文档的旅程(非手工翻译)。html
接触了JxBrowser后,我被它强大的力量所折服,不得不说,比Jcef好太多,让我直接放弃了Jcef。最重要的一点,它不须要JCEF那么多花里胡哨的编译。(用做我的项目确实是个不错的选择)git
JxBrowser是一个跨平台的Java库,容许将基于Google Chromium的Web浏览器组件集成到Java Swing / AWT / JavaFX应用程序中。使用JxBrowser,您能够将轻量级Swing / JavaFX组件嵌入到Java应用程序中,以显示现代网页,支持最新的Web标准,如HTML5,CSS3,JavaScript等。github
这是他官网的描述:JxBrowser可使用HTML + CSS + JavaScript构建Java桌面应用程序UI。这意味着您可使用任何现代HTML5 UI工具包(如easyui,bootstrap)来构建用户界面友好的Java桌面应用程序。您能够解雇Swing/AWT开发人员,由于HTML + CSS + JavaScript开发人员能够构建Java应用程序的GUI,它大大下降了Java项目开发的成本。ajax
(Swing/AWT开发工程师:???)bootstrap
(注:以上翻译内容请自行对照谷歌翻译,不保证其真实性)浏览器
获取JxBrowser的最新版本:https://jxbrowser-support.teamdev.com/release-notes/2020/v6-24-3.html (英文看不懂?谷歌浏览器右键,翻译成中文)缓存
截止本文发布日期,6.x最新版本是2020年3月16号的6.24.3。服务器
相关资料都可在百度云盘获取(开发文档[英文原文档,带中文翻译的文档],带中文翻译的帮助文档(来源:https://jxbrowser.support.teamdev.com/support/solutions),所需的Jar(6.24.3),Demo。由于我最先接触的是6.23.1,因此带中文翻译的开发文档是6.23.1版本):https://pan.baidu.com/s/1P7gMI8-0Bi8aIDE1d4C0ng 提取码: k6xp --来自百度网盘超级会员v4的分享cookie
文档资料CSDN下载地址:https://download.csdn.net/download/xymmwap/12909790 (下载须要1积分,CSDN下载积分用不完的朋友能够去这里下载,让本人赚点积分,以备偶尔须要的下载。感谢!) 网络
开发文档用于写程序时查找类/方法的用法,帮助文档用于入门、进阶、删库跑路等。建议先把帮助文档看一遍,照着例子写一遍。
开源了我的项目供你们参考(需添加许可证信息才能正常运行,许可证怎样得到?百度一大堆。JxBrowser官网能够申请30天试用),功能和PowerOfLengedJcef差很少【含 脚本管理,代码模板生成器,JxBrowser帮助文档】:
github:https://github.com/lieyanfeimao/PowerOfLongedJxBrowser.git
码云:https://gitee.com/edadmin/PowerOfLongedJxBrowser.git
由于JxBrowser已经提供了详细的Demo,这里我没有像Jcef同样去写个Demo工程了。
本文使用的Jxbrowser版本是:jxbrowser-6.24.3
由于优秀,因此它并难免费,请自行想办法获取许可证。若是它能帮到你,而你也资金充裕,建议购买正版。(钱是个好东西)
优势:
完美支持各大视频网站的视频播放,页面流畅不卡死(不能说百分百),支持Java与JS交互,支持ajax数据监听。总之,牛的一匹。
我很喜欢这种JAVA和JS交互的方式,例如:var a=Java.test();
瑕疵:
我的以为不友好的地方,对iframe页面操做不甚方便,使用开发者工具[Debug模式]须要链接谷歌服务器(由于防火墙在,连不上),开发者工具很怪,操做没谷歌浏览器的方便。Jcef在这两点上作的就比较好。
另外,通过长时间沉淀,JxBrowser会在C盘下会生成大量缓存/数据文件,很容易撑爆磁盘。请参照帮助文档 文献资料(Documentation)>浏览器引擎(Browser Engine)>清除缓存(Clearing Cache) 进行处理
主要类介绍
先大概介绍一下经常使用的类,省得写代码的时候一脸懵逼(讲我用过的吧)。相关类具体的说明请查看开发文档。
Browser:浏览器主类,处理浏览器的相关操做,如执行JS、监听事件等等,是一个很是重要的类。当你对浏览器作一些设置,如监听事件、前进后退等,可查阅此类的文档。它位于:com.teamdev.jxbrowser.chromium
BrowserContext:描述浏览器实例的上下文。提供指向将存储Chromium数据文件(如cookie,历史记录,缓存)的目录的路径,并提供对上下文级别功能(如NetworkService)的访问。具备相同BrowserContext的两个Browser实例将共享会话cookie和缓存文件。这个类我在同时启动多个应用时用到,由于各个应用不能共用同一个数据文件目录,因此,我用它为应用分配不一样的数据文件目录。
BrowserPreferences:浏览器实例和全局库首选项。设置浏览器的启动参数等。通常在程序启动时设置,也可使用Browser的setPreferences()方法设置
NetworkService:提供对网络级功能的访问。这个类颇有用,能够用它实现对网络请求的操做。我试了下,用了它后程序比较不稳定。
JS开头的类:对JS的相关处理
com.teamdev.jxbrowser.chromium:监听器,事件
com.teamdev.jxbrowser.chromium.dom:操做DOM对象的接口
com.teamdev.jxbrowser.chromium.swing:用于swing下的一些handler实现类,例如监听网页返回数据使用的是DefaultNetworkDelegate
官方Demo里面已经有了各类骚操做的用法,这里我只说些经常使用的和一些踩的坑。(官方Demo在哪?在百度云盘里)