【发布时间】:2009-03-20 07:27:50
【问题描述】:
JApplet 中的“J”是什么意思?
【问题讨论】:
JApplet 中的“J”是什么意思?
【问题讨论】:
当 Sun 开始研究 Swing 时,他们有 javax.swing.Button 之类的东西。这会导致使用 java.awt.Button 的程序出现问题。如果我没记错的话,主要问题是编译器错误消息令人困惑。
Sun 决定在所有 Swing 组件前加上 J 以消除此问题。
最初 swing 被称为 JFC - Java Foundation Classes...大概 J 就是从那里来的。
IFC from Netscape 是 JFC 的基础...同一团队开发了两者。
团队从 Netscape 搬到了 Sun。
J 在第一次向被许可人投放源时就在那儿(我是我公司收到投放的人)。
JClass BWT 和 IFC(后来成为 JFC,后来成为 Swing)也不兼容……“Can I use BWT controls in an IFC environment?”
编辑:回复 Swing 团队成员的电子邮件...
“非 J 的名字已经被占用了 通过 AWT,我们认为它很有用 一个共同的前缀来区分 来自其他类的“组件” 包。”
已经参与的部分与我所说的编译器匹配,但没有确认。
【讨论】:
“J”最初是由 KL Group (now quest.com) 提出的,其革命性的 BWT 构成了今天称为 Swing /JFC 的改进型 AWT 的基础。
所以,它来自今天的KL JClass 的ancestor:
(不是这样,根据TofuBeer's answer:我将其余部分保留为社区答案,因为它详细说明了 JClass 是什么,但“J”可能根本不是来自他们的库与 Swing 的集成.)
JClass SwingSuite,Sun Microsystems, Inc. 的 Java(TM) 开发工具包(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 to 4.0 Porting Guide 和KL Group Releases Swing Update for JClassLine (march 1998):
为了适应 Java 开发人员可能使用的各种类型的环境,我们开发了可用于特定 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 并实现“Transitional”JavaBeans
- “无字母”版本:使用 JDK 1.1.x 并包含完整的 JavaBean 实现
- “S”版本:使用JDK 1.1/Swing 1.0.3
- “J”版本:使用 JDK 1.2 或 JDK 1.1 和 Swing 1.1
一些一般背景:
来自The Basic Java Applet and JApplet:
AWT(Abstract Windowing Toolkit)从一开始就是 Java 的一部分,但几乎从一开始,很明显 AWT 的功能和灵活性不足以编写复杂、复杂的应用程序。
这并不妨碍它发挥作用——尤其是对于通常不像完整的独立应用程序那样复杂的小程序。
创建 Swing 图形用户界面库是为了解决 AWT 的问题。随着 Java 版本 1.2 的发布,Swing 成为 Java 的正式组成部分。 (从 1.2 开始的 Java 版本也被称为“Java 2”,相当容易混淆。)
仍然有充分的理由编写基于 AWT 的小程序,例如在许多 Web 浏览器中缺乏对 Java 2 的支持。但是,在这一点上,几乎可以肯定任何使用 Java 编写独立图形应用程序的人都应该使用 Swing。
组成 Swing 库的类可以在包
javax.swing中找到。 Swing 包含类javax.swing.JApplet,用作编写小程序的基础。
JApplet实际上是Applet的子类,所以JApplets实际上是通常意义上的Applets。不过,
JApplets有很多普通 Applet 所没有的额外结构。由于这种结构,JApplet的绘制是一件更复杂的事情,由系统处理。因此,当您创建
JApplet的子类时,您不应该为它编写paint()方法。正如我们将看到的,如果您想在JApplet上绘图,您应该将一个组件添加到小程序中以用于该目的。另一方面,您可以并且通常应该为JApplet的子类编写init()方法。
Swing 是一大组组件,从非常简单的标签(如标签)到非常复杂的组件(如表格、树和样式化的文本文档)。
几乎所有 Swing 组件都派生自一个名为 JComponent 的单个父级,它扩展了 AWT Container 类。
因此,最好将 Swing 描述为 AWT 之上的一个层,而不是替代它。
如果您将其与 AWT 组件层次结构进行比较,您会注意到对于每个 AWT 组件,都有一个带有 前缀“J” 的 Swing 等效项。
唯一的例外是 AWT Canvas 类,JComponent、JLabel 或 JPanel 可以用作替代品。许多 Swing 类没有对应的 AWT。
【讨论】:
J 代表 Java。 JSomeName 类与其“以前的”版本之间的主要区别在于,J-ones 设计用于与 Swing(或任何其他图形工具包)一起使用,而其他的则从那时起只有 AWT 可用。
【讨论】:
J 来自 Swing 类中使用的约定。
根据javadoc:
java.applet.Applet 的扩展版本,增加了对JFC/Swing component architecture的支持
JFC/Swing 架构不同于 AWT 架构。
有几个不同之处,但最重要的是,AWT 使用本机代码来呈现小部件(SWT 也是如此),而 Swing 是“轻量级”,因为所有这些都是使用 Java 绘制的。
所以你的问题的答案
JApplet 中的“J”是什么意思?
表示它是一个支持 Swing 架构的 Applet。
我认为TofuBeer 和VonC 是很好的答案,但它们并没有(至少直接)解决您的问题。相反,他们进一步解释了为什么摇摆组件中的 J 不应与 Sun 以外的其他类前面的大量其他 J 混淆。
【讨论】: