今月は、再びJavaFXの連載に戻ります。

 9月にサンフランシスコで開催されていたJavaOneにおいてJavaFX 2.0が発表されました。詳しくは先月のJavaOneレポートをご覧になっていただきたいのですが、JavaFX 2.0では、JavaFX Scriptのサポートが打ち切られてしまいました。

 つまり、JavaFX 2.0はJavaで記述するGUIのフレームワークとなってしまったわけです。

 JavaFX 2.0がリリースされるのは来年なので、急にJavaFX Scriptがなくなってしまうわけではありません。また、JavaFX 2.0の発表をうけて、JavaFX ScriptをオープンソースでサポートしていくというVisageプロジェクトも立ち上がっています。

 とはいうものの、JavaFX Scriptに対する注目度は確実に下がってしまいました。

 本連載でも6回にわたってJavaFX Scriptを取りあげてきましたが、少し方向変換をしていこうと思います。現行のJavaFX 1.3.1の解説は今月と来月でいったん区切りをつけます。

 そして、JavaFX 2.0のリリースが近づいてきたときに、改めてJavaFX 2.0について取りあげていく予定です。

 さて、今月はHTTPを使用した通信について解説します。また、HTTPを用いた通信の応用としてRESTful Webサービスも取りあげます。ただし、その前に準備としてJavaFXからJavaのライブラリを使用する方法と、非同期処理について解説します。

 そして、後半ではアニメーションについて取りあげます。

Javaのライブラリを使用する

 JavaFXはJava VMで動作します。このこともあって、JavaFXではJavaのライブラリを容易に呼び出せるようになっています。

 ここでは、汎用のJavaライブラリとSwingコンポーネントに分けて、呼び出し方を解説します。

汎用Javaライブラリの使用

 JavaFXはGUIに特化しているため、汎用に使えるライブラリがかなり不足しています。例えば、URIを表すクラスさえありません。

 そのような汎用のクラスはJavaのクラスを使用するようにします。

 例えば、http://javainthebox.net/を表すURIを作成するには、次のように記述します。

import java.net.URI;
  
// JavaのURIオブジェクトを生成
var uri: URI = new URI("http://javainthebox.net/");
println("URI: {uri}");

 JavaFX ScriptでJavaのクラスを使用する場合は、常にimport文が必要です(青字部分)。Javaとは異なり、Systemクラスなどjava.langパッケージで定義されているクラスであっても、import文を記述しなくてはいけません。

 赤字の部分が、URIオブジェクトを生成している部分です。

 JavaFX Scriptのオブジェクト生成とは異なり、オブジェクト生成にはnewを使用します。つまり、Javaでのオブジェクト生成と全く同じ記法をとります。

 従って、クラス名の後のカッコの中には、コンストラクタに引き渡す引数を記述します。ここでは、"http://javainthebox.net/"という文字列をコンストラクタの引数として用いています。

 オブジェクトを生成してしまえば、後はJavaFX Scriptのオブジェクトとなんら変わることなく使用することができます。

 JavaFX Scriptにはstatic関数はありません。しかし、Javaのstaticメソッドは使用することができます。

import java.net.URI;

// URIクラスのstaticメソッドであるcreateメソッドをコール
var uri: URI = URI.create("http://javainthebox.net/");
println("URI: {uri}");

 JavaFX Scriptであっても、JavaのstaticメソッドのコールはJavaと同じように記述します。

 ここでは、"http://javainthebox.net/"を引数にして、URIクラスのcreateメソッドをコールしています。