在五月份召开的JavaOne大会上,Sun系统Python、JavaServer Pages和Linden Scripting Language等Web service客户端。这些不同的语言共同的目的是尝试着通过提供一种连接现有组件的简单方式来让复杂应用的编写变的更加容易。在JFX的情况中,它最关 心的组件是Swing用户接口组件,该组件最初出现在Java标准库1.2版以补充相当原始的Java AWT工具。

    JFX基础

    这个语言支持常见的变量类型,比如字符串、整型、浮点型和布尔值。对于list和array的扩展支持的语法,在我看来非常强大。这个语言还提供了异常的 创建和处理,并且引入了新的想法,即任何对象可以被抛出,不仅仅是标准的Java Throwable类型。JFX脚本还可以导入Java类、创建Java对象和调用他们的方法。

    JFX对象通过声明的方法来创建。这对于那些为“swing”Java用户接口类提供简化的class非常有用。我们在下面的完整脚本中查看一下JFX对象是如何通过声明的方式来创建的。
  import javafx.ui.*;
  Frame {
  title: "Hello World from JavaFX"
  width: 200
  height: 80
  content: Button {
  text: "Hello World"
  }
  visible: true
 }

 在这个例子中,Frame和Button是用来隐藏将在服务站点检索出来的数据,其中使用了“do later”。首先,我定义了一个叫做WeatherData的JFX类。这个类有两个属性和一个操作。

import javafx.ui.*;
  import java.net.URL;
  import java.lang.StringBuffer ;
  import java.lang.System;
  import java.io.InputStreamReader;
  import java.io.BufferedReader;
  class WeatherData ...{
  attribute source: String ;
  attribute text: String ;
  operation update();
  }

 注意这个JFX类的声明只包括了操作的签名,
<script type="text/javascript"><!-- google_ad_client = "pub-1572879403720716"; google_ad_width = 336; google_ad_height = 280; google_ad_format = "336x280_as"; google_ad_type = "text_image"; google_ad_channel ="2957605308"; google_alternate_ad_url ="http://www.pcdog.com/js/336.htm"; google_color_border = "F5FAFA"; google_color_bg = "F5FAFA"; google_color_link = "1F3A87"; google_color_url = "0000FF"; google_color_text = "000000" google_language = 'zh-CN'; //--></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> 真正的代码分开定义如下:
operation WeatherData.update(){
  var content = new StringBuffer("");
  do later {
  var url = new URL( source );
  var is = url.openStream();
  var reader = new BufferedReader(new InputStreamReader(is));
  var line;
  while (true) {
  line = reader.readLine();
  if (line == null) { break;
  }
  content.append(line);
  content.append("/n");
  } // end while
  is.close();
  text = content.toString();
  } // end do later
  }



  

    现在创建窗口来表示用户接口。注意这个Frame被定义成有一个WeatherData类的本地实例。其中的URL是用来获得我所在的县下周的天气预报。
Frame {
  var wdata = WeatherData {
  text: "initialized"
  source: "http://forecast.weather.gov/MapClick.php?zoneid=TXZ173&TextType=1"
  }
  title: "Weather Forcast"
  width: 400
  height: 400
  background: cyan
  content: BorderPanel {
  border: EmptyBorder{ top: 10 left: 10 bottom: 10 right: 10
  }
  top: Button {
  text: "update"
  action: operation(){ wdata.update();}
  height: 80
  }
  center: TextArea { text: bind wdata.text
  }
  } // close content
  visible: true
  }

    当这个按钮被点击之后,更新操作被调用,创建一个线程来执行“do later”中的后续代码来填充文本变量。注意TextArea的文本内容是通过wdata.text变量的“bind”关键字来定义的。当该变量的内容 被更新之后,新的文本将自动的出现在窗口当中。

    JFX所缺少的东西

   
JFX产品

    结论

   
Sun的JavaFX还处于开发的早期阶段。虽然有一些IDE的支持,但是我们仍然缺少正式的文档。凭借着Sun和开放源代码社区的支持,JFX在先进Web service客户端的创建中值得考虑

相关文章: