初出: 2007/04/28
最新: 2007/04/28
[3. D言語各論] に戻る
tioport とは、 Java to D のソースコード変換プログラムです。
特に、eclipseなんかで使われているGUIツールキットであるSWTを D言語に移植するのを最初の目標として作られています。同時に、 Javaの標準ライブラリのD移植版 'dejavu' も作られてます。
準備がちょっと色々必要です。
tioportは、Phobosでは使えません。Tango 必須です。 入れといてください。
ビルドに DSSS を使います。 入れとしてください。
ビルドに、さらにRuby版Makeである Rake を使います。
Windowsの場合 One-Click Installer でRubyを入れると勝手に入ってるそうです。Linuxだとapt-getとかで。Rakeの公式サイトからダウンロードして
ruby install.rb
とやってインストールすることもできます。
mango ライブラリが必要です。
dsss net install mango
でインストール完了。
Subversionで
svn co http://svn.dsource.org/projects/tioport/trunk tioport
とやるとソースが入手できます。SWT/tioport をビルド&インストールするには、 ソースのルートディレクトリで
rake swt321
と打つと完了です。
(※Windowsでruby install.rbで入れたらrakeコマンドがどこにもなかったりしたので、
その場合は ruby (ruby.exeのあるディレクトリ)\rake.rb swt321
コマンドで。)
コンパイル・実行時に、tioport/swt-3.x.x-環境名/lib ディレクトリに入っている ライブラリが必要です。どこか適切な場所に置いておいてください。他の必要なファイルは DSSSでちゃんとインストールされてます。
何も中身のないウインドウを出すサンプル。
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.StaticCtorsSwt;
import dejavu.lang.String;
// Javaの埋め込みリソースのエミュレートに必要なダミー関数
extern(C) ubyte[] resources_getDataById( char[] aId ){ return null; }
void main()
{
// 初期化
callAllStaticCtors();
auto display = new Display();
scope(exit) display.dispose();
auto shell = new Shell(display);
// 文字列はdejavu.lang.Stringに変換してやる必要あり
shell.setText(String.fromUtf8("てすとだよ"));
shell.open();
while( !shell.isDisposed() )
if( !display.readAndDispatch() )
display.sleep();
}
理由はよくわかりませんがDSSSでビルドすると異様に時間がかかるので、 私はdmdで直接ビルドしちゃってます。sc.ini をいじって dsss\import\d と dsss\lib を 見るように設定してから、こんな感じ。
> dmd test.d -L/exet:nt/su:windows:4.0 swt-wgl-win32-3235.lib swt-awt-win32-3235.lib swt-gdip-win32-3235.lib swt-win32-3235.lib Sdejavu.lib Stioport-swt-3.2.1-win32.lib
そしてここまで書いたところであまりのビルドの重さに疲れたので、 もうちょいなんとかならないか調べてから続きは書こうと思います。
メモ書きです。細かいことは一切不明。
cd javaxmlconverter rake
で、javaxmlconvert.jar が作れる。JavaのソースをXMLに変換するプログラム。使い方は
java -cp javaxmlconvert.jar javaxmlconvert.JavaXMLConverter [config.xml]
次に
cd ../tioport dsss build tioport.d
で tioport.exe が作れる。javaxmlconverterの出力をDに変換するプログラム。使い方は
cd ../tioport tioport [config.xml]
こう。config.xmlファイルは両者共通のconfigファイルで、変換するソースやディレクトリの指定を書く。 ports/dejavu/tioport.xml や ports/swt-3.2.1/swt-3.2.1-win32/swt-3.2.1-win32.xml がそれなので、 書き方はそっちを見ながら適当に。swtがやっているように、java.langをdejavuとして参照しながら 変換しないといけない模様。