applet - 浏览器不显示java applet

时间:2017-09-07 17:51:05

标签: java html applet

我创建了一个简单的小程序。我在24小时内按照" Java中的教程进行操作。 。当我通过终端appletviewer helloworld.html运行申请时。有效。我看到"点击我"按钮和" Hello World"但是当我通过浏览器(Safari,Chrome,Firefox)打开helloworld.html时。我没有看到applet。它只是hava"终点线!" 我为我的浏览器启用了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>

1 个答案:

答案 0 :(得分:2)

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

TL; DR

这是行不通的,因为如今大多数浏览器都没有运行Java applet,没有办法解决,这很好,不要与未来抗争(2019年甚至是现在,您都在尝试使用一种工具过去)。

这天,您不应该使用小程序,这天您不应该使用小程序。讨论结束。

长答案

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

一些历史

Java小程序是在1995周围引入的,而在其他时候,Javascript还很年轻,缺少诸如库或标准之类的东西。为了解决此问题,利用了运行外部插件的功能来运行一些更强大,更复杂的解决方案,例如Flash或applet。

这允许一些真正强大的应用程序,游戏等,但是运行外部代码的便捷性以及互联网在世界范围内的普及,为错误的人提供了一些危险的工具。

Java专家们试图定义边界,以允许使用Java的功能来维护沙盒,该沙盒可为用户提供安全性,而没有对Java语言设置硬限制,但即使是Flash插件,从一开始就设计到在浏览器中运行时,出现了一些非常严重的security problems。想象一下Java,它是一种旨在在桌面上运行的语言,请确保它也有一些hard problems

因此,解决方案还不够,Sun(后来的Oracle)和Macromedia(后来的Adobe)投入了大量资金和资源来解决问题,但是没有尽头,黑客毫无困难地发现新的错误,并且人们没有保持程序更新的文化,那时就没有自动更新了,所以现在想象,您是一家拥有大量资金的公司,并且需要为浏览器开发更复杂的应用程序? (不说公司名称)

扔掉两吨钱,然后……使你感到恐惧,并称其为Microsoft Silverlight,与此同时,Google员工尝试了另一种方法,称为Dart,但一个备份计划,用Javascript大量反转三吨钱,创建Javascript V8,这是一种非常体面且令人印象深刻的Javascript语言实现,而与此同时,有些人正在努力实现浏览器之间的某些标准。

在发生这种情况的同时,开源也正成为软件行业的主导力量,幸运的是,许多大技术都在炒作中,所以有很多良好的意愿和合作愿望,因此公司意识到,为什么我们要投入巨资建立自己的私有工具,而不是改进公共工具呢?因此,所有技术都被抛弃了,取而代之的是更多的标准(HTML5,ECMA6)。

这有助于集中化安全性问题,增加了大量的库来满足日益复杂的应用程序的需求,从而进一步增强了当今使用的Web应用程序。浏览器已经慢慢为所有这些旧技术提供了支持,因此您不应该在其中进行开发。

那么,如今,用于相同任务的是什么?

作为工程生活中的一切,取决于

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

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

如果您只想在桌面环境中执行易于更新的Java可运行程序,我建议您完全绕过浏览器并使用JNLP

  

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

通过这种方式,您可以使用JavaFx,Swing或任何您喜欢的东西。

这些是一些选择,还有更多选择(完整的本机,用于Windows的NetFramework,Qt ...),但请再次不要使用applet ,它们是旧的,不安全的并且已贬值。< / p>

免责声明:对不起,我的英语,这不是我的主要语言,我们欢迎您进行更正。