JavaFX 新WebService客户端脚本语言
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                JavaFX 新WebService客户端脚本语言
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            在五月份召開的JavaOne大會上,Sun微系統公司宣布了一個新的產品系列JavaFX,由JavaFX腳本和JavaFX Mobile組成。JavaFX腳本語言被用來讓使用Java“Swing” 用戶接口庫來創建富用戶接口變得更加容易,該用戶接口可以在支持Java標準版的任何設備上運行。Sun想要將該語言作為開放源代碼項目發布。需要注意人 們習慣將JavaFX腳本稱為JavaFX或者JFX,但是Sun還是將JavaFX Mobile放到了JavaFX產品線中。我將在這篇文章中使用JFX來指代JavaFX腳本。 
??? 為什么又要一個腳本語言?
??? 如今腳本語言當然受到了很多的壓力。在以前的文章中,我曾經寫過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 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語言提供的功能當中最明顯的缺憾就是少了像處理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客戶端的創建中值得考慮
                        
                        
                        ??? 為什么又要一個腳本語言?
??? 如今腳本語言當然受到了很多的壓力。在以前的文章中,我曾經寫過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
}
?在這個例子中,Frame和Button是用來隱藏將在屏幕上顯示出來的JFrame和JButton對象的創建細節的腳本類型。這個Frame類有名為“title”、“width”、“height”、“content”和“visible”的公共“屬性”,它們都在聲明中被設置了。 
??? 消息處理問題 
?JFX 也有每一個圖形用戶接口工具都會遇到的問題。點擊按鈕之類的用戶事件一定不能和需要長時間執行任務的事件處理線程綁定,因為在該任務執行的時候,這個接口 會毫無反應。JFX提供了“do”和“do later”原語來處理這個問題。我使用一段腳本來試驗JFX顯示出從天氣預報服務站點檢索出來的數據,其中使用了“do later”。首先,我定義了一個叫做WeatherData的JFX類。這個類有兩個屬性和一個操作。 
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語言提供的功能當中最明顯的缺憾就是少了像處理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客戶端的創建中值得考慮
轉載于:https://www.cnblogs.com/lanzhi/archive/2008/01/30/6470828.html
總結
以上是生活随笔為你收集整理的JavaFX 新WebService客户端脚本语言的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: [新功能]Blog首页仅列出标题
- 下一篇: 程序员想找工作怎么办?如果记住这一点,不
