"J"在JApplet中代表什么意思?

3
“JApplet”中的“J”代表Java(一种编程语言)。
4个回答

13
当Sun开始开发Swing时,它们有类似javax.swing.Button的东西。这给使用java.awt.Button的程序带来了问题。主要问题(如果我没记错的话)是编译器错误消息很令人困惑。
Sun决定在所有Swing组件前加上J来解决这个问题。
最初,Swing被称为JFC- Java基础类库...大概是从那里得到了J。 IFC from Netscape是JFC的基础...同一团队开发了两者。该团队从Netscape转移到Sun。在第一个源代码发布给许可证持有人时,J就在那里了(我是公司收到这个发布的人)。 JClass BWT和IFC(后来成为JFC,然后成为Swing)也不兼容..."Can I use BWT controls in an IFC environment?"
编辑:回复Swing团队成员的电子邮件:
“未添加J前缀的名称已经被占用了,我们认为使用一个公共前缀来区分“组件”和包中的其他类是有用的。”
已经被占用的部分与我关于编译器的说法相符,但并未证实。

不错的尝试,但我没有找到任何与“混淆”相关的错误(在sun)。然而,我确实发现了一个提到JClass的地方,它是从(当时的)KL Group集成到Swing中的。所以得分-1。 - VonC
【幽默】这让我想起了在https://dev59.com/O3RC5IYBdhLWcg3wCMg6#434650中接受的一次“猜测并不如查找靠谱”的教训。 - VonC
嗯...看起来我又要被“Alan Kayed”了。不过,没关系,我试着恢复我今天早上在你的帖子上做的-1;) 但更明确的参考资料会更好。 - VonC
我已经找了一个小时了......还是找不到 - 这让我很恼火!问题出在他们正在将现有的程序从awt转换为jfc时 - 你会发现有两个名为Button的东西。 - TofuBeer
完成了:-1 已取消,+1 给您的回答,我把我的设为社区维基。 - VonC
显示剩余3条评论

7

“J”最初是由KL Group(现在的quest.com)推出的,他们的革命性BWT构成了今天称为Swing/JFC的改进AWT的基础。

因此,它来自于今天KL JClass祖先
(但根据TofuBeer's answer并非如此:我将其余部分留作社区答案,因为它详细说明了JClass是什么,但“J”可能根本不来自于将其库集成到Swing中。)

JClass SwingSuite是Sun Microsystems公司的一组新扩展和增强功能,用于升级Sun Java(TM) Development Kit (JDK(TM))版本1.2中的Swing。它与Sun今天在Java(SM) Business Expo(SM)中宣布JDK 1.2可用的消息同时发布。 JClass JavaBeans可以在许多流行的Java IDE中使用,并且是全球专业和企业开发人员使用的基本组件。 JClass 3.6包括"J"版本,可以与javax.swing包一起使用,使得开发和部署可以在JDK 1.2上进行。

来自JClass 3.6到4.0迁移指南KL Group发布JClassLine Swing更新(1998年3月)

为了适应不同的环境,我们开发了针对特定Java开发套件(JDK)可用的JClass产品版本。以下是不同版本之间的区别: - “J”版本:使用JDK 1.1 + Swing 1.1(建议使用JDK 1.1.8 + Swing 1.1.1) - “K”版本:使用Java 2(建议使用JDK 1.2.2)
JClass 3.6及其之前的版本采用略有不同的字母方案,具体如下: - “T”版本:使用JDK 1.0.2 API并实现“过渡性”JavaBean - 无字母标记版本:使用JDK 1.1.x并包含完整的JavaBean实现 - “S”版本:使用JDK 1.1 / Swing 1.0.3 - “J”版本:使用JDK 1.2或带有Swing 1.1的JDK 1.1

一些普遍背景:

来自Java Applet和JApplet基础:

AWT(抽象窗口工具包)从一开始就是Java的一部分,但几乎从一开始就清楚,AWT不足以用于编写复杂、复杂的应用程序。这并不妨碍它的有用性——特别是对于通常不像全面、独立的应用程序那样复杂的小程序而言。
Swing图形用户界面库被创建来解决AWT的问题。随着Java 1.2版本的发布,Swing成为Java的正式组成部分。(Java 1.2及之后的版本也被称为“Java 2”,这有点令人困惑。)
仍然有很好的理由基于AWT编写小程序,例如许多Web浏览器不支持Java 2。然而,在此时此刻,任何使用Java编写独立图形应用程序的人几乎肯定都应该使用Swing。
组成Swing库的类可以在包javax.swing中找到。Swing包括类javax.swing.JApplet,可用作编写小程序的基础。
实际上,JApplet是Applet的子类,因此JApplets实际上是通常意义上的Applets。但是,JApplets有很多额外的结构,而普通的Applets没有。由于这种结构,JApplet的绘制是一个更复杂的事情,并由系统处理。
因此,当您创建JApplet的子类时,不应为其编写paint()方法。正如我们将要看到的,如果您想在JApplet上绘制,应向小程序添加组件以用于此目的。另一方面,对于JApplet的子类,您可以并且通常应该编写init()方法。

enter image description here

Swing 是一个包含从简单的标签到复杂的表格、树形结构和样式文本文档等组件的大型组件集合。
几乎所有 Swing 组件都是派生自一个称为 JComponent 的父类,该类扩展了 AWT Container 类。
因此,Swing 最好被描述为 AWT 之上的一层,而不是替代它。
如果将其与 AWT 组件层次结构进行比较,您会注意到对于每个 AWT 组件,都有一个带有前缀“J”的 Swing 等效组件。
唯一的例外是 AWT Canvas 类,可以使用 JComponentJLabelJPanel 作为替代。许多 Swing 类没有 AWT 对应物。


1
这位女士们先生们,这是我在StackOverflow上的第一千个回答!哇喔!香槟和...老板,怎么了?最新的Findbugs报告在哪里?好的,回到工作中。 - VonC
IFC是Netscape的基础,成为JFC的基础,同一个团队开发了两者。该团队从Netscape转移到Sun。在第一批源代码授权给许可方时,“J”就已经存在了(我是公司接收该批代码的人)。 - TofuBeer
BWT和IFC(后来成为JFC,又成为Swing)也是不兼容的...“我能在IFC环境中使用BWT控件吗?”http://sciencedesk.arc.nasa.gov/jclass/bwt-doc/faq_bwt.html#bg42 - TofuBeer
请参阅 http://en.wikipedia.org/wiki/Java_Foundation_Classes 以了解更多关于Swing/JFC/IFC的历史。 - TofuBeer

1

J代表Java。 JSomeName类和它们的“之前”版本之间的主要区别在于,J-ones被设计用于与Swing(或任何其他图形工具包)一起使用,而其他类则来自只有AWT可用的时期。


1

J在Swing类中使用的规则之后。

根据javadoc

java.applet.Applet的扩展版本,添加对JFC/Swing组件架构的支持

JFC / Swing体系结构与AWT体系结构不同。

有几个区别,但最重要的是,AWT使用本机代码来呈现小部件({{link3:SWT}}也是如此),而Swing是“轻量级”的,因为所有内容都是使用Java绘制的。

所以你问题的答案是:

JApplet中的“J”是指支持Swing架构的Applet。

我认为TofuBeerVonC的回答很好,但它们并没有直接回答你的问题。相反,它们进一步解释了为什么Swing组件中的J不应与Sun之外其他类前面的大量其他J混淆。


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