求Java富客户端程序内嵌HTML5浏览器方案

zoeg 2013-11-20 11:13:32
加精
总的目标是通过一个java的富客户端程序,在一个窗口内显示HTML5页面,其实就是一个普通的B/S企业应用,但是由于应用非常特殊,需要富客户端进行一些特殊的措施,比如:必须全屏,禁止用户看到或者操作到HTML5页面以外的窗口或功能,禁止被关闭,总是保持打开,本地设备调用等等等等,所以传统的浏览器是做不到了!

要求如下(For windows,如果能跨平台是最好了):
1、免安装,可移动,易部署;
2、能够运行Flash;
3、能够运行Applet;
4、符合HTML5;
5、最好是在Java程序中嵌入,不想引入新的开发语言。

我个人针对这个问题进行了如下功课:
1、JavaFX 的WebView组件,这个方案按说软接口是最合适不过的,纯java,html5。可惜硬伤是flash不支持,甚至自家的applet也不支持(可能是我不懂弄),但是最要命的是卡的让你崩溃,页面渲染尤其是字体难看的要死,所以其他的方面根本就没有继续测试的必要了;
2、SWT Browser -style MOZILLA,这个方案似乎是几乎接近我的要求了,绿色版,包括xulrunner及其flash插件,都是免安装。applet的话可以运行,只是有个小小的问题一直解决不了:applet运行时jre必须是安装版的,而且,加载富客户端的jre必须就是这个安装版的jre,否则程序崩溃。不过这个方案最要命的是“断货”啊,只支持到xulrunner1.9.2。再往后就不更新了,当时的这个版本对HTML5的支持还比较差,以后项目上万一遇到问题很麻烦,没法与时俱进;
3、SWT Browser -style WEBKIT,这个方案其实是我最想要的,但是我测试总也跑不起来(Mac OS X没问题),windwos上安装了Safari也没能让我看到它运行起来,这个方案应该是比MOZILLA的方案优势是eclipse放弃了MOZILLA现在支持WEBKIT。让我郁闷的是eclipse内部的浏览器设置成webkit是可以的,而我直接通过SWT加载却启动不了,错误大概是Fail to load swt-webkit Library;
4、SWT Browser -style NONE,这个方案怎么说呢,应该是我最靠谱,最有把握的方案。在windows上它其实就是嵌入IE,但是IE这个坑货一直到IE9才开始支持HTML5,貌似到IE11才比较不错,坑就坑在IE是跟着操作系统走的,我不能独立打包,绿色版就别谈了,跨平台就更别提了,不过跨平台倒不是我主要考虑的方向,只是部署上要求安装jre和指定的IE版本总是如鲠在喉。不过呢,这个方案除了部署上的要求达不到,有点麻烦,其他的软性的功能全部都OK。

如上所述,我做了好多功课,一直没能达到我理想的目标,在此恳求各位高手不吝赐教。
C++的方案也考虑过,不过自己不会C++,公司也不想引入新的开发语言,所以一直没有涉及。另外,方案4除了部署差强人意以外,各方面都符合要求,所以不打算考虑其他语言。当然方案中肯定都会有使用其他语言编写的部分,只是希望我们需要动手的地方都是java!
...全文
18670 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljy 2015-10-23
  • 打赏
  • 举报
回复
我也碰到了和楼主一样的问题。我们做了一套B/S触摸屏程序,客户端要求:1、系统全屏。2、只能打开指定的页面。3、只支持输入数字。4、通过读卡器读取身份证、IC卡信息。 我现在已经做到了:通过VB6调用webbrowser调用IE11,已经符合客户要求。但是我们触摸屏页面非常炫,IE11调用和chrome调用效果差别非常大,能通过chrome调用将会是非常完美的。我现在就想怎么通过java调用windows系统自带的最新版chrome?楼主是否已经找到了完整的解决方法,如果能帮助我提供一下解决办法,我将会非常感激不尽。QQ:108004843
Zemo 2014-09-28
  • 打赏
  • 举报
回复
我们要相对简单一点,只是为了解决浏览器版本不统一的问题。想做一个可以在windows下运行的exe,来访问自己的项目,所以打算内嵌一个chrome浏览器,然后把主页设置为我们当项目,把地址栏隐藏了就好。 想请教一下楼主...
hotzz9 2014-09-10
  • 打赏
  • 举报
回复
楼主目前采用什么方案
神鬼衣 2014-06-02
  • 打赏
  • 举报
回复
jdic可以看一下,行不
5230chen 2014-05-24
  • 打赏
  • 举报
回复
请问楼主后来解决了吗 我原本的项目是用 DJNativeSwing-SWT 现在想内嵌谷歌浏览器不知道怎么内嵌
B_Lee 2013-11-27
  • 打赏
  • 举报
回复
nodewebkit 你了解一下 我觉得这个完全可以满足要求.
fendou123321 2013-11-25
  • 打赏
  • 举报
回复
引用 14 楼 jdgdf566 的回复:
那我就不知道了。firefox、chrome是开源的。
啊啊
fendou123321 2013-11-25
  • 打赏
  • 举报
回复
[q=引用 14 楼 jdgdf566 的回复:] 那我就不知道了。firefox、chrome是开源的。[/quote]
jdgdf566 2013-11-24
  • 打赏
  • 举报
回复
应当清楚,不同的技术体系的东西放在一起是应该避免的。作为技术人员,必须比别人更清楚这一点。 项目,在需求分析、确定功能的阶段,很容易出现这样一个情况,那就是客户觉得原来的系统,某个部分还是没有问题的。这个时候,业务人员不应该把客户的位置推高让客户去决定。 JavaFX就全盘JavaFX,应该告诉客户,flash不能继续用了,必须被作为一个完整解决方案的另一个方案代替。 再一个就是,富客户端方案,在目前的产业条件大环境下,不要轻易采用。富客户端方案是一种大一统的方案。目前还在发展。富客户端方案提供了把网页和应用程序整合在一起的方案。但是至少,如果不是全盘采用某一种技术体系,就更复杂。相比而言web是专注与HTML页面的,application专注desktop,不管承不承认,在架构上,比JavaFX、Flex、Silverlight要轻量。
jdgdf566 2013-11-24
  • 打赏
  • 举报
回复
那我就不知道了。firefox、chrome是开源的。
zoeg 2013-11-24
  • 打赏
  • 举报
回复
引用 12 楼 jdgdf566 的回复:
应当清楚,不同的技术体系的东西放在一起是应该避免的。作为技术人员,必须比别人更清楚这一点。 项目,在需求分析、确定功能的阶段,很容易出现这样一个情况,那就是客户觉得原来的系统,某个部分还是没有问题的。这个时候,业务人员不应该把客户的位置推高让客户去决定。 JavaFX就全盘JavaFX,应该告诉客户,flash不能继续用了,必须被作为一个完整解决方案的另一个方案代替。 再一个就是,富客户端方案,在目前的产业条件大环境下,不要轻易采用。富客户端方案是一种大一统的方案。目前还在发展。富客户端方案提供了把网页和应用程序整合在一起的方案。但是至少,如果不是全盘采用某一种技术体系,就更复杂。相比而言web是专注与HTML页面的,application专注desktop,不管承不承认,在架构上,比JavaFX、Flex、Silverlight要轻量。
银行还在用IE6,但是嫌你系统太难看,换其他浏览器没有厂商维护不给安装。 当然我并没有要反驳你的意思,我同意客户引导在项目中的重要性,只不过现实并没有这么理想! 而且我要找的这个东西并不是客户的意思,而是项目的特殊性决定的,我们并不打算用flash开发,但是现有的flash资源,比如做好的广告,你得允许人家投放吧!
javabiggod 2013-11-21
  • 打赏
  • 举报
回复
可以参考开源的 DJNativeSwing-SWT
  • 打赏
  • 举报
回复
那个啥 flex呢
teemai 2013-11-20
  • 打赏
  • 举报
回复
我之前做的类似这样的需求,不过没楼主的要求苛刻。 我们是指定的windows平台,所以基于firefox,限制浏览器里所有的菜单操作。 开机启动服务器,打开firefox全屏后就完了。我们的系统上面还有一个关机按钮。点关机就关机。
  • 打赏
  • 举报
回复
方案3我已经实现过了,但由于版权问题,我不能提供你源码。Fail to load swt-webkit Library是没有安装好苹果浏览器。其实这个也有一个bug,就是在window下苹果浏览器已经不升级了。
cgw20088 2013-11-20
  • 打赏
  • 举报
回复
那个啥 flex呢
zoeg 2013-11-20
  • 打赏
  • 举报
回复
新增一个方案 5、JCEF Chrome的嵌入式框架,似乎非常好,正在研究怎么绿化,主要是flash插件和applet执行环境的绿化,CEF本身应该问题不大,有搞过CEF的童鞋指导下怎么把插件绿化进去!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧