うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

JDK5とJDK6の違い

JDK5とJDK6の違いをちゃんと知っておかないと痛い目見ます。
違いはConsoleクラスだとかSwingだとかいろいろあるんですが、
そちらはいろんな方が書いていてくださっているようなのでそちらを参照ということで。

ここでは他のことで僕がとりあえず知っていることだけ。



アノテーション

@Overrideはオーバーライドメソッドに対して記述するものですが、
JDK5ではinterfaceのメソッドに対するオーバーライドには記述できません。
JDK6からは可能です。


次のようなコードはJDK5だとコンパイルエラーだけど、JDK6だと問題ありません。

public interface piyo{
  void foo();
}

public class hoge implements piyo{
  @Override
  public void foo(){
  }
}

■String
JDK6からStringにはisEmptyメソッドが追加されました。
JDK5では使えません。


参考URL:String (Java Platform SE 6)
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html#isEmpty()



■NetworkInterface
JDK6から以下のメソッドが追加されました。
あんまり触ったことないのでどれくらい実害になるかはわかりませんが、
このあたりをJDK6で勉強しはじめた僕にとってはJDK5で実装されていなかったのは障害でした。


getInterfaceAddresses
getSubInterfaces
getParent
isUp
isLoopback
isPointToPoint
supportsMulticast
getHardwareAddress
getMTU
isVirtual


参考URL:NetworkInterface (Java Platform SE 6)
http://java.sun.com/javase/ja/6/docs/ja/api/java/net/NetworkInterface.html



--追記(2010/11/26)

■Arrays
Javaの配列にはheadやtailの前方x個の要素と取るとか後方x個の要素を取るとかできませんでした。
JDK6から以下のメソッドが追加され、できるようになりました。
※参照型のみを記載していますが、同様にプリミティブな型のメソッドも用意されています。


copyOf(T original, int newLength)
copyOf(U
original, int newLength, Class newType)
指定された配列をコピーし、そのコピーが指定された長さになるように、必要に応じて切り詰めるか null でパディングします。


copyOfRange(T original, int from, int to)
copyOfRange(U
original, int from, int to, Class newType)
指定された配列の指定された範囲を新しい配列にコピーします。


他にもバイナリサーチを指定したインデックスの範囲だけ行うということできるようになりました。


binarySearch(T[] a, int fromIndex, int toIndex, T key, Comparator c)
バイナリサーチアルゴリズムを使用して、指定された配列の範囲から指定されたオブジェクトを検索します。


参考URL:Arrays (Java Platform SE 6)
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Arrays.html