为什么Java 8 J2SE没有包含JavaFX API?

6

有没有人知道为什么JavaFX 8在即将推出的Java 8中仍然不是日常J2SE API之一?

技术图表清晰地排除了JavaFX在J2SE堆栈中的位置。

我想在JDK javadocs中看到JavaFX和Swing API并排,不知道为什么Oracle不能提供这个功能?

顺便说一下,在谈论JavaFX的不同状态时(与J2SE包含的其他标准相比),有人能解释一下为什么JavaFX的作者们认为有必要重新发明轮子,创建与AWT / Swing不兼容的概念,例如FX字体、FX颜色等吗?

3个回答

3

JavaFX路线图。

根据常见问题解答-

自JavaFX 2.2和Java SE 7更新6以来,JavaFX库已作为Java SE的一部分安装;

对于Swing部分-

JavaFX是否正在取代Swing成为Java SE的新客户端UI库?

是的。但是,Swing将在可预见的未来仍然是Java SE规范的一部分,因此包含在JRE中。

JavaFX足够广泛,可以像Java SE或Java EE一样拥有单独的层次结构。

您可以在此处查看定义。

Java SE

当大多数人想到Java编程语言时,他们会想到Java SE API。Java SE的API提供了Java编程语言的核心功能。它定义了从Java编程语言的基本类型和对象到用于网络、安全、数据库访问、图形用户界面(GUI)开发和XML解析的高级类的一切。
Java EE
Java EE平台建立在Java SE平台之上。Java EE平台提供了一个API和运行环境,用于开发和运行大规模、多层、可扩展、可靠和安全的网络应用程序。
Java ME
Java ME平台为在小型设备上运行Java编程语言应用程序提供了API和小型虚拟机。该API是Java SE API的一个子集,以及对小型设备应用程序开发有用的特殊类库。Java ME应用程序通常是Java EE平台服务的客户端。
JavaFX
JavaFX是一个平台,用于使用轻量级用户界面API创建丰富的互联网应用程序。 JavaFX应用程序使用硬件加速图形和媒体引擎,以利用更高性能的客户端和现代外观以及用于连接到网络数据源的高级API。 JavaFX应用程序可以是Java EE平台服务的客户端。

“Installed as part of”不等同于与javadocs并存。如果您查看http://download.java.net/jdk8/docs/index.html,则可以清楚地看到(图表右侧)J2SE边界在JavaFX之前结束。因此,JavaFX不是J2SE的一部分。为什么?有什么障碍?什么魔法阻止JavaFX API像Swing的API一样呢? - Vincent
@Vincent,我已经编辑并放置了一个链接到http://docs.oracle.com/javaee/6/firstcup/doc/gkhoy.html。 - Sajal Dutta

3
JavaFX计划成为JavaSE的标准部分,时间框架为JavaSE 9(作为JSR)。与此同时,Oracle将JavaFX作为其JavaSE实现的一部分出货(但其他供应商很可能不会这样做)。JavaFX是现代UI工具包,使用与图形卡密切配合的软件堆栈(如果可用)。关于JavaFX作者为什么觉得有必要重新发明轮子,创建AWT / Swing不兼容的概念,如FX字体、FX颜色等,请参见上述引用。

1
JavaFX是JDK7中JavaSE的一部分,并且在Java 8中是默认类路径:您无需做任何特殊操作即可使用JavaFX组件(除了添加相关的import语句,就像使用swing一样)。
关于您的最后一个问题,我无法代表API的设计者发言,但由于字体和颜色可以通过CSS文件导入,所以生成的API与您在CSS文件中指定的内容相当接近,例如字体属于某个系列,具有样式和大小。

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