底辺のプログラマとしてJavaSE 7の機能を思う

http://www.infoq.com/jp/news/2009/01/java7-updated

まぁ、だいぶ前にニュースで見ていたのでロードマップそのものに驚きはないですが、実装されることによってバグが減って生産性が上がるものをさっさと実装するべきだと思うんですね。

逆に驚いたのはBigDecimalシンタックスの低さ。もしかしてJavaってWebアプリばかりで業務アプリでほとんど使われてないんじゃないかと思ってしまう。いやもしかしてじゃなくて、もう業務アプリであまり使われてないのかもしれない。BigDecimalという業務系のコアとなる部分がもっとも使いにくい言語だから。sunは今後JavaはWebアプリのフロントエンドの分野だけ支配しようとして業務アプリやビジネスロジックなどバックエンドは他の言語に明け渡したいのかもしれないけど。COBOLを馬鹿にする前にまずはCOBOLのCOMPUTEに追いついてくれよ…。


クロージャは以前調べたとき例外があるとかわけのわからないのならいらないと思った。重要なのは@Sharedだけだったと思う。たぶんバグが増えることにもなるし、J2SE5.0だって移行がすんなりいかないのに、7なんてもっと敬遠されそうな原因になりそうだし。Javaは情報量が多いことによる他人のソースコードの読みやすさがダントツトップの言語なのでこれだけオープンソースのプロダクトがあると思ってるし、そこの敷居を劇的にあげるのはどうよ、とか。


底辺のプログラマとして思うことは

でまずは十分だと思うんですよね。ぜひ最新のJDKにアップデートしようとかそういう動機があるものだと思います。それ以外の賛否両論なやつは議論をもっとしたらいい。


業務アプリでBigDecimalシンタックスの恩恵はすばらしいものがあります。単純な四則演算ですら、現状ではバグを埋め込む可能性が非常に高いかなりやばい状態です。いままで放置していたのが信じられないくらい。ブラックボックステストで見極めることが困難な浮動小数点演算を使われていたとかいうことが大幅に減るでしょう。

そして、プロパティ構文はシンプルに恩恵を受けることになるでしょう。プロパティチェンジリスナーも自動登録されるのでバインディング周りとの相性は抜群です。なによりプロパティ名が取得できるようになり、おそらくこれが実装されてはじめてCriteriaやツール、ライブラリの充実が加速するものだと思います。

ただ、ドットでのアクセスだとpublicなフィールドとメソッドの違いがわからないため互換性の問題を出しやすいので個人的には明示的に分けたほうがいいのではないかと思います。プロパティ名は「#」で指定が可能になるのでアクセサの修飾も「#」でいいんじゃないかとか。かっこ悪いかもしれないけど、プロパティアクセスがぱっと見て一目でわかるというのはコードを追う上で重要だと思うんですよね。今は単なるメソッドなのでフィールドとの違いは判断できても、メソッドとの違いは斜め読みで即座に判断できませんから。

class Item {
  property String name ;
  property Integr price ;
}

Item item = new Item();
item#name = "DSi";
item#price = 18800;

//すでに決まっている以下と合わせるということ
Property<Item , String> name = Item#name; 
name.set(item, "DSi"); 
Property<Item , Integer> price= Item#price; 
price.set(item, 18800); 

もしくは一気に実装するのではなくて、まずはproperty構文だけ実装でもいいと思うんですよね。PropertyChangeSupportとか使うの面倒くさすぎる。とりあえずセッターゲッターがなくなるだけでも技術者のほぼ100%は恩恵を受けると思うのですが・・・。

底辺らしい安易な考え方だと罵られそうだが(゚ε゚)キニシナイ!!


この記事でも2010年前半ということになっているので、予想通りJava SE 6が唯一サポートされる期間が存在するという状態になりそうですね。つまり、Java SE 6はJava技術者にとって必須であるということ。J2SE 1.4.2のサポートが切れる前にJavaSE6はすでに登場していましたからからJ2SE5.0はとばすということは一応可能でしたが、Java SE 6のみがサポートされる期間が存在する状態では逃げ道がありません。また、6がEOL移行期間になるためには7が安定する必要があるのでいままでの傾向から1年以上はあけるはずです。となるともっともサポートされた期間が長いバージョンになる可能性が高いということでもあります。

数ヶ月前に同じようなことを書いた気がするけど(゚ε゚)キニシナイ!!