2012/04/07 (2012年04月 のアーカイブ)
Javaのルック&フィール
ここ最近、Javaをいじくり回しています。
まあクロスプラットフォームと言えばJavaですからねえ、原点回帰というか。しかしまあ、Javascriptのゆるゆるな感じに慣れてしまうとどうも窮屈なんだよなあ。良くあるシングルトンパターンなんて自分で首を締めておいて一生懸命抜け道を探しているみたいなものなんじゃないかい。
でまあ、デスクトップアプリ環境として見た場合、パフォーマンスは置いておくとして、見てくれの部分が非常に微妙なのだよ。駄目と言うわけではなく凄く頑張ってるとは思うのだけどね。
今Javaの表示系として使えそうなものは AWT / Swing / SWT という選択肢があるんですが・・・。
上が昔からあるJavaのAWTを使って書いたもの。今となっては古い設計で、ネイティブのWidgetを呼び出しているのだけど、いわゆるクラシック表示ですね。下はSWTで書いたもの。ネイティブアプリと同等の表示を目指した薄いラッパーなので見てくれとしてはネイティブアプリと同等。ただしこれはJavaとしては非公式のライブラリで、プラットフォーム毎にDLLが必要になります。特に今Max OSでは64bit JavaVM と32bit JavaVMが混在していてちょっと面倒な事になっているようです。
http://www.eclipse.org/swt/
Java公式のAWT後継の表示ライブラリはピュアJavaで書かれたSwingです。デフォルトは上段の表示。これ結構見かけますね。普通にSwingで書けばこうなります。まあ、別にこれでいいじゃないか、と言ってしまえばそれまでなんですけどやはり違和感はぬぐえない。でも実はSwingはルック&フィールの切り替えっていう機能があるんですねー。でWindows風にしたのが下段。
うーん、これならいいかなあ。微妙に違うけど。
で、言いたかったのは、Swingが駄目とか素晴らしいとかでもなくて、OSの標準Widgetに合わせてピュアJavaでこんなライブラリを作ってたなんて事自体がある意味壮大に無駄、いや意味はあるんだけどなんか辛そうな作業だなあと。
クロスプラットフォームを目指す以上、Swingのデフォルト表示で統一したい所だけど実際問題ユーザーは満足してくれないし、プラットフォームに依存しすぎるとRun anywhere とはいかないし、苦渋の選択という奴だったんじゃないかなあ。
でもね。やっぱり文字のアンチエイリアスの掛かり方とかが気になるんだよ。それでまた、その対策の小細工のやり方を試行錯誤したりして、全然開発効率があがんないという。
Posted by g200kg : 2012/04/07 00:07:41