下記の記事が公開されました。
リソース管理の重要性とJavaの死角 §
Javaのリソース管理には「死角」があります。
具体的に言えば、オブジェクトの寿命をガベージコレクタが管理するようになった結果として、オブジェクトが確保したリソース解放のタイミングもガベージコレクタ依存になってしまったと言うことです。特定のタイミングでの解放を強制したければ、try - finally構文を併用して、自前でそのためのコードを書かねばなりません。しかし、try - finally構文は、あくまで「あるブロックを抜け出す時に特定のコードを実行させる」という機能しか持たず、リソースを解放する特定のコードを書き間違えば、リソースは解放されません。
このような機能的な制約は、それ以前のC++や、6.0までのVisual Basicには存在しなかったもので、Javaによって「退化」した機能性であると考えて良いと思います。
さて、ここで語らねばならないのは、もちろんJavaの問題ではありません。
実は、Javaが優れているという「誤った」風説が幅広く信じ込まれた結果としてVisual Basic.NET 2002/2003は、Javaと同等の欠陥を抱え込むことになってしまったのです。6.0までのVisual Basicには存在しなかった欠陥が、Javaを手本に追従する形で、Visual Basic.NETにも取り込まれてしまったのです。
なんという悲劇!
この問題は、C#ではusingステートメントとDisposeパターンの併用によって上手く回避されていましたから、Visual Basic.NETを応援する身としては辛いところがありました。
しかし、Visual Basic 2005ではUsingステートメントが用意されたので、ようやく辛い思いをする必要がなくなりました。
というわけで、一言。
頑張れVBプログラマ、君たちが使うVisual Basicは取り組む価値のある可能性に満ちたプログラム言語だ!