QtJambiを使用したJavaデスクトップ開発

Qt Jambiは、リッチなクロスプラットフォームのデスクトップアプリケーションインターフェイスを開発するための、SwingおよびJava2Dの新しく注目に値する代替手段です。この記事では、JavaWorldの寄稿者であるJeff Hansonが、最近リリースされたQt Jambiを紹介し、内部でどのように機能するかを説明し、フレームワークのドラッグアンドドロップAPIと統合開発ツールに慣れるためのプログラミング例を紹介します。

2007年6月初旬にリリースされたQtJambiは、Javaプログラミング言語をTrolltechの人気のあるC ++ GUI開発フレームワークであるQtと統合する開発フレームワークです。デュアルオープンソース/商用ライセンスの下でリリースされたQtJambiは、Java Standard Edition 5.0(JSE 5.0)以降を使用するJava開発者がQtフレームワークの機能を活用できるようにします。Qt Jambiは、業界でテスト済みのクロスプラットフォームサポートに加えて、2Dおよび3Dグラフィックス、ドラッグアンドドロップのオブジェクト間イベントメッセージング、国際化、SQLデータベースアクセス、XMLおよびTCP / IPネットワークプロトコルなどのGUI開発の基本をサポートします。Qt Jambi Eclipseプラグインには、Eclipseを使用してQtJambiの機能にアクセスするオプションもあります。

QtJambiをダウンロード
Qt Jambiは、デュアルオープンソース/商用ライセンスの下で提供されます。 Trolltechのホームページからどちらのバージョンもダウンロードできます。オープンソースバージョンはGNUGeneral Public Licenseの下で提供されており、サポートや保証はありません。 Qt Jambiの商用バージョンを使用するには、商用プロジェクトが必要です。

Qt Jambiは、QtのクロスプラットフォームC ++ GUI基盤に基づいて構築されており、Javaコードを使用してほとんどのデスクトッププラットフォーム用のネイティブルックアンドフィールユーザーインターフェイスを開発するタスクを容易にします。そのため、Javaデスクトップ開発用のSwingおよびJava2Dの興味深い代替手段です。このQtJambiの実践的な紹介では、QtJambiの開発APIと統合開発ツールについて学習します。 Qt JambiのウィジェットベースのGUIフレームワークを紹介し、QtDesignerを使用してプロジェクトを作成する方法を学習します。また、Qt Jambiのシグナルとスロットのイベント処理メカニズムをJavaイベントリスナーフレームワークと比較し、Qt Jambiのグラフィックスレンダリングシステムを最初に見て、Qt JambiEclipseプラグインを介してEclipseとどのように統合されるかを確認します。

例に沿ってフォローしたい場合は、今すぐQtJambiをダウンロードしてください。

QtJambiの概要

Qt Jambiは、GUI開発用のTrolltechのクロスプラットフォームC ++フレームワークをJavaプログラミング言語と統合するJavaベースのフレームワークです。Qt Jambiを使用してJavaデスクトップアプリケーションを開発する場合は、次の機能を使用できます。

  • 2Dおよび3Dグラフィックスの優れたクロスプラットフォームサポート
  • 独自のオブジェクト間イベント通信メカニズム
  • 国際化
  • SQLデータベースへのアクセス
  • XMLのサポート
  • TCP / IPネットワークプロトコルのサポート

Qt Jambiは、Java Standard Edition(JSE)5.0およびJava Enterprise Edition(JEE)5.0以降のほとんどのJVM(Java仮想マシン)で使用できます。Qt Jambiの緊密なOS統合により、ネイティブOSのルックアンドフィールを模倣するJavaデスクトップアプリケーションを作成できます。

QtはJavaプログラミング言語に適合しています

Qt Jambi APIは、TrolltechのネイティブにコンパイルされたC ++ライブラリと相互作用するJavaコードの薄層を提供します。このJavaコード層は、任意のJavaランタイム環境(JRE)で実行され、Java Native Interface(JNI)フレームワークを使用してネイティブC ++ライブラリと通信します。

基本的に、Qt Jambiは、QtのC ++ライブラリの上にJava抽象化レイヤーを配置します。QtのC ++クラスとJavaのコアクラス間の類似性と重複に対処するために、QtJambiは重複するC ++クラスを対応するJavaクラスにマップします。その結果、Qtのネイティブ抽象化で標準のJava構造と演算子を使用できます。Qt JambiAPIと非QtJavaAPIを混在させることもできます。

表1は、同等のJavaコアクラスにマップされるQtクラスを示しています。

表1.同等のJavaクラスにマップされたQtクラス

Qtクラス Javaクラス
QChar charおよびjava.lang.Character
Qハッシュ java.util.HashMap
QList java.util.List
QMap java.util.SortedMap
QString java.lang.String
QThread java.lang.Thread
QVector java.util.List

Qt C ++ APIは、QVariant多くのQt値型をカプセル化するために抽象値型に依存しています。Java言語はすでにすべてのクラス(共通のObject基本クラス)に共通の抽象型を提供しているため、Qt Jambi APIは、ObjectQt C ++が依存する場合は常にクラスに依存しQVariantます。Qt Jambiは、C ++列挙型をJava列挙型にマップして、Qt-Java列挙型とビットフラグの型安全性を強化します。

Qt Jambiには、ActiveX、OpenGL、ClearTypeなどのプラットフォーム固有の拡張機能を利用するウィジェットベースのGUIフレームワークが含まれています。このフレームワークは、Windows、Mac OS X、およびLinuxテーマのネイティブルックアンドフィール機能を提供します。

Qt Jambiのウィジェットは、HTMLカスケードスタイルシート(CSS)と同様のスタイルシート構文に従うため、CSSスタイルのタグとプロパティを微調整することでマイナーまたは広範なカスタマイズを実行できます。Qtのウィジェットをサブクラス化して、ルックアンドフィールのカスタマイズと制御をさらに強化することもできます。

Qt JambiのGUIフレームワークには、デスクトップコンポーネントやアプリケーションを構築する際のレイアウトを簡素化するためにQtDesignerツールに表示されるレイアウト管理クラスが含まれています。図1は、QtDesignerツールの[レイアウト]ウィンドウを示しています。

Qt JambiのGUIフレームワークは、ドッキング可能なコンポーネントを使用してアプリケーションを構築するためのAPIを提供します。特に、この機能を使用して、ネイティブのルックアンドフィールドッキングツールバーを備えたデスクトップアプリケーションを作成できます。