现在applets已经被弃用了吗?

10
我正在阅读一个名为w3schools的网站,并学习HTML5课程。在那里,我看到了一些在HTML4中被接受的已弃用标签。其中之一是<applet>!那么现在applets已经没有用处了吗?
您可以在此处查看:HTML5 New Elements(at the end) 或者在这里: enter image description here

1
我认为现在有些人会对w3schools大喊大叫.... - pinkpanther
1
@millimoose 我已经在这里链接了[https://dev59.com/k2Qn5IYBdhLWcg3wNk04#8qgIoYgBc1ULPQZFp0_C],但请注意[仅仅附上w3fools的链接而没有解释是不被接受的](http://meta.stackexchange.com/questions/104898/can-posting-w3fools-in-response-to-questions-or-answers-be-considered-spam)。 - Benjamin Gruenbaum
1
无论如何,w3schools 在这里是不完整的。<applet>并没有被“删除”,而是被认为是“过时和不符合规范”。这些功能仍然是标准的一部分,它们仍然具有良好指定的行为,但由于存在更好的替代方案,使用它们会触发验证错误。 - millimoose
谢谢! :) 如此美妙的梦想... - Mohammad Areeb Siddiqui
现在是2015年,w3schools的HTML指南已经更新,展示了HTML5标准。我认为该网站仍然是一个良好的参考资料。 - OzzyTheGiant
显示剩余7条评论
4个回答

14

Applets(用Java编写的并旨在在浏览器内运行的应用程序)在HTML规范或草案中没有被弃用。由于有许多其他替代品可用,人们对它们的兴趣正在减少,但这是一个不同的问题。

applet 元素在HTML 4中被宣布为废弃,以支持object元素。在HTML 4中,废弃意味着该元素仍然是语言的一部分,建议浏览器支持它(虽然实际上,并非所有浏览器都支持它,有些浏览器无法支持它),但建议使用其他东西(在这种情况下,object)代替它。

在HTML5 CR中,不使用“废弃”一词。它使用术语“过时”,这原则上意味着不同的事情,但在实践中非常接近。在HTML5 CR中,applet元素被声明为“完全过时和不符合规范”,并指出“作者不能使用它”。然而,在HTML5中,定义了applet,“实现要求”下的要求。并且HTML5 符合性要求规定正常浏览器必须(不仅仅是应该)支持它。

HTML4 的“弃用(deprecated)”和 HTML5 的“废弃(obsolete)”概念之间的几个真正区别之一是验证:当针对 HTML4 DTD 进行验证时,使用过渡(Transitional)DTD 时会接受applet,但在使用严格(Strict)DTD 进行验证时会标记为错误;在 HTML5 验证中,applet 被报告为错误。

P.S. 不应将 W3schools 用作任何权威或参考,请参见http://w3fools.com


更新2021 - Applets已被 Oracle 在 Java 9 中正式弃用。因此,尽管在撰写本文时 W3Schools 并不严格正确,但他们所说的现在是正确的。

Oracle 弃用 Applets 的主要原因是大多数现代 Web 浏览器已经停止支持它们。截至目前(AFAIK),只有 Internet Explorer 仍然支持 Applets,而 IE 计划于 2022 年中期停止服务。


4
Chrome停止支持小程序了,这句话的意思是什么? - Mangesh Kherdekar
1
虽然W3schools以前不太好,但现在已经变得更好了。W3fools只是试图打倒w3schools的行为,就我所见,它没有为解决问题做出任何贡献。真正的开发人员通过提供有建设性的反馈来改进任何参考资料,并共同努力创造更好的东西。 - OzzyTheGiant
1
我也不知道为什么我无法在Chrome中看到小程序? - Fernando Pie
2
我怀疑这个答案可能需要更新,因为我今天使用Edge和Chrome访问了Java.com(IE在Windows 10中已经不再暴露),但两者都不再支持Java小程序。 - BlueMonkMN
1
请参阅“为什么在JDK 9中弃用了小程序?” https://dev59.com/XVcO5IYBdhLWcg3wmSyS - www-0av-Com

6
他们仍然有用,但请改用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>

它们仍在使用中,但已经失效了。 - Benjamin Gruenbaum
@BenjaminGruenbaum,它们不是无效的,而是“已弃用”。 - Mohammad Areeb Siddiqui
3
我指的是小程序仍然有用。 - Bjørn Kjos-Hanssen

4

3

不论小程序是否是一个好主意,

使用<object>元素替代。这是符合标准的方式。

<object>元素可以表示外部资源,具体取决于资源类型,资源可能会被视为图像、嵌套的浏览上下文或由插件处理的外部资源。


顺便问一下,那个标签是做什么用的? - Mohammad Areeb Siddiqui
在 applet 的使用情况下:object 标签与 applet 标签执行的是相同的操作。如果您是 Web 编程新手,我真的认为 Java applets 可能不是开始学习的正确地方,而且 w3schools 可能也不是开始学习的正确地方。如果您真的想继续使用 Java,请考虑使用 GWT,但如果您刚开始学习,我建议不要这样做。相反,可以从 JavaScript 开始。 - Benjamin Gruenbaum
好的,我不是新手,我是通过考试070-480获得微软认证的专业人士 :) - Mohammad Areeb Siddiqui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接