使用JavaFX Mobile与UI的状况做斗争(一)
本文提供了JavaFX Mobile开发的初学者指南 但是因为所有的JavaFX开发都是依赖于相同的SDK和工具 所以也很容易大体上理解JavaFX JavaFX SDK 和它的开发工具为开发JavaFX Mobile应用程序提供了移动模拟 而不是提供了一个单独的JavaFX Mobile SDK 来自Sun的Java Swing小组的Joshua Marinacci在他最近所写的博客中提到 There is no JavaFX Mobile There is only JavaFX
Java在移动设备上的普遍存在性让 write once run anywhere (WORA)前提很难在随之而来的成百上千的移动设备屏幕上遵守 随着JavaFX Mobile 的发布 Java社区就有了一种工具来打击这种设备UI支离破碎的状况
JavaFX的语法及与Java的配合
JavaFX 是由JavaFX Script和JavaFX Mobile组成的一种产品构架 JavaFX Script(简称JavaFX)是一种脚本语言旨在提供了更加丰富的用户界面 而且顾名思义 JavaFX Mobile是 JavaFX 移动平台
JavaFX Script使用了类似JavaScript 和 Scalar Vector Graphics (SVG)一种声明语法 例如 这里有JavaFX 代码(没有 imports)是为了创建一个小的 hello world 类型的窗口 如Figure Figure Figure 所示
Stage {
title: Cool Running
width:
height:
scene: Scene {
content: Text {
font: Font {
size:
}
x:
y:
fill: Color GREEN
content: JavaFX is cool
}
}
}
如你所看到的 JavaFX与Java和/或JavaScript有相似之处 但也不尽相同
JavaFX的声明风格对比于Java Swing的编程风格是非常明显的 以下的Swing代码(还是没有imports)创建和以上JavaFX例子相同的 hello world 窗口
public class Main {
public static void main(String[] args) {
JFrame aFrame = new JFrame( Cool Running );
aFrame setSize( );
JPanel content = new JPanel();
content setLayout(new BorderLayout( ));
content setBackground(Color WHITE);
JLabel aLabel = new JLabel( Swing is cool );
aLabel setFont(new Font(null Font PLAIN ));
aLabel setForeground(Color GREEN);
content add(aLabel BorderLayout CENTER);
aFrame setContentPane(content);
aFrame setVisible(true);
aFrame
setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);
}
}
注意Swing的必要特征(如一行一行的陈述 控制流) 这些事用于传统的Java UI开发 Figure 显示了Java Swing代码的结果
如上所述 JavaFX既不是Java也不是JavaScript 但是JavaFX脚本可以调用Java类或是被Java类调用 例如 在接下来的决定窗口大小的JavaFX 脚本 Stage对象的大小使用标准的Java Math类重新写入了
var i = ;
var j = ;
Stage {
title: Cool Running
width: java lang Math max(i j)
height:
scene: Scene {
Sun公司宣称JavaFX改变现有的Java代码的能力是与其他RIA技术 如Adobe Flex 相比之下的优势之一 另外 JavaFX Script为构建任何应用程序提供了一个平台 它被Sun公司定义的目的是用在UI开发而不是用在商业或是后端组件
JavaFX Mobile构架
JavaFX应用程序依赖于运行在Java Virtual Machine (JVM)之上的JavaFX runtime 对于移动应用程序 JavaFX运行在Java ME JVM(参见Figure 和 Figure )上
目前的JavaFX API被分成两类的API元素 mon 和desktop 这些类别叫做profiles 而且它们所包含的元素可以在他们的profile中支持各种各样的UI需求和平台能力 Common profile提供了很多同时支持桌面和移动设备的类 换句话说 它为所有运行在JVM(Java ME或Java SE JVM)上的平台提供了最低的普通标准的UI Desktop profile提供了更先进的能力以支持更大功能更丰富的平台
要创建需要所有形式的要素的应用程序 开发者应该保留mon profile 要计划部署一个桌面平台或是一个普通的桌面浏览器的开发者 可以选择用desktop profile提供的API来加强他们的应用程序
设备支持和应用程序配置
所以哪些设备支持JavaFX Mobile并且怎样让你的应用程序来部署这些设备呢?目前市场上没有应用JavaFX的产品 但是 在JavaFX Mobile推出的时候 Sun公司向很多设备制造商(包括LG Sprint Sony Ericcson)宣称已经致力于在不久的将来提供JavaFX功能的产品
虽然在具体JavaFX设备的细节上的问题此刻还很模糊 但是Sun公司已经明确表示JavaFX不是为所有移动设备提供的 因为一个支持Java ME的MIDP/CLDC设备并不意味着它最后也支持JavaFX JavaFX是针对那些符合Mobile Service Architecture (MSA) 平台规格(JSR )的设备 这就意味着 除了MIDP/CLDC JavaFX设备必须支持有智能手机特性的APIs 这些包括个人信息管理(PIM) 无线通讯 D图形和移动多媒体
至于JavaFX 应用程序如何部署到设备上 本质上有两种选择 都是Java ME开发者常见的
把它嵌入到设备上
把它( over the air )发送到设备上
因为JavaFX在有MSA 的移动设备上的JavaME之上运行 各种机构应该充分利用现有的Java ME基础设施和部署机制
构建一个JavaFX Mobile 应用程序
现在你知道什么是JavaFX Mobile了 那么你怎样构建一个JavaFX Mobile应用程序呢?这一节将说到JavaFX Mobile开发的初学者指南 它将解释如何获得所需的技术 如何去建立一个环境 还有如何开发并运行Hello World应用程序(以上所显示的)
JavaFX程序可以正式构建在Windows和Mac OS 平台上 Sun公司没有提供Linux产品 但是开发者已经找到一个方法在Linux用NetBeans Plugin来开发 JavaFX 程序 这次讨论的最重要的就是 JavaFX Mobile运行时间和模拟器这次只为Windows 平台提供
有关Windows和Mac OS 的系统需求的具体细节可以参看 site 你必须有一个相对较新的JDK(Windows至少需要版本 更新 而Mac OS至少需要的是版本 更新 的)
除了基本的Java环境 你还需要JavaFX SDK(安装指南参看) 下载安装程序对于Windows版本大约是 MB而Mac OS是 MB 当安装SDK时 如果相应的Java SDK环境无法找到 该安装可以是你通过一些步骤来安装Java SDK(参见Figure 看一下在Windows栏上的JavaFX SDK安装)
用JavaFX工作
JavaFX SDK提供了一系列的命令行工具来进行编译 运行和测试JavaFX 程序 也为运行和测试JavaFX Mobile程序提供了一个带有SDK的移动设备模拟器
Javafxc工具与标准的javac exe工具用法相同 编译器获得JavaFX 源代码(代码保存在 fx文件中)并且把它们编译到在类( class files)中的Java 字节代码 Figure 显示了如何编译先前讨论的Hello World JavaFX 代码——之后它被保存在叫Test fx的文件中——使用javafxc exe 而Figure 显示了如何使用javafx exe执行它
在bin目录中提供的是JavaFX包和文件工具 packaging tool (javafxpackager exe)是移动开发者比较感兴趣的 因为它提供了创建一个为部署移动设备或是模拟器的mobile ready package的方法 但是 packaging tool也能用于创建browser ready或是Web Start程序 通过JavaFX代码
为了给移动设备或是模拟器部署创建Java Application Descriptor (JAD)和JAR文件 你必须至少给javafxpackager工具提供 fx文件源代码的位置(它没有被编译为 class文件)和主要类的名字或是为程序启动point class
默认情况下 javafxpackager为浏览器或是Web Start部署创建了一套部署文件 为了创建移动部署的JAD和JAR文件 你必须也要在命令行需求中使用–p mobile选项 –p代表 profile 而且你可以再移动或是桌面选项上显示此开关
这里是整个的来自Test fx 文件(本例子中的位置在c:\jfx 文件夹)的javafxpackager命令来创建一个mobile ready程序
javafxpackager src c:\jfx appClass Test p mobile d c:\jfx\dist
–src选项指定JavaFX script代码的来源 appClass指定了主要类的名字 而可选的–d选项指定了输出的目的地(the JAD 和 JAR files) 结果参见Figure
接下来 没有–p mobile选项(或是通过指定的–p desktop) javafxpackager制作了HTML JAR和JNLP文件使用于browser 或是Web Start执行 如Figure 所示
随着Windows版本的JavaFX SDK是一个模拟器来测试程序 你可以在位于JavaFX SDK安装目录中的 /emulator/bin次文件夹中的找到一个emulator exe 为了测试javafxpackager制作的JavaFX JAD/JAR文件 在仿真器工具上调用JAD文件 使用–Xdescriptor:选项来指定JAD文件来执行 见Figure
lishixinzhi/Article/program/Java/JSP/201311/19281
熊索血府: 可以在Android上部署JavaFX应用程序.通常来说,部署JavaFX应用程序的步骤如下:下载Android SDK和JavaFX-Android SDK 创建一个JavaFX应用 使用JavaFX-Android SDK创建基于上述JavaFX应用的Android项目 使用Ant构建系统创建Android程序包 将程序包上传至应用商店
无极县15333391320: java8 怎么使用 javafx - ?
熊索血府: JavaFX 8捆绑在Java 8中,你可以下载最新的Java 8 EA b77版本来体验.目前仅支持Windows平台,甲骨文表示,针对其他平台的OpenGL版本正在开发中. import javafx.application.Application; import javafx.scene.*; import javafx.scene.paint....
无极县15333391320: javaFX如何在web应用程序中运行 - ?
熊索血府: 1.javaFX也是像applet一样嵌入到页面中才能在web应用程序中运行,但是你需要先将自己的程序使用JavaFX脚本编译器将JavaFX脚本编译成Java Applet,然后发布到网页中2.用netbeans开发的话,就很方便了,在项目名上右键属性,选run,就可以看到浏览器、手机、web start等选项,你可以把你的程序任意发布了.
无极县15333391320: 如何使用JavaFX播放本地音乐 - ?
熊索血府: 什么是 JavaFX ? JavaFX 包含了一些列图形和媒体包,允许程序员设计、创建、测试、调试、和部署富客户端应用并且保持跨平台的操作一致性. JavaFX 应用程序 JavaFX 应用程序由 Java API 编写,可以调用任何 Java API 包.例如,可以调用
无极县15333391320: Eclipse怎么使用javaFX - ?
熊索血府: 用e(fx)clipse吧,直接创建JavaFX Project就行了. eclipse.org/efxclipse/index 要么就是用官方的IDE netbeans 我就是用netbeans开发Javafx的,很方便.再下一个JavaFX Scene Builder做界面设计,搭配起来就可以做出很好的javaf
无极县15333391320: 使用javafx技术开发一个计算器,在界面上能进行加减乘除 - ?
熊索血府: javafx本质论 针对旧版的1.x, 已经被oracle宣布生命终结淘汰1.x独立在Java SE之外,用一种类似js的FXscript语言.为的是模仿flash 现在2.x版完全改进,废弃了FxScript,开发转用java语言.更重要的是javafx将用于逐渐取代swing和swt作为主要界面框架.可以说相当于windows的.net的WPF用于取代winforms
无极县15333391320: javafx.util 需要使用哪个jar包 - ?
熊索血府: 将 “jfxrt.jar”导入类库.右键javafx -> Properties -> Java Build Path -> Libraries -> AddExternal JARs. 在“jdk1.7.0_21/jre/lib”文件夹下可以找到“jfxrt.jar”文件.
无极县15333391320: eslips如何配置JavaFX - ?
熊索血府: 推荐开发配置: Java8 + E(fx)clipse + Gluon Scene Builder 具体说明如下: 1. 选择合适的JDK进行开发: a: 比如版本太低没有JavaFX; b: 版本太高了也没有javaFX (Java11把 FX 开源了,成为了OpenJDK的一部分.) 我目前使用的是Java8 ...
无极县15333391320: javaFX调用windows应用 - ?
熊索血府: JavaFX API详解之Window 其中Window类可理解成一个窗体,用于存放Scene,并与用户操作.一般window作为窗体,都用其子类Stage和PopupWindow.看一下Window作为窗体的顶级类包含的一些共同属性 eventDispatcher ...
无极县15333391320: 手机支持JAVA是什么意思? - ?
熊索血府: java 【概要】 Java包含了一种计算机编程语言和一个平台. *Java编程语言是一种高级语言.由Sun微系统公司(Sun Microsystem)发布,并作为一种开放的标准进行提供. *Java是一种简单的,面向对象的、分布式的、解释的、健壮的、安全...