将 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 想摆脱任何小程序依赖。
但是如何呢?
正确的方法是什么?
该指南并没有真正说明,因此我有一些问题:
- 例如:如何替换
applet.getAppletContext()
的用法及其相关用法?
- 指南说我应该在我的 "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 作为某种替代品。
我将迁移一个 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 想摆脱任何小程序依赖。
但是如何呢?
正确的方法是什么?
该指南并没有真正说明,因此我有一些问题:
- 例如:如何替换
applet.getAppletContext()
的用法及其相关用法? - 指南说我应该在我的 "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 作为某种替代品。