据说极有可能迅速取代目前流行的SWING和SWT技术。
转自http://blogs.sun.com/chrisoliver/entry/f3
F3
My name is Chris Oliver. I came to Sun through their acquisition of
Seebeyond in September 2005. I'd like to present something about my
current work – it’s not public yet but it should be open-sourced on
java.net shortly.
My project is called F3 which stands for “Form follows
function”, and its purpose was to explore making GUI programming easier
in general.
F3 is actually a declarative Java scripting language with
static typing for good IDE support and compile-time error reporting
(unlike JavaScript...), type-inference, declarative syntax, and
automatic data-binding with full support for 2d graphics and standard
Swing components as well as declarative animation. You can also import
java classes, create new Java objects, call their methods, and
implement Java interfaces.
We have IDE plugins for both Netbeans and Eclipse Both plugins support
as-you-type validation, code-completion, syntax highlighting, and
hyperlink navigation (with control-mouse-over).
F3 attempts to demonstrate that we're not exploiting the full
capabilities of the Java platform for GUI development and that together
with supporting tools like F3, the Java platform is highly competitive
with or superior to competing GUI development platforms such as
Macromedia Flash/Flex/Open Laszlo, Adobe Apollo, Microsoft WPF/XAML,
Mozilla XUL, AJAX/DHMTL..
F3 fully supports Swing as well as Java2D. In fact, we have a translator that can translate most of SVG to F3.
Here are some small examples to give you a flavor of what F3 is like:
1 import f3.ui.canvas.*;
2
3 import f3.ui.*;
4
5 Canvas {
6 content: Rect {
7 x: 20
8 y: 20
9 height: 80
10 width: 300
11 arcHeight: 20
12 arcWidth: 20
13 fill: cyan
14 stroke: purple
15 strokeWidth: 2
16 }
17 }
18
produces:
An example using image filters is:
1 import f3.ui.*;
2
3 import f3.ui.canvas.*;
4
5 import f3.ui.filter.*;
6
7 Canvas {
8 content: Text {
9 x: 20
10 y: 20
11 content: "Welcome to F3"
12 font: Font { face: VERDANA, style: [ITALIC, BOLD], size: 80 }
13
14 fill: LinearGradient {
15 x1: 0, y1: 0, x2: 0, y2: 1
16 stops:
17 [Stop {
18 offset: 0
19 color: blue
20 },
21 Stop {
22 offset: 0.5
23 color: dodgerblue
24 },
25 Stop {
26 offset: 1
27 color: blue
28 }]
29 }
30 filter: [Glow {amount: 0.1}, Noise {monochrome: true, distribution: 0}]
31 }
32 }
which gives:
It’s also possible to use 2D content as a TexturePaint through the concept of a “Pattern” as in SVG, for example:
1 import f3.ui.*;
2 import f3.ui.canvas.*;
3
4 Canvas {
5 content: Ellipse {
6 fill: Pattern {
7 content: Polygon {
8 points: [5, 5, 25, 5, 15, 25]
9 fill: orange
10 stroke: red
11 strokeWidth: 3
12 }
13 }
14 cx: 100
15 cy: 50
16 radiusX: 90
17 radiusY: 40
18 stroke: black
19 }
20 }
which gives:
These snippets don’t demonstrate F3’s full capabilities.
Using F3, I’m able to write nearly exact replicas of many Flash
or DHTML or Java programs in a remarkably short amount of time, for
example this Flash program the F3 version below was written in 2 days):
This combination DHTML/Flash program the F3 version below (although incomplete) was also written in about 2 days:
posted on 2007-05-07 22:30
wqwqwqwqwq 阅读(983)
评论(1) 编辑 收藏 所属分类:
SUN Tech