技术开发 频道

JavaFX 新WebService客户端脚本语言

    注意这个JFX类的声明只包括了操作的签名,真正的代码分开定义如下:
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语言提供的功能当中最明显的缺憾就是少了像处理swing对象一样方便的操纵XML数据的方法。当然你可以创建自己定制的Java类,并在JFX脚本中使用它们,但是如果能够在处理基于XML的Web service中使用XQuery或者XPath的语法,那么就太方便了。

    IDE的支持

   
我在NetBeans 5.5和Eclipse IDE中都找到了插件。NetBeans的插件提供了对编辑语法和用法的支持,但是不完全JavaDocs类型的文档。NetBeans插件不支持图形接口版面,但是这应该不是很难增加。另外一个商业的IDE,ReportMill,正在尝试在他们的报表设计编辑器中支持JFX。

    谁将是它的竞争对手?

   
假设JFX在使用Swing组件创建富用户接口方面已经做的很好,让我们想想谁会与之竞争。在我看来,Flash是当今Internet上使用得最广的富用户接口技术。Flash拥有巨大的优势,因为它几乎在所有的Internet用户浏览器上安装了,并且很容易被升级。
    几年前,我注意到了Flex脚本语言,它可以被用于使用XML来定义Flash用户接口,但是在当时这套开发工具的许可证费用非常昂贵。Adobe收购了Macromedia改变了这种状况,现在有一个免费的Flex编辑器并且计划将Flex的“核心”作为开放源代码项目,而更高级的工具继续作为商业产品。

    结论

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