【问题标题】:Are applets now deprecated?小程序现在被弃用了吗?
【发布时间】:2023-03-24 23:51:01
【问题描述】:

我正在阅读一个名为 w3schools 的网站并正在学习 HTML5 课程。在那里,我在 HTML5 中看到了一些在 HTML4 之前被弃用的标签。它的标签之一是<applet>!那么现在小程序没用了吗?

你可以在这里看到它:HTML5 New Elements(at the end) 或在这里:

【问题讨论】:

  • 我想现在有些人会在 w3schools 上大喊大叫....
  • 哈哈 :D 我也这么认为 :P
  • @BenjaminGruenbaum 好点,很抱歉。
  • 无论如何,w3schools 在这里是不完整的。 <applet> 没有被“删除”,它被认为是“过时且不合格的”。此类功能仍然是标准的一部分,它们仍然具有明确指定的行为,但它们会触发验证错误以使用它们,因为存在更好的替代方案。

标签: html applet


【解决方案1】:

Applet(作为用 Java 编写并打算在浏览器中运行的应用程序)在 HTML 规范或草案中不会以任何方式被弃用。由于有许多其他替代品可供选择,人们对它们的兴趣正在减少,但这是一个不同的问题。

The applet element 在 HTML 4 中被声明为弃用,取而代之的是 object 元素。在 HTML 4 中,deprecation means 该元素仍然是语言的一部分,建议浏览器支持它(尽管实际上并非所有浏览器都支持它,有些浏览器可能不支持它),但是建议使用其他东西(在这种情况下,object)来代替它。

在 HTML5 CR 中,不使用“弃用”一词。它使用术语“obsolete”,这在原则上意味着完全不同但在实践中非常接近的东西。在 HTML5 CR 中,applet 元素被声明为“完全过时且不符合标准”,并注明“作者不得使用”。然而,HTML5 在“实现要求”下包含a definition of applet。而 HTML5 conformance requirements 指定普通浏览器必须(不仅仅是应该)支持它。

HTML 4 概念“已弃用”和 HTML5 概念“过时”之间的少数真正区别之一在于验证:针对 HTML 4 DTD 进行验证时,使用过渡 DTD 时接受 applet(但已标记在针对 Strict DTD 进行验证时作为错误);在 HTML5 验证中,applet 被报告为错误。

附: W3schools 不应被用作任何形式的权威或参考,请参阅http://w3fools.com


2021 年更新 - Applets were officially deprecated by Oracle in Java 9。因此,虽然 W3Schools 在撰写本文时并不完全正确,但他们当时所说的是正确的……现在。

Oracle 弃用 Applet 的主要原因是大多数现代网络浏览器已停止支持它们。截至目前,(AFAIK)只有 Internet Explorer 仍支持 Applet,而 IE 将于 2022 年中期 EOL。

【讨论】:

  • Chrome 已经停止支持小程序怎么办?
  • 虽然 W3schools 不是很好,但它变得更好了。 W3fools 只不过是试图推翻 w3schools,据我所知,还没有做任何事情来提供解决方案。真正的开发人员通过提供有关任何参考材料的建设性反馈来做出贡献,并共同努力使事情变得更好。
  • 我也不知道为什么我看不到使用 Chrome 的小程序?
  • 我怀疑这个答案可能需要更新,因为我今天使用 Edge 和 Chrome 访问了 Java.com(IE 甚至不再在 Windows 10 中公开),并且不再支持 Java 小程序.
  • 另请参阅“为什么在 JDK 9 中不推荐使用小程序?” stackoverflow.com/questions/45535112/…
【解决方案2】:

它们仍然有用,但请改用object 标签。示例:

<object
    width  = "800"
    height = "510"
    data   = "http://math.hawaii.edu/~ralph/Classes/Plotting/fplotter.jar"
    type   = "application/x-java-applet"
>
    <param
        name  = "codebase"
        value = "http://math.hawaii.edu/~ralph/Classes/Plotting/"
    />
    <param
        name  = "code"
        value = "a_fplotter.class"
    />
    <param
        name  = "width"
        value = "800"
    />
    <param
        name  = "height"
        value = "510"
    />
    <param
        name  = "archive"
        value = "fplotter.jar"
     />
</object>

【讨论】:

  • “它们仍在使用”这无关紧要。它们是无效的。
  • @BenjaminGruenbaum 他们不是无效的,他们是“弃用”
  • 我的意思是小程序还在使用中。
【解决方案3】:

Applet 在 Java 9 中已弃用

AppletsJava 9 中已弃用。 Oracle 将停止分发和支持 Java 浏览器插件。

引用java.applet.Applet 类:

Applet API 已弃用。有关详细信息,请参阅java.applet package documentation

有关更多信息,请参阅 Oracle 的这篇博文:Moving to a Plugin-Free Web

考虑Java Web Start 技术。

【讨论】:

    【解决方案4】:

    忽略whether or not applets are a good idea

    请改用&lt;object&gt; element。这就是标准的投诉方式。

    object 元素可以表示一个外部资源,根据资源的类型,它可以被视为图像、嵌套浏览上下文或被插件处理的外部资源。

    【讨论】:

    • 那个标签的作用是什么?
    • @AreebSiddiqui 在小程序用例中:object 标记与applet 标记的作用相同。如果您是 Web 编码的新手,我真的认为 Java 小程序可能不是正确的起点,w3schools might not be the right place to start learning。考虑从 JavaScript 开始,如果你真的想继续使用 Java,你可以使用 GWT 但如果你刚刚开始,我建议不要这样做。
    • 好吧,我不是初学者,我是 070-480 考试中的 MS :)
    猜你喜欢
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多