JavaFX 新WebService客户端脚本语言
2008-01-30 16:07
351 查看
在五月份召开的JavaOne大会上,Sun微系统Swing
为什么又要一个脚本语言?
如今脚本语言当然受到了很多的压力。在以前的文章中,我曾经写过Ruby、JavaScript、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对象是如何通过声明的方式来创建的。
消息处理问题
注意这个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>
真正的代码分开定义如下:
现在创建窗口来表示用户接口。注意这个Frame被定义成有一个WeatherData类的本地实例。其中的URL是用来获得我所在的县下周的天气预报。
当这个按钮被点击之后,更新操作被调用,创建一个线程来执行“do later”中的后续代码来填充文本变量。注意TextArea的文本内容是通过wdata.text变量的“bind”关键字来定义的。当该变量的内容 被更新之后,新的文本将自动的出现在窗口当中。
JFX所缺少的东西
swing对象一样方便的操纵XML数据的方法。当然你可以创建自己定制的Java类,并在JFX脚本中使用它们,但是如果能够在处理基于XML的Web service中使用XQuery或者XPath的语法,那么就太方便了。
IDE的支持
我在NetBeans 5.5和Eclipse
谁将是它的竞争对手?
结论
Sun的JavaFX还处于开发的早期阶段。虽然有一些IDE的支持,但是我们仍然缺少正式的文档。凭借着Sun和开放源代码社区的支持,JFX在先进Web service客户端的创建中值得考虑
为什么又要一个脚本语言?
如今脚本语言当然受到了很多的压力。在以前的文章中,我曾经写过Ruby、JavaScript、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 }
消息处理问题
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所缺少的东西
swing对象一样方便的操纵XML数据的方法。当然你可以创建自己定制的Java类,并在JFX脚本中使用它们,但是如果能够在处理基于XML的Web service中使用XQuery或者XPath的语法,那么就太方便了。
IDE的支持
我在NetBeans 5.5和Eclipse
谁将是它的竞争对手?
结论
Sun的JavaFX还处于开发的早期阶段。虽然有一些IDE的支持,但是我们仍然缺少正式的文档。凭借着Sun和开放源代码社区的支持,JFX在先进Web service客户端的创建中值得考虑
相关文章推荐
- JavaFX 新WebService客户端脚本语言
- JavaFX 新WebService客户端脚本语言
- JavaFX 新WebService客户端脚本语言
- 【脚本语言系列】关于PythonWeb客户端标准库requests,你需要知道的事情
- JavaFX脚本语言入门(2)――文字串
- JavaFX脚本语言入门(1)――语法概要
- 在脚本语言中调用WebService的方法
- 《客户端脚本语言-JavaScript》
- android客户端与服务器交互数据(基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合)
- PHP脚本探测客户端浏览器使用的语言
- 用脚本语言读取客户端注册表
- 深入学习JavaFX脚本语言(面向Swing程序员)
- 服务器端脚本语言和客户端脚本语言
- 在脚本语言中调用WebService的方法
- 【脚本语言系列】关于PythonWeb客户端-服务器模块http-urllib,你需要知道的事情
- asp.net客户端脚本调用webservice
- L脚本语言开发的时间获取服务器和客户端
- 客户端脚本语言javascript
- JavaFX脚本语言入门(2)——文字串
- 服务器端脚本语言和客户端脚本语言