拡張性と他の Java コードとの比較
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/23 13:51 UTC 版)
「Standard Widget Toolkit」の記事における「拡張性と他の Java コードとの比較」の解説
ネイティブコードを利用するため、SWTクラスでは全ウィジェットクラスについて、継承は容易には許されない。このため、拡張性に問題があるとする人もいる。この点ではSwingの方が容易にカスタマイズ可能である。どちらのツールキットも新たなウィジェットをJavaコードだけを使って書くことができる。 SWTはAWT同様、手動でオブジェクトの解放をする必要がある。SwingやJavaのメモリの自動ガベージコレクションとは異なる。close() しないといけないI/Oリソースと同じである。SWTオブジェクトは "dispose()" メソッドを使って明示的に解放する必要があり、C言語の "free" に似ている。これをしないと、メモリリークなどの好ましくない結果を生じる。ただし、親子関係にある Widget は親を dispose() すれば、子も dispose() される。この問題について、「リソースの明示的解放の必要性は、少なくとも平均的なJava開発者にとっては、開発時間とコストに悪影響を及ぼす」とのコメントもある。さらに「これはありがた迷惑である。Swingがより自動化され遅いのに対して、SWTはよりきめ細かいコントロールができるが複雑になる」としている。SWTが手動でのオブジェクト解放を必要とするのは、ネイティブオブジェクトを使っているのが主な原因である。つまり、それらオブジェクトは Java VM の管理範囲外にあり、Java VM からそれらが解放可能かどうかを判断できない。
※この「拡張性と他の Java コードとの比較」の解説は、「Standard Widget Toolkit」の解説の一部です。
「拡張性と他の Java コードとの比較」を含む「Standard Widget Toolkit」の記事については、「Standard Widget Toolkit」の概要を参照ください。
- 拡張性と他の Java コードとの比較のページへのリンク