【问题标题】:applet - browser doesn't show java applet小程序 - 浏览器不显示 java 小程序
【发布时间】:2018-02-16 13:12:35
【问题描述】:

我正在创建一个简单的小程序。当我通过终端appletviewer helloworld.html 运行应用程序时,我遵循“Java in 24h”中的教程。有效。我看到“点击我”按钮和“Hello World”,但是当我通过浏览器(Safari、Chrome、Firefox)打开 helloworld.html 时。我没有看到小程序。它只是有“结束线!” 我为我的浏览器启用了 java pluins,我正在使用 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>

【问题讨论】:

  • 这是java还是javascript?
  • Java 小程序已过时,浏览器已停止支持,现在正在阻止它们。而是从 AWT 迁移到 Swing,并至少使用 JAppletJFrame
  • 是的,现在没有理由使用小程序,它们被归类为有风险、危险和过时的,为什么要运行小程序?现在有更好的解决方案!
  • @TeoMihaila 我添加了一个答案,因为评论太多了

标签: java html applet


【解决方案1】:

这是一个评论,但我会尝试详细解释......

TL;DR

因为现在大部分浏览器都不运行java小程序所以不行,没办法绕过去,还好,不要打未来(2019年甚至现在,你在尝试使用一个工具过去)。

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

长答案

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

一些历史

Java 小程序是围绕1995 引入的,而在其他时候,Javascript 更年轻,缺乏库或标准等很多东西。为了解决这个问题,运行外部插件的能力被用来运行一些更强大和更复杂的解决方案,比如Flash 或小程序。

这使得一些非常强大的应用程序、游戏等成为可能,但是运行外部代码的容易性加上互联网在世界上的普及使得一些危险的工具落入了错误的人手中。

java 人试图定义允许使用 java 的力量的边界,维护一个沙盒,为用户提供安全性,而不对 java 语言设置硬限制,但即使是 Flash 插件,从一开始就设计为在浏览器中运行,有一些非常严重的security problems。想象一下 Java,一种设计用于在桌面上运行的语言,它肯定也有一些 hard problems

所以,解决方案是不够的,Sun(后来的 Oracle)和 Macromedia(后来的 Adob​​e)在这个问题上投入了大量的金钱和资源,但没有尽头,黑客们发现新的 bug 没有问题,而且人们没有让你的程序保持更新的文化,那时自动更新还不是一件事,所以现在想象一下,你是一家拥有其他大量资金并且需要为浏览器制作更复杂的应用程序的公司你会做什么? (不说公司名称)

投入两吨钱,然后...创建您自己的 tEcHnOlGy !!!,并将其称为 Microsoft Silverlight,同时,Google 人尝试了其他方法,称为 Dart,但有一个备用计划,在 Javascript 中对三吨钱的强烈反转,创建了 Javascript V8,这是一个非常体面且令人印象深刻的 Javascript 语言实现,与此同时,有些人正在努力在浏览器之间实现一些标准。

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

这有助于集中安全问题,增加了大量的库,这些库为复杂性不断增长的应用程序提供服务,进一步提升了我们现在使用的 Web 应用程序。慢慢地,浏览器开始支持所有这些旧技术,所以你不应该使用它们进行开发。

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

作为工程生命中的一切,视情况而定

对于需要确保在大量设备上运行的一般应用程序,使用 Web 应用程序,您可以使用 Java 作为后端,它作为服务器端语言非常强大,并且拥有大量库和框架,前端你可以使用 Vue、Angular、React 或任何适合你的库。

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

如果您只想在桌面环境中轻松更新可运行的 java,我建议您完全绕过浏览器并使用 JNLP which

允许使用托管在远程 Web 服务器上的资源在客户端桌面上启动应用程序

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

这些是一些选项,还有更多(完全原生、Windows 的 NetFramework、Qt...),但请再次不要使用小程序,它们是旧的、不安全的和已贬值的。

免责声明:对不起,我的英语不是我的主要语言,感谢任何更正。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 2017-10-13
    • 2013-05-29
    • 2010-09-17
    • 2015-01-18
    • 2013-12-13
    • 2023-04-01
    相关资源
    最近更新 更多