kanizaのブログ

コンピュータ、ソフトウェア、映画、音楽関連や家族のことなど、思いついたことを書きます。

Java

Grailsのお試し

先日正式版1.0がリリースされたGrailsも試してみた。Groovy版のRuby on Railsみたいなもんですな。Grailsを入れれば、あとはMacに入っているJava環境のまま使える。データベースはGrailsが持っているらしい。これもチュートリアルのとおりにgrailsコマンドで…

package-info.java

Java 5から、Javadocのパッケージコメントはpackage-info.javaというJavaファイルに書けるようになったのだそうだ。ついこのあいだまで知らなかった。EclipseではNew Java Classで作ろうとするとクラス名が不正だと怒られるので、New Fileで作るとよろしい。…

UML

シゴトで書いたJavaコード群をUMLのクラス図にしたりしている。クラス図を作っていて、Genericsを使った型をどう表記するか知らないのに気付いた。調べたら、ちゃんと型パラメタを持ったクラスの記法があるんですな。型パラメタを右肩に書いて点線で囲むのだ…

Genericsで汎用のオブザーバ管理クラス

電車の中でなんとなく「こーいうクラスあったら便利かも」と思いついたので書いておく。Observerパターンを実装するとき、監視される側(Subject)ではオブザーバインスタンスをコレクションで管理したり、通知のたびにそのコレクションを走査してメソッドを呼…

PicoContainer 2.0

PicoContainer 2.0がリリースされた。Generics対応のみならず大幅にAPIがアップデートされている。これまで pico.registerComponentImplementation(Object, Classs)だったのが、pico.addComponent(Object, Object)になってたり。あと、流行りの fluent inter…

今年の技術ネタ

1月に「今年の技術ネタは何かなぁ」と書いて、当時はGroovyあたりかと想像していたのだけど、けっきょくGroovyはぜんぜん使わず。それで、いま振り返ってみると jMock 2 が大きかったように思う。前はjMock 1.xを使っていて、2を使いはじめたのは5月ごろ。jM…

Javaレクチャー

昨晩、若い人を相手にJavaの個人レクチャーを実施。Javaの資格のために勉強しているのだそうだ。前にちょっと話をしたときは「Serializableって何?」というようなことを聞かれて簡単に説明した。今回はスレッドっていったい何なのか、あと、内部クラスとか無…

Closeable

JavaのIO系を代表するReader、Writer、InputStream、OutputStreamクラスはそれぞれclose()メソッドを持っている。Java5から、これらのクラスがCloseableインタフェースを実装して、close()はそこで宣言されている。以前はどのclose()もまったく別のclose()だ…

Java 6のSwingドラッグ&ドロップ

Java 6のSwingではドラッグ&ドロップが大幅に改良されている。 First Class Drag and Drop Support in Mustang たとえばJTreeでのドロップポイントの表示やノードの自動展開など、これまで自前でコードを書いていた機能が実装されている。あのへんははかなり…

Google Collections Library

Apache Commons CollectionsのGoogle版みたいなライブラリ。Genericsにも対応している。Joshua Blochも関わっているようだ。 http://code.google.com/p/google-collections/ FAQによると、Google社内ではいろいろなサービスで既に利用されているとのこと。た…

Java Compiler API

Java 6から実装されたJava Compiler API(javax.tools)を使ってみた。以前はJavaプログラムからコンパイラを使いたくても、javacは配布可能なJREには含まれていなかったから別の方法をとるしかなかった。JavaCompiler、JavaFileSystemManager、JavaFileObject…

Apache Commons

ApacheのJakarta Commonsがトップレベルプロジェクトに昇格してApache Commonsとなった。Apache Commonsって、前にも同じ名前の別プロジェクトがあったんだけど、解散しちゃったんだよね。新しくできた「Apache Commons」がJava専用で良いのかどうか、ちょっ…

Eclipseの頭文字補完は便利

日頃のJavaプログラミングでは Eclipseを利用している。ソースコードの補完機能はとても便利で、Eclipse以前はどうやって書いていたのか忘れてしまう。特に便利で、かつ、使いはじめてしばらくその存在に気付かなかった補完機能に、頭文字による補完がある。…

手動リスト

java.util.AbstractList は、いくつかのメソッドをオーバーライドすると簡単に独自の List 実装を作れる。お遊びで「手動リスト」を作ってみた。データはユーザーが紙か何かの上で管理して、求められたらダイアログで入力する。下のコードがクラス。実行用の…

static問題とDIコンテナ

しばらく前に、GoogleのDIコンテナであるGoogle Guiceを紹介するプレゼンテーションがGoogle Videoで公開された。はじまって3分ほどのところに、「A Problem」として、Javaでstaticを使うことに対する次のような指摘がある。 Using static references comes …

JGoodies Binding 2.0.0

先日、Swingのデータバインディングフレームワーク JGoodies Binding のバージョン2.0.0がリリースされた。主要クラスが Generics 対応になっている(JGoodies Bindingについては http://d.hatena.ne.jp/kaniza/20070304/p1 参照)。このフレームワークが Ge…

同じ名前のクラスがいっぱい

JDK 6が出て数ヶ月、最初のアップデートリリースがあった。僕はまだJDK 5で暮らしているけれど。本格的な利用に備えてJDK 6のドキュメントをあちこち眺めている。ライブラリはどんどんクラスが増えて、同じ名前(短縮名)のやつも多くなってきましたな。どん…

アノテーション

Java 5の新機能であるところのアノテーション(注釈)について調査(遅い?)。前にちょっとだけ試したとき、実行時に注釈情報がぜんぜん取得できなくって「どういうことだー」と思ったのだけど、実行時に使うには注釈に@Retention(RetentionPolicy.RUNTIME)…

JGoodies Binding入門

日本語でJGoodies Bindingを扱った記事というのはなかなかないので、ちょっとだけ書いてみる。僕自身の経験と理解をもとにしているので間違えてたらごめんなさい。 JGoodies Bindingって何? JGoodies Bindingは、あるオブジェクトが持つ値(典型的にはJavaBe…

Eclipse 3.2.2

このあいだEclipse 3.2.2が出たのでアップデート。Eclipse 3.2.1は、何度アップデートしても自動アップデートチェックが「アップデートがありますぜ」と言ってくる厄介者であった。僕が何か悪いことをしたせいかと思ってたけど、バグだったそうで、3.2.2で修…

その年の技術ネタ

僕のJavaプログラミング生活にとって、2006年はデータバインディングとPresentation Model、つまりJGoodies Bindingな年だったなぁと思う。使いどころとかを思い知って、既存のコードの多くの部分を改良できたし、新しいコードも納得のいく設計ができた。そ…

CallableとかRnnnable

JavaのCallable#call()とかRunnnable#run()とかは処理の抽象化の極致といった感じだよな。会社で部下に「シゴトすれ」と言うような感じ。みんなそれぞれ自分のシゴトを知っている(ことになっている)。同じように「ウチに帰れ」と言えば、従業員はそれぞれ…

java.util.concurrent

昨日の続きでマルチスレッドプログラミング重要ということでJDK5から入った並行処理ユーティリティパッケージjava.util.concurrentについてちょっと調査。ちょっと見えてきた。Executors.newSingleThreadExecutor()で生成したExecutorServiceにCallableをsub…

Swingでのマルチスレッド

JavaのSwingでのマルチスレッドなプログラミングをあれこれやった。僕はマルチスレッドプログラミングの知識が足りないなぁとしみじみ思う。Swingにはシングルスレッドルールというのがあって、GUIコンポーネントはイベントディスパッチスレッドからのみアク…

オプション

最近、ニュースなんかで「オプション」という言葉をよく聞く。たとえば「軍事行動というオプションもありますね」とか「中国政府には多くのオプションがある」とか。「option」という単語を辞書で調べると、「選択肢」や「選択の対象」など「選択」を軸とし…

大阪Javaコミュ設立準備会+wakhok夜学

昨日は「大阪Javaコミュ設立準備会+wakhok夜学」に参加。内容としては各種講演+夜学(という名の宴会)という感じであった。会場は日本オラクル関西支社。さすがオラクル。かっこいいビルに入っている。http://devg.dev2dev.beasys.co.jp/wiki/index.php?mee…

PicoContainerでコンストラクタに配列を使う

Javaで使えるDIコンテナのひとつであるPicoContainerのスバラシさ(の一部)について語ってみる。たぶん、他のDIコンテナにも共通しているはず。PicoContainerをいじり始めてしばらくは、マニュアルどおりにインタフェースと実装の分離を進めていった。Singl…

Javaデータバインディング

今日も JGoodies Binding のお世話になった。今回は JGoodies の PresentationModel クラスを使わずに自分で Presentation Model を実装したけど、ValueModel を使ったデータバインディングはバリバリ。そもそも、Presentation Model の考え方を知ったのも J…

Presentation Model

今日はシゴトでのプログラミングがうまくいってスッキリ。機能追加のための設計改善がうまくいって、機能追加そのものはすごくシンプルにできた。もともとのコードがかなり苦しまぎれなものだったので、改善の余地がたくさんあったのですな。今回も Presenta…

列挙型を初めて使った

Java 5.0の新機能のひとつ、列挙型を初めて使ってみた。これまでは整数の定数値であれこれ判別していたのを、列挙型に置き換える。Javaの列挙型は、単に自動で設定される整数の定数じゃなくて、オブジェクトになっている。もちろん宣言してある順にもとづい…