标题：JavaFX
介绍
来源Sun公司（已于2009年被Oracle公司收购）在2008年12月05日发布了JavaFX技术的正式版，它使您能利用 JavaFX 编程语  言开发富互联网应用程序(RIA）。JavaFX Script 编程语言（以下称为JavaFX）是Sun微系统公司开发的一种declarative,statically typed（声明性的、静态类型）脚本语言。JavaFX技术有着良好的前景，包括可以直接调用Java API的能力。因为 JavaFX Script是静态类型，它同样具有结构化代码、重用性和封装性，如包、类、继承和单独编译和发布单元，这些特性使得使用Java技术创建和管理大型程序变为可能。问题答疑JavaFX脚本是一种声明式、静态类型编程语言。它具有一等函数（first-class functions）、声明式的语法、列表推导（list-comprehensions）及基于依赖关系的增量式求值（incremental dependency-based evaluation）等特征。JavaFX脚本为多种多样的操作提供了声明式、无中间程序逻辑的语法，这些操作包括创建2D动画、设置属性或者声明在模式和视图对象之间的绑定依赖关系。JavaFX教程在JavaFX中，类的成员函数和操作本身被模式化作为在目标类中的类，而形参和返回值被表示为属性。代表目标对象的属性名是“this”。代表返回值的属性名为“return”。代表形参的属性具有和形参相同的属性名。而目标对象则指使用成员函数和操作的对象。从上例中可以发现，你也可以从Class对象中获取相同的、被反射的操作。被反射的操作能够像函数那样通过将目标对象作为第一个参数、其它参数作为后面的参数的方式被调用：到底选谁事实上，像Adobe's Flex,Microsoft's Silverlight，以及Sun 最近发布的JavaFX这样的计算技术，使得向量图形实质上优于AJAX提供的Dojo或者Yahoo图形实验室(YUI）这种构架.无论相信与否，在网络应用程序开发中，在基于网络的向量图形的应用方面存在巨大的商机，而这绝不仅仅是看起来比较诱人这么简单。需要注意到，无论是JavaFX，还是Sliverlight现在都没有分享到被Adobe Flash Player占领的任何市场份额。
在javaone2010大会上，oracle正式提出，废除javaFX Script，而使用java语言代替。在2011年上，将会推出预览版。2011年下，推出稳定版。
正式发布
2008年12月05日 Sun微系统公司今天正式发布了基于Java语言的平台JavaFX 1．0，这个平台建立在其广泛应用的Java编程语言的基础上，旨在建立大量可在电脑和手机上运行的网络程序。Java一直以来就是编程语言，但是随着JavaFX的发布，Sun公司开始允许将编程内容创新这一任务转移到以设计艺术为重点而非编程科学为重点的设计人员身上。
“我们的目标群体是叫做创造者的人群”，Sun公司Java平台组的高级副主任 OctavianTanase对 说，“随着1.0版的发布，我们将目标锁定在网页开发人员，这群可能拓展Java界面体验的人。到2011年，主要的目标是大量使用诸如Adobe系统等设计工具的设计人员”。
当然，通向这个以设计为导向的工具还需要一些时间。Sun公司最后打算提供自己的程序给设计人员来建立RIAS，但是直到如今，这些设计人员还得使用程序员所使用的Netbeans或Eclipse集成开发环境(IDE）。新工具将在来年夏天面市。
JavaFX2
JavaFX 2.0版本之前，开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。因为JavaFX Script将会被编译为Java bytecode，程序员可以使用Java代码代替。
JavaFX 2.0之后的版本摒弃了JavaFX Script语言，而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。
在桌面系统上，最新版本的JavaFX支持Windows XP，Windows Vista，Windows 7，Mac OS X和Linux操作系统。JavaFX 2.X版本暂时不支持Solaris操作系统和智能手机操作系统。但是Oracle计划将JavaFX集成到Java SE embedded 8之中，JavaFX for ARM处理器也正处于开发者预览阶段。
例子
package firstjavafxsphere;
import javafx.scene.effect.DropShadow;
import javafx.scene.paint.Color;
import javafx.scene.paint.RadialGradient;
import javafx.scene.paint.Stop;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;
import javafx.animation.Timeline;
import javafx.animation.KeyFrame;
import javafx.animation.Interpolator;
// 比例参数
var scale=1.0;
// 颜色，黄色
var color=Color.YELLOW;
// 时间线
Timeline {
// 重复次数，无限
repeatCount: Timeline.INDEFINITE
// 关键帧组
keyFrames: [
// 一个关键帧
KeyFrame {
// 此帧运行时间，2秒
time: 2s
// 在主时间线获得时，是否可以忽略此活动，默认为false
canSkip: true
// 此关键帧的参数和感兴趣的参数
values: [
// 比例变化到 0.0， 进入和离开都擦除
scale => 0.0 tween Interpolator.EASEBOTH
// 颜色变化到绿色
color => Color.GREEN
]
}
]
}.play(); // 运行时间线
// 舞台/窗口
Stage {
// 标题
title: "My First JavaFX Sphere"
// 窗口的宽度
width: 250
// 窗口的高度
height: 250
// 镜头
scene: Scene {
// 内容，节点列表
content:[
// 圆
Circle {
// 中心点的X/Y坐标
centerX: 100
centerY: 100
// 圆的半径
radius: 90
// 填充设置，圆形梯度扩散填充
fill:RadialGradient {
// 圆心梯度的中心X和Y
// 对于外部的100，100的圆，则75,75出现在外部圆的左上
centerX:75
centerY:75
// 半径和外部的圆相同
radius:90
// 开始和结束值是否为比例值或者绝对值
// 我们用绝对值
proportional:false
// 一些列沿半径的光圈数值，类似关键帧
stops:[
// 光圈1
Stop {
// 偏移在0，也就是起始点
offset:0.0
// 颜色为红色
color:Color.RED
},
// 光圈2
Stop{
// 偏移在100%，颜色为深红
offset:1.0
color:Color.DARKRED
}
]
}
}
// 另一个内容，文本
Text {
// 文本的字体设置
font: Font {
size: 24
}
// 文字的坐标
x: 20
y: 90
// 文字的对齐方式
textAlignment:TextAlignment.CENTER
// 文字的内容
content: "Welcome to \nJavaFX World"
// 文字的填充绑定到color变量
// 时间线影响了color，则影响到了文字的颜色
fill:bind color
// 文字的阴影效果
effect:DropShadow {
// 阴影的偏移，在右下方
offsetX:10
offsetY:10
// 阴影的颜色
color:Color.color(0.1,0.3,0.1）
}
// 文字的变化
transforms:Scale{
// X不变
x:1
// Y绑定在scale变量
y:bind scale
// 变化的中心点，这个设置以文字的中心做变化
pivotX:100
pivotY:100
}
}
]
}
}
开发工具
Sun近日发布了其RIA技术JavaFX的RAD(快速应用开发）工具的体验版，这是一个针对开发人员的JavaFX开发工具。该工具目前已可以在NetBeans 6.8更新中心下载。由于是早期版本，该工具还有一些功能限制，比如：对于JavaFX 1.2中新增的关键组件，如图表（Chart），尚无可视化支持；还不能对组件的某些属性进行可视化编辑；此外，预览视图偶尔会“罢工”以至于必须重启IDE才能恢复正常等。　Sun的开发工具工程部门的负责人David Folk在一个大会上说：“我们甚至不称之为试用版（beta）——而称之为‘早期体验版’，或者‘预览版’”，该工具的真正目的是让你能用JavaFX开发基于表单的应用程序”
这款新的JavaFX工具的基本思想类似于针对Swing的Matisse项目，它提供了与VB或Delphi非常相像的可视化编辑器，简化了 Swing的开发工作。与Matisse一样（它后来变成了NetBeans 5的GUI编辑器），JavaFX工作台在你工作时为你生成代码，而且，尽管你可以查看生成的代码，但不爽的是你不能对其生产的代码进行修改。
当你从调色板(palette）中拖拽一个JavaFX组件到设计区时，你可以为它们绑定数据源。该插件目前支持JDBC数据源、HTTP (XML / JSON）、文件系统（FileSystem）、文件数据源以及内建过滤器。它还提供一些简单的转换器，通过他们你可以方便地将某数据源（比如REST或 JSON数据源)绑定到一组组件上。
除了支持简单地拖放组件的功能外，该插件还有一个“状态”的概念。状态从最初的主状态（master state）开始，你还可以给这些组件或他们的布局增加新状态。应用运行时，比如鼠标点击的事件就可以引发状态转换，进而把你定义的行为自动反映在UI 上。每个转换还上还能附带一个简单的动画，这样，你就能快速创建缩放，渐变和旋转等特效。
该工具还有很多其他有价值的特性，如概览（通过它你可以在不同的屏幕尺度上预览应用，如同在不同的设备上一样，如桌面，移动设备和HDTV等） 以及预定义模板。利用模块你可以快速构建普通的GUI模式，比如向导按钮（取消、后退、下一步和结束等）以及索引按钮（前一步，下一步）。你可以便捷地添加这些按钮并进行客户化。
与众多必需的工具一样，JavaFX需要通过一些瞩目的应用才能获得更多的订单。早期尝试它的公司有Ubivent，它的整个虚拟事件平台是完全基于JavaFX构建的。另外还有WhitStone Technology，他们在其整体服务平台和IT服务管理产品的工作流组件中使用了JavaFX。然而，对于JavaFX来说最重要的单子也许就是 2010冬季奥运会，它的组织委员会是Sun的大客户，它在其网站上使用了基于JavaFX的金牌展示应用。
授权模式
JavaFX的开发者很赞同让用户发布自己的应用，并坚信开源和社区的力量。但当前的JavaFX版本是在评估授权下发布的，因此并不能够被重新发布。你当然能够发布自己编写的基于JavaFX的应用，但不能够和JavaFX一起捆绑发布，并需要告之使用者：需要到openjfx项目站点下载JavaFX二进制代码库。并且，由于正处于早期的JavaFX代码还处在评估授权下，因此它不能用于商业用途。当Sun完成了JavaFX的商业化版本开发后，我相信这将会得到改变。