2006年11月01日
Look & Feel を自作する方法の紹介。自分好みの Look & Feel を作成して使用したり、公開したりするための Tips。
【キーワード】
Look & Feel、Look And Feel、lnf、ルック&フィール、自作、つくり方
プライベートなメソッドやフィールドに外部から強引にアクセスする方法。カプセル化を破壊するので通常のプログラミングではまず使うべきではないが、ライブラリ利用時にどうしてもある状態をつくり出したい時や、private メソッドに対するテストケースを作成したいときに、テストケースのためだけにメソッドのシグニチャを変更したくないときなどには便利。かなり有名な方法ですが、一応、Java 関連の Tips ということで。
【キーワード】
private、プライベート、method、メソッド、field、フィールド、アクセス、変更、呼び出し、リフレクション、reflection、getDeclaredMethod、getDeclaredField
2006年10月27日
クラスローダーを自作する方法の紹介。クラスローダーの自作が有効なケースとして代表的なものは次の通り。
・同一 FQN で異なるクラスを扱いたい(複数バージョンのライブラリを同一 JVM 上で取り扱いたいときなど)
・クラスの定義を Jar ファイルからの読み込み / HTTP からのクラス定義のロードなどの標準的な方法ではなく、独自の方法で動的にロードできるようにしたい。
【キーワード】
クラスローダー、ClassLoader、自作、つくり方
eclipse の登場もあり、プロファイリングツールも充実してきた今日この頃であるが、どんなに便利になろうとも昔から存在する機能やツールというのは意外と使い手があったりする。ということで、何とも今更ではあるが、hprof の使い方の紹介。4年前に書いたものをそのまま貼り付けただけなので情報が古くなっている可能性あり。
【キーワード】
プロファイリング、プロファイル、profile、サンプリング、sampling、CPU 使用状況、メモリ使用状況、メソッド呼び出し回数、メソッド呼び出し頻度、オブジェクトのサイズ、インスタンスのサイズ
2006年04月17日
SoftReference/WeakReference/PhantomReference が含まれる java.lang.ref は JDK1.2 の頃に導入されたパッケージであるが、昔から用意されている API の割にあまり使われていない。このパッケージを利用するとプログラムからガーベージコレクタとの対話を可能になるため、開発の中でヒープの動作をプログラム的に調整したい場合には便利である。
【キーワード】
リファレンス、reference、java.lang.ref、SoftReference、WeakReference、PhantomReference、ReferenceQueue、ガーベージコレクション、ガーベージコレクタ、GC、Garbage Collection、Garbage Collector
Autoboxing は便利な機能である。
だが、実際の挙動を表すコードが隠れてしまう分、意外なところで問題が発生したりして注意が必要である。例えば私が最近見た例だと、次のようなものがある。
オブジェクトをディープコピーに対応させる際に、コピー対象のオブジェクトごとに clone() メソッドを定義していく手間を省くことができるシリアライズを利用したディープコピーの方法の紹介。
【キーワード】
ディープコピー、Deep Copy、シリアライズ、直列化、Serialization、Serialize
サブクラスの実装で finalize() メソッドがオーバーライドされており、その実装が誤ってスーパークラスの finalize() メソッドを呼び出し忘れてしまっても安全にスーパークラスのファイナライズ処理が行えるようにしたい。
【キーワード】
ファイナライザ・ガーディアン、Finalizer Guardian、Finalize