「Java」Java のバージョンアップについて

Java のバージョンアップについて考えてみたので、その時のメモ ( というか、"つぶやき" みたいなもの )。

Java は基本的に後方互換性があると言われているので ( 「一度書けばどこでも動く」を目指してるらしいですし )、バージョンアップしたとしても、元のアプリが全く動かないってことは、あんまりないと思います。
まぁ、ただ、結局バージョンアップ前後の Java のバイナリは違うわけで (*1)、影響受けることなくアプリが動作するのかという点は、保証できないのかなと。

影響受けるかどうかはバージョン間で相違する機能をアプリが使ってるかどうか ( つまり、アプリの実装依存 ) なので、例えば、「Oracle Java から IBM Java」とか、「Oracle Java SE 6 から 7」(*2) とか等々、これらで具体的にどんな違いがあるのかがまとめられている情報あればいいんですが、現実的にそういう情報はないんだと思います。

(*1)
-----
Java の仕様は JSR で文書化されてますが、JSR は実装までは定義してない ( 仕様なので当然ですが )。なんで、JSR 元に実装するベンダごとに実装は異なりますね。また、バージョン違えば、元にする JSR も変わるので、これも同様に実装が異なることになりますね。

・JSR-000270 Java(tm) SE 6 Release Contents - Final Release
https://jcp.org/aboutJava/communityprocess/final/jsr270/index.html
・JSR-000336 Java SE 7 Release Contents - Final Release
https://jcp.org/aboutJava/communityprocess/final/jsr336/index.html
-----

(*2)
-----
以下の情報あたりである程度は把握できそうですが、これも全ての違いが網羅されてるわけではないんだと思います。

Java SE 7 Update Release Notes
http://www.oracle.com/technetwork/jp/java/javase/7u-relnotes-515228.html
Java SE 7 and JDK 7 Compatibility
http://www.oracle.com/technetwork/java/javase/compatibility-417013.html
JDK 7 Adoption Guide
http://docs.oracle.com/javase/7/docs/webnotes/adoptionGuide/
-----

というわけで、"アプリが影響なく動作するのか" という点は、もう、実際に動作試験して担保するしかないんだと思います。
↑はあくまで理想で、どこまで確認するのかについては、プロジェクトの方針とか、そんなんによるんですかね・・・


あんまり、まとまりない内容ですが、ひとまず以上です。

※ 僕なら、いろいろ細かいこと考えるの面倒なので、ひとまず動かして、問題が確認できたら適宜調査という対応をするかなぁと妄想してます。