JavaFX 1.1新特性

分类: JavaFX新闻.
标签: ,

节译自 http://javafx.com/faq/

(JavaFX博客 http://www.javafxblogs.com/ 消息)

JavaFX 1.1 主要是给移动设备提供了所有必须的工具来创造JavaFX内容,同时也带来了一些与功能和性能相关的提升,包括:

。主要的JavaFX 1.1 特性:

。 JavaFX 移动设备模拟器可以使开发人员在桌面系统中直接创造复杂和描述性的移动内容

。 JavaFX 桌面运行环境的更新,提高了性能和稳定性

。 在同样的代码上可以更好地支持移动或桌面应用的开发

。JavaFX 1.1 平台特性:

。 “全屏”应用的支持

。 对需要跨域访问的应用有了更好的支持

。 跨平台内容的标准导航方式

(JavaFXGuy http://javafxguy.javaeye.com/

。JavaFX 1.1 生产套件

。增加了对导出资源的支持,这些资源可以给JavaFX的移动应用使用

。JavaFX 1.1文档

。 更新了GUI教材对桌面和移动的支持

。 更新了媒体浏览器教材对高级JavaFX功能的支持

。 改进了语言参考指南

。 新的“最佳实践”编程指南,帮助开发人员充分利用高性能的VM,并提高应用中的图形、动画和媒体用户体验等。

。JavaFX1.1 语言的增强

。 增加了所有java的基本数据类型,如float,double,long, int, short, byte, char,

。 Sequence性能和资源消耗的优化

。 动画功能的动态资源优化

(JavaFXGuy http://javafxguy.javaeye.com/

原文相关段落:

JavaFX 1.1 delivers all of the tools necessary to create JavaFX content for use with mobile devices and delivers a number of functional and performance related enhancements to JavaFX Platform, including:

  • Key JavaFX 1.1 Features
    • JavaFX Mobile Emulator to enable developers to begin creating advanced, expressive mobile content directly on their desktop
    • JavaFX Desktop Runtime updated to improve performance and stability
    • Better support for developing mobile or desktop apps from the same code-base
  • JavaFX 1.1 Platform Features:
    • Support for “full screen” applications
    • Improved support for applications that need to access resources across multiple domains
    • Standard navigation method for cross-device content
  • JavaFX 1.1 Production Suite:
    • Adds support for exporting assets for use with JavaFX Mobile applications
  • JavaFX 1.1 Documentation:
    • Updated GUI tutorial with support for Desktop & Mobile
    • Updates to the media browser tutorial to add support for advanced JavaFX features
    • Improved Language Reference Guide
    • New “Best Practices” programming guide to help developers fully leverage the high performant VM and to improve graphics, animation and media experience in the apps
  • JavaFX 1.1 Language enhancements:
    • Addition of all Java primitive numeric types (float, double, long, int, short, byte, char) to the type system
    • Sequence performance and footprint optimizations
    • Dynamic footprint optimizations in animations

评论 (0) 2009年03月04日

JavaFX和Java之间的互操作性

分类: JAVAFX技术.
标签: , ,

JavaFX官方博客上读了一篇文章,是讨论从java代码中调用JavaFX类的方法。现在的情况是,JavaFX可以调用Java的类,基本没有什么限制,而反过来,Java却不可以随便调用JavaFX的类。这点可以从JavaFX项目的编译过程看出原因。以NetBeans为例,Build的过程是先编译Java代码(javac),然后才是JavaFX代码(javafxc),这样一来,java代码不知道有javafx类,而javafx类却可以”看见”java类。搜索一下我们可以发现,很多程序员都在寻找各种从java中调用JavaFX类的方法。有一篇有趣的(英文)文章是介绍如何通过反向工程来分析JavaFX类的结构。就连那篇JavaFX官网上的文章,也采用了非标准的API来实现这一目的,而且也”保证”这种方法肯定会在下一版本中失效。

那么我们到底需不需要java和javafx之间的这种互操作性呢?我觉得这种互操作性是很有必要的。如果两者可以近似于可以混用的程度,从长远上看,JavaFX可以有更大的生命力。试想一下运用MVC的设计模式(Model-View-Controller),我们可以用java和javafx结合在一起开发应用:用java来写”M”和”C”两部分,用javaFX来写”V”部分,这将是非常有趣的一件事情。

目前,有几种”标准”的方法来从Java调用JavaFX。
1) 使用ScirptEngineManager类,的文章提到,我们可以这样做:

package calc;
import java.io.InputStreamReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class CalculatorLauncher {
public static void main(String[] args) {
 try {
 ScriptEngineManager manager=new ScriptEngineManager();
 ScriptEngine engine = manager.getEngineByExtension("fx");
 InputStreamReader reader = new InputStreamReader
 (CalculatorLauncher.class.getResourceAsStream("Calculator.fx"));
 engine.eval(reader);
   } catch (ScriptException ex) {
  }
 }
}

但是,这种方法其实没有多大意义,因为它就是象System.exec(”calc”)那样做个系统调用而已。我觉得还不如用System.exec(”javafx Calculator.fx”)更加直接一些。

2) 采用Java Reflection来解析JavaFX的bytecode,得到各个method或属性,然后进行各种调用。原理上这是可行的。但是由于reflection非常复杂,使得实用性大打折扣,同时,代码也没有什么可读性了。

3)第三种方法是定义一个java的interface,然后在JavaFX中实现这个 interface。例如:

public interface JavaInterface
{ ... }

在 MyJavaFXClass.fx中, 可以这样写:

public class MyJavaFXClass extends JavaInterface
{ ... }

在java代码中,只需按照interface来调用JavaFX对象即可。这种方法可以解决大部分互操作性的问题。唯一的麻烦就是必需定义一大堆interface,但是这是我目前位置发现的一种最好的解决形式。
JavaFX现在是刚发布的第一版,所以我们无需对它苛求太多了。不过我还是希望javaFX的设计者在下一版本中认真考虑这个问题。

评论 (1) 2009年01月15日

用JavaFX编写的游戏Pac-Man

分类: JavaFX编程.
标签: , , , , , , ,

最近读了些JAVAFX的文章,看了一些示范程序,于是决定写个游戏试一试。大概花了2周的业余时间,写成了一个Pac-Man游戏(俗称PCMAN或吃豆子)。虽然离真正的“街机”版还有一段距离,但是也基本体验了JavaFX编程的易用性。由于处于学习阶段,还有很多需要改进的地方,以后有时间慢慢改改吧。现在答应了某个英文网站去写一篇文章介绍如何编写这个游戏,因此源代码暂时不能公开。待文章发表之后,大家可以看看代码,切磋一下。

这个游戏程序主要采用了以下JAVAFX技术:

1) 绑定(binding)

2)动画(animation)

3)变换(transform)

4) Java类集成

5)声明式语言

大家可以点击以下图标启动该游戏,需要JRE1.5以上,用1.6U10以上效果更好。第一次运行时,可能需要等一些时间(因为要下载JavaFX Runtime)….

screenshot

目前,JavaFX只支持Windows和Mac平台,Linux平台有一些变通的办法,可以google一下。

如果无法运行本程序,大家还可以看看YouTube上的视频:

评论 (5) 2008年12月12日

JavaFX SDK 1.0 正式发布

分类: JAVAFX技术, JavaFX新闻.
标签: , , , , ,

今天,期盼已久的JavaFX SDK 1.0 终于正式发布了,这是个令人振奋的消息。JavaFX平台给程序开发者和界面开发人员带来了一种全新的合作模式,使得丰富互联网应用(RIA)可以的开发变得非常简单。JavaFX是基于Java技术来实现的,因此它和Java几乎是可以无缝的集成在一起。由于运行Java的设备已经超过了50亿个(手机、PDA,电脑等等),Java程序员也超过了6百万人,JavaFX脚本语言的推出,势必会得到广泛的支持。

JavaFX里有一个比较创新的功能,就是可以拖拽-安装的魔法(JDK1.6 U10+)。浏览器里的Applet可以直接拖到桌面上来完成安装,或者运行在另外一个独立的窗口中(即脱离浏览器)。以前用过Applet的用户,应该会感到耳目一新。

其他各种有用的功能包括绑定,动画,图像效果等,都把传统的SWING或Java动画大大向前提高了一个层次。NetBeans 6.5版本是目前最好的集成开发环境IDE。我试了一下,写个“HELLO WORLD”JavaFX程序大概只要3-5分钟。

接下来我会试着写一些程序全面体会一下JavaFX的功能。

评论 (0) 2008年12月04日