Java Applets - 今天它是一个错误的选择吗?

Din*_*esh 12 javascript java applet

我有一些非平凡的计算代码需要应用于已下载到浏览器DOM中并从用户交互中捕获的数据.我不希望公开这段代码.我想知道是否:

  1. 编写Web服务并通过websocket或http与浏览器进行通信.权衡是交互速度(从光滑到差)和更高的流量成本.
  2. 编写一个Java Applet(签名隐藏代码),封装逻辑在页面中,让JavaScript与Java api交互.我在别处读到Java和JS引擎在某些情况下会陷入僵局.但是因为我只是计算,所以这不是问题.也许,在多核机器上,我可以使用更多的线程来分配我的工作.
  3. 用JavaScript编写.但JavaScript很难测试,而且这一切都在公众眼中.

诸如网络中的Java小程序的可用性以及其他几个方面的问答也令人沮丧.

我的问题是:Java applets是一种死技术.这些天甚至没有关于这个话题的问答!此外,Java可能并不总是与所有浏览器(台式机,平板电脑或移动设备)捆绑在一起?

是否有更好的方法来实现相同的隐藏代码,利用客户端CPU/RAM,最小化数据流量?

网页在Javascript/html5/css上.服务器只提供JSON/XML.数据包为10-20KB并经常更新.计算是昂贵的和客户端特定的,所以我真的想使用客户端来做所有这些.

非常感谢.

Mar*_*nik 17

我认为applet的最大缺点是它假设你在客户端机器上安装了JRE.这真的是一个可行的假设吗?当然,您也可以提供下载和安装JRE,但为什么只为进行一些计算而烦恼呢?我会问自己的另一个问题,您的客户可以是手机,平板电脑等吗?如果是这样,也许Java Script是一个更好的选择.

而另外5美分:)你提到'开启眼睛java脚本'你应该明白,保护你的计算代码的唯一真正方法是将计算放在服务器上.我的意思是,即使你有一个编译的二进制代码,java的程序集对于熟练的攻击者也很容易理解.你提到的混淆(它的混淆,而不是签名jar)使它稍微困难但仍然不是不可能的.

我在这里看到的唯一问题是,如果你有很多客户端同时运行计算,并且你将计算负担放在服务器上,它最终会崩溃.

只是我的想法,希望这会帮助你选择最好的方向......


Joh*_*iou 10

截至2015年9月,他们已经死了.使用applet有利有弊.但Chrome停止支持他们,因此使用它们只是不支持Chrome for desktop,而且涉及移动浏览器,哪些支持NPAPI?

官方oracle公告:

Chrome不再支持NPAPI(Java applet所需的技术)Web浏览器的Java插件依赖于跨平台插件架构NPAPI,已经被所有主流Web浏览器支持了十多年.谷歌Chrome版本45(计划于2015年9月发布)不再支持NPAPI,影响Silverlight,Java,Facebook Video和其他类似基于NPAPI的插件的插件.

Java应用程序通过Web浏览器提供为Web启动应用程序(启动后不与浏览器交互)或Java applet(可能与浏览器交互).此更改不会影响Web Start应用程序,它只会影响applet.

如果您在使用Chrome访问Java应用程序时遇到问题,Oracle建议您改用Internet Explorer(Windows)或Safari(Mac OS X).

编辑

Microsoft Edge也不支持它们.这是对已经死亡的Java Applets的又一次打击.

编辑2

来自Mozilla的公告

重要提示:新的64位版本的Firefox for Windows无法识别或支持此插件.有关详细信息,请参阅此Mozilla博客文章.

是的.Java小程序已经死了.

编辑3 Oracle正式使用Java 9 杀死它们

  • 小程序被甲骨文正式判处死刑:https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free (3认同)
  • 您的 **EDIT**、**EDIT 2** 和 **EDIT 3** 看起来像是“Slow Death”。好笑。:D (2认同)