javafx是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javafx是啥相关的知识,希望对你有一定的参考价值。
参考技术A 什么是 JavaFX ?JavaFX 包含了一些列图形和媒体包,允许程序员设计、创建、测试、调试、和部署富客户端应用并且保持跨平台的操作一致性。
JavaFX 应用程序
JavaFX 应用程序由 Java API 编写,可以调用任何 Java API 包。例如,可以调用 Java API 访问本地操作系统,并且与服务器进行连接。
JavaFX 的外观可以自定义。层叠样式表(CSS)将应用的外观与功能分离,让程序员可以更专注于编码。美工可以简单地通过 CSS 来自定义应用程序的外观。
如果你有 Web 设计的背景,或者你想将 UI 和后台逻辑分离,那么你还可以将 UI 放入到 FXML 标记语言中,用 Java
编写业务逻辑。如果你只想编码,那么可以将编写 UI 的工作交给 JavaFX Scene Builder。在支持 JavaFX
的集成开发环境(IDE)中,可以使用 JavaFX Scene Builder 来编写 FXML 标记语言。
可用性
从 JavaFX 2.2 以后,JavaFX 已经集成在 JRE 7 和 JDK 7 以及以后的 Java 版本中了。因为 JDK
可以很好地运行在主流桌面系统上(Windows, Mac OS X, and Linux),因此 JavaFX
也可以运行在这些主流的桌面系统上。跨平台兼容性,可以让 JavaFX 的开发者和用户得到一致的体验。
在 JDK 的下载页面,可以获取 JavaFX 例子的 Zip 包。这些例子应用程序提供了很多代码来演示如何使用 JavaFX。
主要特性
JavaFX 2.2 和之后的版本都包含以下主要特性:
Java API
JavaFX 是一个 Java 包,由 Java 类和 Java 接口等原始的 Java 代码编写而成。这些 API 在设计上可以很友好的替代为 Java VM 语言,例如 JRuby 或 Scala。
FXML and Scene Builder
FXML 是基于 XML 的标记语言,用来创建 JavaFX UI。设计者可以直接编写 FXML 或者使用 IDE 的 Scence Builder 来编写 FXML。
WebView
Web 组件可以使用 WebKithtml 技术将 Web 页面嵌入到 JavaFX 应用程序中。在 WebView 中运行的
javascript 可以调用 Java API,并且 Java API 也可以调用 WebView 中运行的 JavaScript。
Swing 集成
旧有的 Swing 应用程序可以更行 JavaFX 的新特性,比如丰富的图形媒体播放功能和嵌入 Web 页面的功能。
丰富的自有控件和CSS
JavaFX 提供了桌面应用程序需要用到的主要控件。并且控件的外观可以使用标准的 Web CSS 来进行控制。
画布(Canvas)API
Canvas API 允许在可以包含一个作图元素的 JavaFX scene 直接绘制图形。
支持多点触控
基于平台的底层能力,JavaFX 支持多点触控功能。
硬件加速的图形通道
JavaFX 图形渲染基于 Prism。如果使用了支持 Prism 的显卡或 GPU,JavaFX 可以很快的进行平滑渲染。如果系统不支持 Prism,那么默认值将会变为 Java 2D。
高性能的媒体引擎
媒体通道支持 Web 多媒体内容的播放,基于 GStreamer 媒体框架,提供了稳定的、低延迟的媒体播放框架。
自包含的应用程序部署模式
自包含的应用程序,可以包含所有的应用程序资源、Java 运行时以及 JavaFX 运行时。应用程序发布后,可以在操作系统本地安装,获得操作系统一致的安装和加载体验。
JavaFX 运行时 JAR 文件 jfxrt.jar 在 Linux 上的位置是啥?
【中文标题】JavaFX 运行时 JAR 文件 jfxrt.jar 在 Linux 上的位置是啥?【英文标题】:What's the location of the JavaFX runtime JAR file, jfxrt.jar, on Linux?JavaFX 运行时 JAR 文件 jfxrt.jar 在 Linux 上的位置是什么? 【发布时间】:2014-04-26 04:43:09 【问题描述】:我正在尝试使用 Eclipse Kepler 运行一些 JavaFX 代码,并在 Linux 机器上安装了 e(fx)clipse 插件,使用:
java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-5)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
我的理解是,尽管自 JDK 7u6 版本以来 JavaFX 已包含在标准 JDK 中,但 JavaFX 运行时 JAR 文件 jfxrt.jar 故意被排除在 Java 运行时路径之外,直到在 JavaFX 和其余版本之间进行进一步测试java基础设施已经完成。因此,当我们创建新的 Java 项目时,您必须手动将其添加到项目构建路径库中。
我一直在以下两个目录中寻找那个 jar,但没有成功:
/usr/lib/jvm/java-7-openjdk-common/jre/lib/
/usr/lib/jvm/java-7-openjdk-amd64/lib
我还应该在哪里寻找它?
【问题讨论】:
尝试在 shelllocate jfxrt.jar
上运行以查看位置
我的在 jdk1.7.0_51/jre/lib 中,但使用的是标准 JDK,而不是 OpenJDK。
你可能还想看看这个:***.com/questions/18547362/javafx-and-openjdk
【参考方案1】:
2021 年 3 月更新
此答案中的先前信息现在对于 Java 和 JavaFX 的更高版本(例如 Java 11+)已过时。此更新提供更新版本的信息。
JavaFX 现在可从openjfx.io 或公共 Maven 存储库以 SDK 或库集或模块集的形式获得。 JavaFX 已被划分为一组依赖项,而不是与 Java 运行时一起分发的单一的 jfxrt.jar
库(例如以前使用 Oracle Java 8 的情况)。
对于 JavaFX 11+ 版本,JavaFX jar 文件(以及伴随它们的本机库)的位置将取决于您构建项目的方式。例如:
如果您使用 Maven 或 Gradle 等构建工具并将 JavaFX 指定为依赖项,则 JavaFX jar 文件将下载到您的本地 Maven 或 Gradle 存储库(与其他 maven 依赖项相同)。 如果您从 openjfx.io (gluon) 下载 JavaFX SDK,则 JavaFX jar 文件将位于您将 SDK 解压缩到的位置。Oracle Java 7中jfxrt.jar的位置是:
<JRE_HOME>/lib/jfxrt.jar
jfxrt.jar 在 Oracle Java 8 中的位置是:
<JRE_HOME>/lib/ext/jfxrt.jar
<JRE_HOME>
取决于您安装 Oracle Java 的位置,并且可能因 Linux 发行版和安装而异。
jfxrt.jar 不在 Linux OpenJDK 7 中(这是您正在使用的)。
提供JavaFX 8 for Debian based systems 的开源软件包,例如Ubuntu。要安装此软件包,必须同时安装 Debian OpenJDK 8 软件包和 Debian OpenJFX 软件包。我没有运行 Debian,所以我不确定 Debian OpenJFX 软件包在哪里安装 jfxrt.jar。
使用Oracle Java 8。
在 Oracle Java 8 中,JavaFX 既包含在 JDK 中,也位于默认类路径中。这意味着 JavaFX 类将在构建期间由编译器自动找到,并且在您的用户使用您的应用程序时由运行时自动找到。因此,目前使用 Oracle Java 8 是解决您问题的最佳方案。
OpenJDK for Java 8 可以包含 JavaFX(因为 JavaFX for Java 8 现在是开源的),但取决于 OpenJDK 包组装商是否选择在其发行版中包含 JavaFX 8。我希望他们这样做,因为它应该有助于消除您在问题中遇到的困惑,并且它还在 OpenJDK 中提供了更多的功能。
我的理解是,虽然 JavaFX 从 JDK 7u6 版本开始就包含在标准 JDK 中
是的,但只有 Oracle JDK。
与 Java 7 捆绑在一起的 JavaFX 版本不是完全开源的,因此它不能包含在 OpenJDK 中(这是您正在使用的)。
如果您需要使用 Java 7 而不是 Java 8,您可以下载 Oracle JDK for Java 7 并使用它。然后 JavaFX 将包含在 Java 7 中。由于 Oracle 配置 Java 7 的方式,JavaFX 不会在类路径中。如果您使用 Java 7,则需要add it to your classpath and use appropriate JavaFX packaging tools 以允许您的用户运行您的应用程序。 e(fx)clipse 和 NetBeans JavaFX 项目类型等一些工具将为您处理类路径问题和打包任务。
【讨论】:
在 Ubuntu 16.04 中,openjfx 包将其放置在当我使用 apt install openjfx
安装 JavaFX 时,我的位于 Ubuntu 18.04 上(正如上面的 @jewelsea 所述)
/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
【讨论】:
Ubuntu 18.04.2 LTS 似乎表现不同。有什么线索吗? 我已经安装了openjfx,但是我数着找不到usr/share/java/openjfx/jre/lib/ext/jfxrt.jar【参考方案3】:在带有 OpenJDK 的 Ubuntu 上,它安装在 /usr/lib/jvm/default-java/jre/lib/ext/jfxrt.jar
中(技术上它是指向 /usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
的符号链接,但使用 default-java
链接可能更好)
【讨论】:
【参考方案4】:jfxrt.jar 在 JDK 1.8 (Windows) 中的位置是:
C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar
【讨论】:
以上是关于javafx是啥的主要内容,如果未能解决你的问题,请参考以下文章
在 JavaFX 8 中防止中间绑定被垃圾收集的推荐方法是啥
JavaFX 运行时 JAR 文件 jfxrt.jar 在 Linux 上的位置是啥?
部署 JavaFX 应用程序、创建 JAR 和自包含应用程序以及本机安装程序的最佳方式是啥
无法访问类 com.sun.javafx.util.Utils(在模块 javafx.graphics 中)-JavaFX 和 Eclipse