Sun早在2007年就推出了JavaFX,作为客户端体验增强的一项特性,在被Oracle收购之后似乎变得可有可无,用户的反馈也一直不温不火。这篇文章中,我们来介绍一下JavaFX的基础特性以及一个简单的例子在IDEA中运行。
JavaFX的FX是什么的缩写的问题,虽然这不重要,但是从其用途和目的来看:
JavaFX的架构设计构成和关联的组件如上图所示,简单说明如下:
JavaFX Public APIS and Scene Graph:进行整体接口功能与Scene特性的提供
Quantum toolkit:JavaFX高性能图形化引擎
Glass Windowing toolkit:小型而搞笑的视窗化系统
Media engine:媒体引擎
Web engine:Web引擎
Java2D等:Java2D与OpenGL相关的图形化功能支持
JavaFX应用利用JDK的API库同时作为客户端桌面应用,需要JVM的运行支持。
Oracle官方使用Netbean对JavaFX使用进行介绍,很多其他的IDE也同样能达到效果,这里使用IDEA进行说明,IDEA中直接创建Flex类型的Project, 选择JDK,输入项目名称即可完成Sample工程的创建
IDEA生成的Sample代码会显示一个窗体,在Sample中只设定了窗体的大小和标题,我们这里对标题进行修改(显示Hello Liumiao),对大小也进行修改(设定为600x600)
然后通过菜单的右键运行即可确认效果。
注:实际运行的过程较为复杂,各种IDE之所以能够正常运行,是因为其将所需要的jar都在classpath中进行了设定,比如上述sample执行时演示机的执行示例语句如下所示:
/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=53471:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/tools.jar:/Users/liumiao/Desktop/JavaFXSample/out/production/JavaFXSample sample.Main
https://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm