设为首页 加入收藏

TOP

JavaFX—是Java桌面的新希望么?(一)
2014-11-24 01:20:03 来源: 作者: 【 】 浏览:9
Tags:JavaFX Java 面的 新希望

  基于再战桌面领域的想法,Java在一年多以前宣布了JavaFX,现在JavaFX发布了,很值得一看这个融合了很多开发理念的产品,这些理念将成为Java美妙开发的元素.


  JavaFX中主要有两个部分:开发环境(development environment)和运行环境(runtime environment),每一个环境都是构建在以前存在于Java系统的元素之上。开发环境有自己的语言——JavaFX Script,但是它仍然编译为Java类文档。运行时间环境仍然构建在Java虚拟机的基础上可以在大部分浏览器上工作,但是在去年加入了许多巨大的改进,与老的Java运行环境相比更具竞争力。



图片11(文字说明为:Netbeans JavaFX开发环境)


  下面,通过创建一个简单的程序,让我们来看看JavaFX Script,然后简单迅速地检验一下在JavaFX和Java中展开配置的不同之处:


  JavaFX Script最初叫做F3,当初这样命名是为了回应web开发者对Java太结构化、太冗长的抱怨,因为开发者习惯了像java script,、Python和 Ruby这样简洁的动态语言。JavaFX Script(通常被简单地称为JavaFX),是一个简单的、静态类型语言(statically typed language),但是它可以编译为Java类文档,不仅可以运行在Java虚拟机上,而且在需要的时候可以调用Java库和代码。这个思想是为了给Java开发者提供一个用户界面语言,它既可以与已经用Java创建的商业逻辑独立开,又不必创建复杂的用于传统桌面领域的Swing应用。相反,他们可以使用JavaFX Script中的代码配置一个JavaFX UI,尽管这可以用Swing组件来完成,但在声明用户界面时JavaFX Script更具直接性。为了更加形象地看到JavaFX Script,这里有一个图形"Hi From Heise"的JavaFX项目。


package hifromheise;


import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;


Stage {
title: "Hi"
scene: Scene {
content: Text {
font : Font {
size : 24
}
x: 10
y: 30
content: "Hi From Heise"
}
}
}



图片22(文字说明为:"Hi from Heise" JavaFX 程序运行)


  这段代码为一个应用声明了一个Stage。这个Stage包含一个Scene,后者是UI元素呈现的概念空间,Scene的内容是一个Text元素,通过它设置字体、在stage中的位置以及包含什么文字。最重要的元素是Scene,它为UI的元素创建了空间。Stage是2D图像,控制许多过度图和动画功能,通常这都需要开发者明确地写出来。


  很强大的一个功能是你可以将UI元素的属性捆绑到变量中,让我们通过创建一个能在文本框里反弹的“Hi”来演示。首先,我们需要对Stage添加一个固定的尺寸:


width:250


height:250


这样我们的文字就有了可以反弹的地方了。然后我们需要确定我们文本的y轴位置,在Stage声明之前添加


var ypos=30;


以此确定我们的变量,在变量里我们可以为文本设定y轴位置:“y:30”:


y: bind ypos


如果我们运行这段代码,那么除了窗口变大之外,其他的都没有改变。现在来看动画的代码,输入代码如下:
import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
and then we add this code at the end;
Timeline {
keyFrames: [
KeyFrame {
time: 0s
values: ypos => 25 tween Interpolator.EASEBOTH },
KeyFrame {
time: 2s
values: ypos => 210 tween Interpolator.EASEBOTH },
]
autoReverse: true
repeatCount: Timeline.INDEFINITE
}.play


  这就创建了一个以关键帧(keyframe)来定义的动画,每个关键帧在设置时定义stage的状态。所以在0秒时,ypos是25,在2秒钟时将是210.“tween Interpolator.EASEBOTH“告诉JavaFX怎样在其他1.99秒中运动。autoreverse属性告诉JavaFX何时返回到最终的关键帧,然后反向运行关键帧。repeatCount决定动画的演示时间。


  最后我们运行这个动画。可以看到文字上上下下平稳地移动,所以用JavaFX做动画是很简单的。



图片33(文字说明:动画"Hi From Heise"JavaFX程序运行;文字顺畅地移动)


  在这里提醒各位注意的是,我上文中用的时间表述是“0s”和“2s”,这是因为JavaFX有一个Duration变量类型,它认为时间是数字和时间单元,所以"1ms"是一毫秒。另外一个值得注意的是绑定,它不会绑到UI声明中,而是更加常规的语言机理。比如这段代码:


var x=10;
var y=20;
var z=bind x+y;


  变量z的结果必定是x+y,无论x或者y如何变化z都会更新。这只是JavaFX语言诸多特性中的一部分,对交互式开发、动态用户界面更加有效。


  所以Sun推出的JavaFX功能强大而且与Java兼容,同时适合构建富互联网应用,这其实也是未来桌面应用开发工具所需要的部分。但是还有一个重要的问题Sun需要解决:配置。 Java在web上的配置一直被认为是一件很痛苦的事情。Applets的支持不均衡,运行在浏览器上有时会将浏览器拖得非常慢,而且有时与浏览器不相容。除此之外,由于向后兼容(backwards compatibility),老版本的Java各个独立存在,让人很是莫不着头脑。尽管这些年来Sun做了很多工作来修补而且进步显著,但所有的这些不良的性能还是导致Java在浏览器端的名声很坏。


  Java Web Start就是Sun的修复工作之一,它允许开发者配置桌面Java应用,而且可以通过web自动升级。开发者可以创建一个JNLP文件来web启动他们的应用,JNLP文件可以被本地的Java获取,然后下载应用的jar文件,创建一个桌面的快捷方式并管理应用的运行。由于JNLP不在浏览器内工作,所以不会将应用植入到web页面中。


  今年初发布的Java 6 Update 10第一次成为模块化的下载,它有一个很小的Java kernel,可以自动下载任何开发者需要的组件。从Java6U10中也可以看到,通过在Java运行时间中补丁升级,Sun正在去除老版本的Java。


  通过合并applet和web start,Java 6 Update 10同样修改了配置问题。现在,一个app

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux与Win下设置vim C/C++语法高.. 下一篇关于socket()和select()的配合使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: