JSR 337: Java SE 8 Release Contents

来年にはリリースされると思われるJava 8だけど、これによって大きく変わると思われるので、時間があるときにでもちょっとずつ押さえていこうと思う。まず、Java 8の中身を決めるJSRはJSR 337になると思われる。まぁ、そこを見れば、Java 8に何が含まれるのかが予想することができるだろう。というわけで、見てみると、以下のものたちが含まれようとしている。

  • JSR 308: Annotations on Java Types
  • JSR 310: Date and Time API
  • JSR TBD: More Small Enhancements to the Java Programming Language (OpenJDK Project Coin)
  • JSR 335: Lambda Expressions for the Java Programming Language (OpenJDK Project Lambda)
  • JSR TBD: Java Platform Module System

これ以外にもJava仕様的なメンテナンスっぽいJSRたちもあるけど、こんなかで把握していく必要があるのはラムダだろうな…。まぁ、順に見ていくのが良いかね。

Stringのformatで改行文字

String#format()もそんなに使うわけじゃないから、

String.format("hoge hoge\n", ...)

という感じのコードを書いていたら、Sonarに指摘された…。改行は\nじゃなくて、%nを使えと言われた。つまり、

String.format("hoge hoge%n", ...)

という感じらしい。これで機種依存の改行コードになるから、こっちを使えということか…。

Java 7 on Lion

ぼちぼち、Java 7に移行しなければと思い、手持ちの環境たちをJava 7に移行し始めました。そんで、Mac OS X (Lion) でどうするのかを調べたら、OpenJDKを入れればよいらしい。バイナリはここからOpenJDK-OSX-1.7-x64-u-jdk-*.dmgを入手できる。これを普通にインストールして、あとは.bash_profileに

export JAVA_HOME=/Library/Java/JavaVirtualMachines/1.7.0u.jdk/Contents/Home

を記述しておけば良い。確認は

$ java -version
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
openjdk version "1.7.0-u6-b01"
OpenJDK Runtime Environment (build 1.7.0-u6-b01-20120314)
OpenJDK 64-Bit Server VM (build 23.0-b16, mixed mode)

という感じ。