重新使用 Applet 现有代码的选项?

Options to re-using an Applet's existing code?

在围绕一个 64,839 行小程序的产品排名引擎项目进行了五年半的全职工作后,浏览器公司认为放弃小程序是合适的。

在这一点上我没有资格将小程序转换为另一种语言(除非我获得巨额资金注入以聘请程序员团队)。我的伴侣不会再支持我两年。

我知道问题很模糊,我应该跟上最新的技术,但是我有 14 年的慢性耳痛影响记忆力和注意力,所以编程已经够困难了,而不是试图跟上软件的最新发展也是如此。我征求意见的原因是我不想再搞砸了。

问题 1:我的理解是 Java Web Start 启动了应用程序,但它无法再与 JSF 网页 (JSF2.0) 通信。有什么办法可以解决这个问题吗?

问题 2:除了重新编码整个事情之外,任何人都可以提出任何其他选择吗?

问题 3:小程序是否有可能被更改为使用最新的插件格式,或者它们是否永远消失了?有人知道这方面的内部信息吗?

小程序需求概览:

该小程序允许用户根据自己的特定需要自定义部分或全部产品排名标准,这些标准由知识渊博的专家小组预先设定。标准通过图形(自定义绘制的 jPanels)存储和编辑。

可以使用鼠标完全更改排名标准(以更改图形形状),但如果用户愿意,也可以使用键盘输入一些值。定制后,小程序将用于将更改提交给排名引擎服务器。

它还用于允许第三方专家更改排名标准以创建他们自己的产品使用类别排名标准。 第三方专家然后可以在他们自己的网站上放置链接,允许用户使用第三方专家自己的排名标准对产品进行排名。这允许任何人创建自己的排名标准以供他人使用。

该小程序使用了一个插件 bean,该插件 bean 也用在独立的 Java 编辑器应用程序中,用于从头开始创建产品使用排名标准文件(编辑器有 77,710 行代码,虽然有 61,257其中几行是小程序中也使用的插件)。这意味着很可能还必须转换编辑器,因为两者有着千丝万缕的联系。插件基本上就是小程序,也是编辑器。

该插件可以捕获、编辑和存储几乎任何人脑可以排名的排名标准。多亏了图表,它可以使用大脑使用的任何属性,而我们没有正式的测量系统;这就是为什么小程序这么大。

你的问题对于 Stack Overflow 来说可能过于宽泛,但我会给出一个简短的答复。

Java 网络启动

Java Web Start is probably the best route for you. This technology is basically a convenient way for a user to obtain, install, and run a Java desktop app. The web browser is only used to initially download a small XML file describing your app and where to get the app. The Java Network Launching Protocol (JNLP) defines these pieces of information stored in that XML file. Your app will be downloaded from a server, and saved to the local machine. A Java Runtime Environment (JRE) 如果需要作为过程的一部分,可以下载和安装。

默认情况下,该应用程序在类似于 Java 小程序的安全沙箱中运行。但是您可以签署您的应用程序并定义安全协议以突破其中的一些限制,包括建立网络连接。

您的大部分程序将保持不变。该应用程序在 JVM 中仍然是纯 Java、运行。您需要进行一些重新编程才能成为桌面应用程序,而不是打包为 Applet。而且您必须了解如何放宽这些沙盒限制。作为一个成熟的应用程序,您的应用程序将拥有自己的菜单栏,因此您可能想利用它。但是您的应用程序的内容将保持不变。

多年来,Sun 和 Oracle 一直致力于改进 Java Web Start。不幸的是,在 Java-on-the-desktop 失去了太多的思想份额之后,它来得太晚了。而 Swing 从未得到它迫切需要的大修。所以 Java Web Start 从未大放异彩。但是 Java Web Start 确实像宣传的那样工作,所以试一试吧。

虽然几年前就存在一些安全问题,但我相信它们早已得到解决。 Java 的许多臭名昭著的安全问题主要涉及在浏览器和 Java JRE 之间桥接的 Web 浏览器插件;这些问题不会影响 Java Web Start(尽管您应该自己研究以确认)。

对于一般的 public,Java Web Start 可能对新的、匿名的和缺乏动力的用户提出太多要求。对于具有热切客户用户群的商业产品,它可能是您的完美解决方案。我建议你做更多的研究,阅读包含网络示例的 Wikipedia page, study the Oracle technology page, look at the Tutorial, read this overview by John Zukowski(与 time.nist.gov 建立套接字连接),等等。

瓦丁

新千年的Vaadin framework is an open-source free-of-cost professional user-interface development framework that uses pure Java to run your app on a server in a Java Servlet web container while automatically generating a user-interface using standard web technologies (HTTP, HTML, CSS, JavaScript, GWT, WebSocket, etc.) for presentation within a regular web browser (Firefox, Chrome, Safari, IE, Edge, etc.). As a graybeard, I think of Vaadin as an X Window System:用户在本地计算机上与屏幕小部件交互,但应用程序的业务逻辑在服务器上执行,并且服务器正在更新远程UI 作为该业务逻辑执行的结果。

Vaadin 不是 又一个网络模板系统。相反,您的应用程序是用纯 Java 编写的。您无需学习上面列出的网络技术的字母汤。 Vaadin 会自动神奇地为您处理。你在 Java 中说“我想要一个标签,然后是一个字段和一个按钮”,Vaadin 使它们出现在网络浏览器中。

使用 Vaadin 可以让您保留业务逻辑部分的 Java 代码。但是您需要重新编写用户界面部分以使用 Vaadin 小部件而不是 Swing 小部件。这不会非常困难,因为 Vaadin 受到 Swing 的一般风格的启发,定义由布局管理器管理的布局,您可以在其中放置各种小部件(字段、标签、按钮等)。

Vaadin 可以制作非常专业的面向业务的应用程序,感觉就像桌面业务应用程序一样。提示:我更喜欢 Reindeer theme for business apps over the newer Valo theme.

但是您在 Swing 小程序中提到了某种自由形式的绘图 canvas。这可能是症结所在。我不知道在 Vaadin 应用程序中使用这样的小部件。我并不是说没有这样的事情,我只是不知道有没有。有一些可能有用的滑块小部件,但我不太清楚您在这方面的需求。