【问题标题】:Which option is suitable to replace Java Applet?哪个选项适合替换 Java Applet?
【发布时间】:2013-12-22 01:35:08
【问题描述】:

我想替换当前需要使用客户端资源(即外部阅读器)并通过套接字与服务器通信的Java Applet。

原因: 1. 我有数千台使用这个 Java Applet 程序的客户端机器,其中大部分都运行过时的 JRE。当 Java Applet 程序更新/添加新功能时,所有客户端机器都需要更新最新的 JRE。

预期解决方案:

Java Applet 程序有望被基于 Web 的应用程序取代,该程序允许在客户端编译和运行源代码,这样新的基于 Web 的应用程序仍可以使用客户端的资源并通过套接字与服务器通信.

我可以使用 JavaScript 来实现吗?

非常感谢您对此问题的帮助/建议。谢谢!

【问题讨论】:

  • 您需要精确使用哪些客户端资源?
  • 顺便说一句。您最终可能会遇到成千上万的客户端运行过时的浏览器,而更新您的 web 应用程序将需要您更新所有机器......
  • 感谢您的回复 el.pescado!实际上,客户端应该连接到外部智能卡读卡器,我已经有 C++ DLL 库来控制智能卡读卡器。我希望 JavaScript 能够调用 C++ DLL 方法。
  • 之所以要替换Java Applet程序是因为这个程序是多年前构建的,而且源代码设计得不好,大部分部分都是硬编码的,所以真的很痛苦进行更新和维护。此外,现在我有不同类型的客户端程序,例如:java applet、Silverlight... 将来我想将它们全部迁移到可以独立访问平台和操作系统的基于 Web 的应用程序。

标签: java javascript html applet


【解决方案1】:

如果您想坚持使用 Java,那么另一种选择是使用我的 http://bck2brwsr.apidesign.org 项目。它的目标是创建可以在 100% 的现代浏览器中运行而无需安装任何插件的小型 Java。

Java 绑定到 HTML(通过 knockout - HTML5 的四个最流行的框架之一),这就是为什么人们可以用 Java 编写整个业务逻辑并通过 HTML 呈现它的原因。应该足以替换大部分小程序 UI。

除此之外,还有一个实验性 API 可以在 HTML 画布上呈现。人们使用它来编写在纯浏览器中运行的 Java 游戏。

有一种通过 JSON REST API 或 WebSockets 与服务器通信的简单方法。一个活生生的例子是here

【讨论】:

  • 谢谢雅罗斯拉夫!但对于我的问题,从网络浏览器访问智能卡是最重要的问题
【解决方案2】:

JavaScript 是一种在浏览器中进行评估的脚本语言。 我不会将其描述为编译和运行,但是是的,它确实意味着您可以在客户端中运行代码,并且通常用于创建在浏览器中运行的应用程序。

您可以使用数量惊人的框架来编写您的应用程序。查看TodoMVC 网站,了解使用多个不同框架创建的同一个 TODO 应用程序。

如果您来自 Java 小程序,那么 GWT 可能会很有趣。

如果您想让 JavaScript 客户端侦听来自服务器的消息,请查看 websockets

不过,智能卡读卡器会是个问题! 见Architectures to access Smart Card from a generic browser? Or: How to bridge the gap from browser to PC/SC stack?


顺便说一句:

过时 JRE 的真正问题不在于您的代码无法在旧 JRE 上运行,您可以使用 java 1.4 或 java 5 创建完美的小程序。您可能需要的任何库都可以与您的小程序一起部署。痛苦是一个安全问题。除了最新版本的 Java 插件外,其他任何东西都被积极利用,并将用户置于危险之中。有时,即使是最新版本也不安全。

【讨论】:

  • 感谢您的建议!我更喜欢 JavaScript 而不是 Java Applet,因为向前推进的大多数 Web 浏览器都会支持 HTML5 和 JavaScript,所以当我需要更新新版本时,它会节省很多精力。顺便说一句,我刚刚发现了一个有趣的东西,它可能对我有帮助,这里是:github.com/ubinity/webpcsc-firebreath
  • 老实说,需要智能卡访问权限似乎是继续使用当前小程序的最令人信服的理由之一。我不建议你这样做。我不知道所有的细节。如果我要根据您写的内容给出任何建议,那可能是坚持使用小程序更长时间。
  • 是的,你是对的!智能卡访问是重要的关注点。在做出任何迁移决定之前,我将使用 JavaScript 尝试所有解决方案。非常感谢您的帮助!
  • “有时候,即使是最新版本也不安全。” 更糟糕的是,偶尔会有新版本重新引入 以前已解决和修复的已知安全错误!浏览器制造商决定放弃对 Java 插件的支持也就不足为奇了。 Sun/Oracle 在这个问题上自相残杀。
【解决方案3】:

HTML 5.0 使 JavaScript 变得非常强大。 Here 是一个新元素列表,可用于访问各种资源,包括 local files、音频、视频、GPU 渲染(画布 + WebGL)和 GPU 计算(WebCL)。 Here 是您可以做的更多事情,包括数据库连接和网络。你甚至可以创建offline Javascript applications

jQuery 和jQuery layout 使健壮的GUI 开发变得更加容易。丰富的工具套件,例如 Google Closure 提供优化和编译器,用于提高性能并在开发过程的早期检测明显的错误。

W3 offers useful stats 就平均有多少用户可以访问哪些功能做出明智的决定。请注意,该列表中最烦人的可能是 IE8,因为它缺乏适当的 HTML 5.0 支持。

【讨论】:

  • 感谢 Domi 与我分享如此有用的信息!我将尝试使用 jQuery UI 从我未来的基于 Web 的应用程序中制作 GUI。
【解决方案4】:

试试socket.io

我认为这是您可以用来与客户端浏览器通信的最新技术。它也支持最新的浏览器和移动浏览器。

希望这会对你有所帮助。

【讨论】:

  • 感谢 Ipis!这对套接字连接非常有帮助。我试试看。
猜你喜欢
  • 2013-02-12
  • 2010-10-07
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 2010-11-05
相关资源
最近更新 更多