Delphi 2009が発売されました。
NetFrameworkではなくWindowsネイティブ用です。2007までと大きく異なりVCLのUnicode化、ジェネリック・無名メソッドの導入と久々の意欲作となっています。
特にUnicodeについてはよく使われるようになったので、これが今まで扱えなかったことはDelphiを使う上で大きな足かせになっていました。
Visual Studio 2008に比べ動作はきびきびしています。Visual Studio+NetFrameworkは開発・実行共に動作がところどころ遅いのですが、Delphiではそのようなことを感じさせません。
過去にDelphiで作ったコレクションを扱うライブラリを早速ジェネリックに置き換えるとコーディング量が1/3程度に減った上に型安全になりました。但しジェネリックに関してはIDEがまだまだブラシアップできておらずエラーではないのにエラーインサイトでエラーを報告するなど不具合が残っています。今後ホットフィックスで修正されるのを待つことになりそうです。
IDEではユニットテスト機能(DUnit)が統合されています。テスト対象クラスから自動的にテストスケルトンを作ってくれます。テスト内容はもちろん自分で記述しなければなりません。
コントロールの貼り付けは非常にスムーズで型名で検索の機能を使うとパレットを探し回る必要がありません。フォームデザイナとコードエディタの切り替えも一瞬です。
言語仕様を比較してみました。
項目 | Delphi 2009 | VB 2008 | C# 3.0 | コメント |
---|---|---|---|---|
ジェネリック | ○ | ○ | ○ | DelphiはIDEに不具合が残る |
無名メソッド | ○ | × | ○ | C#ではラムダ式で簡易記述できる |
ミックスイン | △ | × | × | DelphiはImplements句によるミックスイン、Rubyと比べて記述は煩雑 |
コルーチン | △ | × | △ | DelphiはFiberで対応、言語仕様に機能はない。C#はyieldで列挙に限りコルーチンを使える。 |
ガーベジコレクション | × | ○ | ○ | Delphiでは文字列・インタフェースは参照カウント方式、Componentは親を解放すると所有される子が解放される。それ以外は明示的に解放。 |
型推論 | × | ○ | ○ | |
仮想コンストラクタ | ○ | × | × | Abstract Factoryを単純に記述できる |
拡張メソッド | △ | ○ | ○ | Delphiはクラスヘルパーを使用、制限大 |
遅延バインディング | △ | ○ | × | DelphiではVariantを使う。 |