JavaFX基础:1: 简介

Sun早在2007年就推出了JavaFX,作为客户端体验增强的一项特性,在被Oracle收购之后似乎变得可有可无,用户的反馈也一直不温不火。这篇文章中,我们来介绍一下JavaFX的基础特性以及一个简单的例子在IDEA中运行。

JavaFX的目的

JavaFX的FX是什么的缩写的问题,虽然这不重要,但是从其用途和目的来看:

  • Fat-Client Extension:传统方式下桌面应用,在Java中则是Swing的天下
  • Flash & Flex:JavaFX主要用于创建RIA应用,而这正是Flash的长项。
    能不能取代Flash这里不谈,作为技术的更新,替换Swing则还可能是一个可控制的方向。

功能特性

  • FXML :JavaFX应用中以XML为基础的用户接口标记语言,在JavaFA应用中体现为.fxml文件
  • Scene Builder :可视的布局设计工具,用于给用户提供拖拽方式的界面设计方式。
  • Swing Compatibility : 在JavaFX应用中,可以嵌入Swing内容
  • CSS Styling: 可以使用CSS对应用进行渲染
  • 丰富的API’s:提供丰富的API包括2D和3D图形效果等。

架构设计

JavaFX基础:1: 简介_第1张图片
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的运行支持。

IDE

Oracle官方使用Netbean对JavaFX使用进行介绍,很多其他的IDE也同样能达到效果,这里使用IDEA进行说明,IDEA中直接创建Flex类型的Project, 选择JDK,输入项目名称即可完成Sample工程的创建
JavaFX基础:1: 简介_第2张图片
IDEA生成的Sample代码会显示一个窗体,在Sample中只设定了窗体的大小和标题,我们这里对标题进行修改(显示Hello Liumiao),对大小也进行修改(设定为600x600)

JavaFX基础:1: 简介_第3张图片
然后通过菜单的右键运行即可确认效果。
JavaFX基础:1: 简介_第4张图片
注:实际运行的过程较为复杂,各种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

你可能感兴趣的:(编程语言)