将 Java Applet 迁移到 Java WebStart (JNLP)

Migrating Java Applet to Java WebStart (JNLP)

我将迁移一个 Java Applet 作为 Java Web 启动应用程序通过 JNLP 启动,并且 运行 迁移到某些 troubles/missunderstandings ...
我得到的资源之一是:6 Migrating Java Applets to Java Web Start and JNLP:

但是让我们开始吧:

当前该应用程序是一个小程序 (JApplet),过去是通过嵌入到一个 HTML 中启动的,小程序标签引用了 JNLP。

既然所有浏览器都放弃了小程序支持,我应该运行它作为Java Web Start。

由于无法加载资源(JAR 文件),简单地调用相同的 JNLP 失败。
这是通过向 JNLP 文件添加代码库属性来修复的第一步。

Applet 在浏览器之外启动。

但现在困难的部分是......我 should/would 想摆脱任何小程序依赖。

但是如何呢?
正确的方法是什么?
该指南并没有真正说明,因此我有一些问题:

  1. 例如:如何替换 applet.getAppletContext() 的用法及其相关用法?
  2. 指南说我应该在我的 "main" 小程序 class 中放置一个静态主程序。但是我该怎么做呢?

我尝试 & 以不同的方式启动小程序,但之后我的小程序就不再启动了。

如何真正替换它?
什么应该是应用程序而不是小程序的正确包装器?
如何开始?

是否有更详尽的 guide/sample/tutorial 可以跟进一个真实的例子?

您的应用程序的替代容器可以是 JFrame。
迁移路径是将实际 UI 代码重构(移动)到 JPanel 中。可以将其放入 JApplet 中,或者对于 Java WebStart 应用程序将其放入 JFrame 中。 (在那段时间你可以有一个混合应用程序)。

<!-- main in MyApplication -->
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            public void run() {
                JFrame frame = new JFrame();
                frame.setTitle("MyApplication via JWS");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                // add here the real UI to the frame: setUpGUI(frame);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }

<!-- Init() in MyApplication extends JApplet -->

    @Override
    public void init() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                // add here the real UI to the applet: setUpGUI(MyApplication.this);
            }
        });
    }

注:EventQueue。

根据问题1:
一些 Applet specifica 必须以不同的方式替换。
在这里找到基础知识:https://docs.oracle.com/javase/9/deploy/jnlp-api-examples.htm
例如:对于 AppletContext,有 BasicService 作为某种替代品。