最近JavaOne會議正在如火如荼的進行中
SUN每年都會發布一些新產品
今年我比較感興趣的是
JavaFX
粗一看以為是SUN的一個動態語言
看了幾個例子以后發現遠不是那么簡單啊~
SUN是想要靠這個東西和
Microsoft:
WPF/
SliverLight
Adobe:
FLEX/
Apolo
在RIA市場上拼一把的!
JavaFX不是一個產品,是一個家族
目前發布的JavaFX家族的產品有JavaFX Script,JavaFX Mobile
當然,這個家族的東西都是開源的(Java都開源了嘛!)
下了幾個例子,感覺都不錯,效果完全可以和Flash一拼了!
以上是JavaFX官網的兩個
例子(需
要JRE
1.5以上),是模仿Flash的Application用JavaFX重寫的。據我使用下來的結果看,和原版的Flash相似度達到98%,只有字體和
Flash有點不一樣。最重要的是這些Applicaton都是基于Swing的,用Java2D或者Java3D渲染。所以,所有能用Swing的地
方,都能用JavaFX,再所以,所有有JRE的地方就能跑JavaFX,cool~cool~而且,SUN還創建了JavaFX
Script這樣的動態語言來幫助編寫這類應用程序。
在我看來JavaFX Script是Java和
VRML的混血兒,看一段代碼:
import javafx.ui.canvas.*;
import javafx.ui.*;
Canvas {
content: Group {
transform: translate(20, 20)
content: ImageView {
transform: []
image: Image { url: "javafxpad/images/duke.gif" }
}
}
}
再來一段
import javafx.ui.*;
import javafx.ui.canvas.*;
class AnimationExample extends CompositeNode {
attribute width: Number;
attribute height: Number;
attribute opacityValue: Number;
attribute rotationValue: Number;
}
// Initial values
attribute AnimationExample.width = 200;
attribute AnimationExample.height = 100;
attribute AnimationExample.opacityValue = 1.0;
attribute AnimationExample.rotationValue = 0;
function AnimationExample.composeNode() =
Group {
content:
[Rect {
width: bind width
height: bind height
arcHeight: 20
arcWidth: 20
opacity: bind opacityValue
transform: bind [translate(80, 50), rotate(rotationValue, width/2, height/2)]
fill: dodgerblue
stroke: darkblue
strokeWidth: 2
},
//......
}
;
Canvas {
content: AnimationExample {
}
}
熟悉VRML和Java的人一定覺得很眼熟。既有Java的優點(面向對象,繼承等等),又有VRML的優點(圖形描述)。而且這個東西非常適合開發拖拉式的IDE。現在Netbeans 5.5已經支持JavaFX語法了,GUI的估計也快了。再說
VRML/X3D,這個東西確實是扶不起的阿斗!如果以后WPF/FLEX/JavaFX都徹底支持3D了,那VRML/X3D就徹底GAME OVER了。
JavaFX確實是讓人眼前一亮的東西,不過我還是優點為她的前途擔憂:
1. 推出時間太晚
現在Flash已經非常成熟,FLAX/Apollo也已經到了推廣階段,SilverLight也開始提供下載,而SUN現在才推出JavaFX的測試版本,是不是太晚了?如果早了一年呢?
2. 速度
Swing慢是眾所周知的,雖然SUN已經花了大力氣,而且確實有成效,不過相對其他應用程序來說還是慢了一點。如果SUN能解決Swing的速度問題,那么憑借JavaFX,Java Applet翻身的機會也不是沒有,Web Start更可以和Apollo拼一拼。