applet - 浏览器不显示java applet

问题描述 投票:1回答:1

我正在创建一个简单的小程序。我按照“24小时内的Java”教程。当我运行终端appletviewer helloworld.html申请时。有效。我看到“点击我”按钮和“Hello World”,但是当我通过浏览器(Safari,Chrome,Firefox)打开helloworld.html时。我没看到小程序。它只是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>
java html applet
1个回答
2
投票

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

TL;DR

它没有用,因为现在大多数浏览器都没有运行java applet,没有办法解决它,它很好,不打未来(2019年就是现在,你试图使用过去的工具)。

这几天你不应该使用applet,我再说一遍,你今天不应该使用applet。讨论结束。

Long answer

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

Some history

java小程序是围绕1995引入的,其他时候,Javascript更年轻,缺少像图书馆或标准这么多的东西。为了解决这个问题,运行外部插件的能力被用来运行一些更强大和复杂的解决方案,比如Flash或applets。

这允许一些非常强大的应用程序,游戏等等,但是运行外部代码的容易性加上世界上互联网的普及给错误的人提供了一些危险的工具。

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

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

抛出两吨钱,然后......再说一次,并称之为Microsoft Silverlight,与此同时,谷歌人尝试采用其他方式,称为Dart,但有一个备用计划,三吨的强大倒置Javascript中的钱,创建Javascript V8,一个非常体面和令人印象深刻的Javascript语言实现,同时有些人正在争取在浏览器之间达到一些标准。

虽然这种情况正在发生,但开源也成为软件行业的主导力量,幸运的是很多大技术都在大肆宣传中,所以有很多善意和合作的愿望,所以公司意识到,为什么呢?我们投入了数十亿美元来装箱我们自己的私人工具,而不是改善公共工具?所以所有的技术都被放弃了,而不是更多的标准(HTML5,ECMA6)。

这有助于集中安全问题,增加了大量的库,这些库为日益复杂的应用程序提供了支持,从而推动了我们现在使用的Web应用程序。浏览器慢慢地支持所有这些旧技术,所以你不应该在它们中进行开发。

So nowadays, what is used for the same tasks?

作为这个工程生活中的一切,它取决于。

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

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

如果您只想在桌面环境中进行简单更新的java runnable,我建议完全绕过浏览器并使用JNLP

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

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

这些是一些选项,还有更多(完全原生,Windows的NetFramework,Qt ......)但请再次请不要使用旧的,不安全和折旧的applet。

免责声明:对不起我的英语,这不是我的主要语言,任何更正都表示赞赏。

© www.soinside.com 2019 - 2024. All rights reserved.