Apache Beehive の状況を知るために調べてみた。beehiveを見ると活動が停止しているようにみえる… でも実は、http://incubator.apache.org/beehive/がプロジェクト自体のサイトで、きちんと活動は継続していました。2.0へ向けての作業も始まっているようです。
「Java」カテゴリーアーカイブ
Swing Painting Guidelines
JavaのSwingによる描画について調べてみたところ、こんなに良い記事がありました。
Painting in AWT and Swing
ここにSwingを使うときのガイドラインがありましたので、意訳して紹介しておきます。
- Swingの描画ではAWTとは異なり常にpaintメソッドが使われる(updateメソッドは呼び出されない)
- paintメソッドを直接呼ばないで、repaintメソッドを呼ぶこと
- 複雑な描画処理をする場合は影響範囲を限定するために、パラメータつきのrepaintメソッド(たとえば public void repaint(int x, int y, int width, int height)など)を呼ぶこと
- Swingの描画はpaintComponent()、paintBorder()、paintChildren()を順番に呼び出すので、Swingコンポーネントを拡張(extends)する場合には、独自の描画コードはpaintComponentメソッドにコーディングすること(paintメソッドにはコーディングしない)
- Swingには描画の効率に影響する2つのプロパティ、opaque(コンポーネントのすべての点を描画するかしないか)とoptimizedDrawingEnabled(子コンポーネントの重なりがあるか否か)があるので適切に使用すること(getter, setter が用意されている)
- Swingコンポーネントのopaqueがtrueに設定されたときはこのコンポーネントの境界内で描画されていた背景はすべて上書きされる
- opaque かoptimizedDrawingEnabled のどちらかにfalseが設定されたときは、描画操作に対してより多くの処理が必要になるので、適切な設定をするように気をつけること
- UI delegatesをもつSwingコンポーネント(JPanelを含む)を拡張(extends)する場合には、paintComponent()の実装の最初にsuper.paintComponent()を呼び出すこと
- SwingはJComponentのdoubleBufferedプロパティでダブルバッファリングを簡単に利用できるようになっており、すべてのSwingコンポーネントでこのプロパティは有効になっていますが、Swingコンテナでこの値をtrueにすると個々の設定を無視してすべてtrueになる
- すべてのSwingコンポーネントについてダブルバッファリングは有効にすることを強く推奨する
- 複雑な描画をするComponentでは描画対象領域を狭めるためにクリップ領域の指定を上手に利用すること
AWT Painting Guidelines
JavaのAWTによる描画について調べてみたところ、こんなに良い記事がありました。
Painting in AWT and Swing
ここにAWTを使うときのガイドラインがありましたので、意訳して紹介しておきます。
- 基本的には(updateメソッドではなくて)paintメソッドに描画処理を記述すること(updateメソッドはオーバーライドされていなければpaintメソッドを呼ぶので何もかかなくてよい)
- paintメソッドを直接呼ぶのではなく、repaintメソッドを呼ぶこと
- 複雑な描画処理をする場合は影響範囲を限定するために、パラメータつきのrepaintメソッド(たとえば public void repaint(int x, int y, int width, int height)など)を呼ぶこと
- repaintメソッドは内部的にupdateメソッドを呼びますから、paintメソッドで描画された結果へ重ねて描画することをしたいなら、updateメソッドをオーバーライドすること
- java.awt.Containerのpaintメソッドをオーバーライドするときは、(最後に)super.paintメソッドを呼び出すこと
- 複雑な描画をするComponentでは描画対象領域を狭めるためにクリップ領域の指定を上手に利用すること
Java Plug-in 1.4 Developer Guide
Java2 SDK のドキュメントには Java Plug-in 1.4 開発者ガイド というのがあるのですが、これのメニューが文字化けしています。これは本文がISO-2022-JPであるにも関わらず、$JDK_HOME/docs/ja/guide/plugin/developer_guide/menu_script.js がEUC-JPで保存されているからですので、ローカルのドキュメントで持っている人は文字コードを変換しておきましょう。フィードバックしようとしたらエラーが発生してレポートを遅れませんでした(T_T)。
JDNC
JDNCは面白そうです。「データ中心型、簡単リッチクライアントJDNC」という記事が参考になります。
Tool
ちょっとしたツールを作ってみた。
fmlで作ったMLのスプールにあるメールからDate, From, Subject の情報を抜きだして一覧にするために使う。Linuxで動作する。
OpenOffice.org 2.0 beta requires Java
Java fallout: OpenOffice.org 2.0 and the FOSS community によると、OpenOffice.org 2.0 のいくつかの新機能が JRE を要求することに対して FOSS コミュニティで議論がおきているらしい。Javaが完全なオープンソースとならない限り、この手の議論はなくならないのだろう。そうすると、他に仮想マシンを対象としたフリーの言語がでてきて、各OS用の仮想マシンが実装されてリリースされるという状況になっていくと、Javaは足元をすくわれるかもしれない。
実際のところとしては、OpenOfficeを使うような人にとってJREをインストールすることはさほど手間ではないような気がするので、あまり影響はないような気もするけれど、議論されているのはきっと思想的な部分のような気もするので、とりあえず様子見。