Last Updated 2016/05/22
.NET Framework が出現したころ、画期的なフレームワークといわれ、業務用を含むあらゆるアプリケーションが .NET Framework に移った感がありました。Java もそうです。Windows 以外の環境で動作するアプリケーション開発者は Java に移行したようです。ずいぶん昔の話ですが、IBM のソフトウエア開発者が最近は Java ばかりだということを聞いたような記憶があります。
業務用あるいは実用性一辺倒なアプリケーションは、Windows XP + .NET Framework で充分です。それ以後の Windows は Windows XP からほとんど進歩していません。もちろん、内部的には多くの改良があるのでしょうが。それと同様に、Java は十分な機能があったということでしょう。
ところで、最近の私はすべてのアプリケーションを WPF で開発しています。しかし、WPF が一般化する前に Microsoft 時代に陰りが出てきましたので、普及しているとはいえない状態です。というより、Windows 対応のアプリケーション開発自体が少なくなったのでしょうか。しかし、Windows 用アプリケーションの資産は膨大ですから Windows がこのまま消えるとは到底思えません。
このページのタイトルは、「Java/JavaFX 雑感」ですから、Java/JavaFX に触れないわけにはいきません。私は Java/JavaFX を使い始めて 1 年以上になりますが、Java/JavaFX にはちょっと失望しました。もっとレベルが高いはずと考えていたからです。世間の評価が高かったように感じていました。しかし、最新バージョンの 1.8 になってやっと .NET Framework/WPF に追いついたように思います。
さて、本題の雑感に話を戻します。
以下は一例ですが、フォルダをやたらに深くする合理的な理由はあるのでしょうか。単なる習慣なのでしょうか。あるいは、Oracle 社が公開するサンプルコードがそうしているので、無批判にまねているのでしょうか
..\src\com\sun\source\util\DocTreePath.java
私にはまったく理解できません。ソースファイルを見ようとファイルマネージャを使って目的のフォルダに移動するだけで大仕事です。
WEB からサンプルコードを入手すると、拡張子はあるのですがファイル名のないファイルがときどき出てきます。これはどういう意味なんでしょうね、そうしなければならないのでしょうか。気まぐれでしょうか。不可解。
大規模なアプリケーションに javadoc を設定するのは理解できます。しかし、サンプルコード程度のものにまで javadoc を設定するのはどうかと思います。コードの可読性を損なうだけです。ぜひやめましょう。
Java には元来プロパティという概念がありません。プロパティは public なメンバ変数ですが、Java では変数の値の設定も取得もメソッドを使います。しかし、JavaFX になって UI を FXML ファイル(WPF では XAML ファイル)で定義できるようになりましたので、プロパティが必要になりました。
そのため、プロパティを設定・取得するメソッドとプロパティとが共存することになりました。その結果、厳密には異なりますが、ほぼ同じ機能が 2 つあるということになっています。言語仕様としてはかなり奇妙な感じです。
.NET Framework の enum 型もクラスとして定義されていますが、定数名を取得するなどの基本的な機能だけを提供します。つまり、単純型と同じような使い方しかしません。一方、Java の enum 型もクラスですが、より複雑なメソッドがあります。すべての enum 型にあるわけではないので、便利といえるかどうかは微妙です。というのは、有用なメソッドを持つかどうかをチェックしなければならないからです。
WPF にはイベントハンドラを定義するデリゲート型がありますが、JavaFX では通常のメソッドとして扱います。これは慣れの問題ですからよくないとはいえませんげ、最初はとまどいました。
C# と Java との言語仕様の違いは当然あります。しかし、よく似ていますから迷うことはないと思います。C# 風にコードを書いてもほとんどエラーになることはありません。私がチョットひっかかったのは、「Java の import 文では使用するクラスを WPF の using 文では名前空間名を書く」です。
ー以上ー