小程序 - 浏览器不显示 java 小程序

applet - browser doesn't show java applet

我正在创建一个简单的小程序。我遵循 "Java in 24h" 中的教程。当我 运行 通过终端 appletviewer helloworld.html 申请时。有效。我看到 "Click me" 按钮和 "Hello World",但是当我通过浏览器(Safari、Chrome、Firefox)打开 helloworld.html 时。我没有看到小程序。它只是 hava "end line!" 我为我的浏览器启用了 java 插件并且我正在使用 macosx

我的代码:

import javax.swing.*;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
//<applet code = Saluton width = 300 height = 300> </applet>
public class Saluton extends Applet {
    public void init() {
         Button buttons = new Button("Click me!");
         this.add(buttons);
    }
    public void paint(Graphics screen)
    {
        Graphics2D screen2D = (Graphics2D) screen;
        screen2D.drawString("Hello World",120,120);
    }
} 

和HTML文件

<head>
<title>Hello World!</title>
</head>
<body bgcolor = green text = "#FF00FF">
<center>
<applet 
    code = Saluton
    width = 300
    height = 150
>
<p>end line!</p>
</applet>
</center>
</body>
</html>

这本来是一个评论,但我会尽量详细解释...

TL;DR

不行是因为现在大多数浏览器都没有运行 java小程序,没办法绕过,也挺好的,不打未来了(2019年是平的现在,您正在尝试使用过去的工具)。

今天你不应该使用小程序,我再说一遍,你现在不应该使用小程序。讨论结束。

长答案

这段历史是基于古老的、轶事的,也许并不那么准确。

一些历史

java 小程序是围绕 1995, those where other times, Javascript was much more young, lacked so many things like libraries or standards. To fix this, the ability to run external plugins was utilized to run some more powerful and complex solutions, like Flash 或小程序引入的。

这允许一些非常强大的应用程序、游戏等,但是 运行 外部代码的简单性和互联网在世界上的普及让一些危险的工具落入了错误的人手中。

java 的人试图定义允许使用 java 的力量的边界,维护一个沙盒,为用户提供安全性,而不对 java 语言,但即使是从一开始就在浏览器中设计到 运行 的 Flash 插件,也有一些非常严重的 security problems. Imagine Java, a language designed to run on the desktop, sure it had some hard problems

因此,解决方案不足,Sun(后来的 Oracle)和 Macromedia(后来的 Adob​​e)投入了大量资金和资源来解决这个问题,但没有尽头,黑客们很容易找到新的漏洞,人们没有保持程序更新的文化,自动更新在当时还不是问题,所以现在想象一下,你是一家拥有其他大量资金的公司,需要为浏览器制作更复杂的应用程序怎么办你做? (不说公司名称)

投入两吨钱...创建您自己的技术!!!,并称之为 Microsoft Silverlight, at the same time, Google folks tried with other approach, called Dart, but with a backup plan, a strong inversion of three tons of money in Javascript, creating Javascript V8,这是 Java 脚本语言的一个非常体面和令人印象深刻的实现,同时一些人们正在努力在浏览器之间实现一些标准。

在这种情况发生的同时,开源也正在成为软件行业的主导力量,幸运的是,很多科技巨头都在炒作,所以有很多善意和合作的愿望,所以公司意识到,为什么我们要投入巨资来打造我们自己的私有工具,而不是改进 public 的工具?因此,所有技术都被放弃以支持更多标准(HTML5、ECMA6)。

这有助于集中安全问题,增加大量库来满足复杂性不断增加的应用程序,甚至进一步推动我们如今使用的 Web 应用程序。慢慢地,浏览器开始支持所有这些旧技术,因此您不应该在其中进行开发。

那么现在,相同的任务使用什么?

工程生活中的一切,视情况而定

对于一般的应用,你需要确保运行在大量的设备中,使用web应用,你可以使用Java作为后端,它真的很强大服务器端语言,有大量的库和框架,前端可以使用 Vue、Angular、React 或任何适合你的库。

如果您想要一些高级功能并访问一些非网络标准硬件,您还可以尝试一些允许使用一个代码库创建本机应用程序的工具,例如 react native 或 xamarin。

如果您只是想在桌面环境中实现 java 运行 易于更新,我建议您完全绕过浏览器并使用 JNLP which

allows an application to be launched on a client desktop by using resources that are hosted on a remote web server

这样你可以使用 JavaFx、Swing 或任何你喜欢的东西。

这些是一些选项,还有更多选项(完全原生,windows 的 NetFramework,Qt...)但是再次请不要使用小程序他们老了,没有安全感并且贬值了。

免责声明:对不起我的英语,它不是我的主要语言,欢迎任何纠正。