久々のJavaでの開発

263
NO IMAGE

あまり技術的な話題ではないのですが、数年ぶりにJavaを使った開発に関わって、JDKの新しいものではどんな機能が増えているのだろうと、軽く調べてみて気になった点や感想でも書いてみます。

JDKは開発で使った事があるものが、JDK1.4, 1.5, 1.6がメインで、1.8を少々触った程度でした。その後は、Javaはあまり触る機会がなく別言語での仕事が多かったため、1.8以降のJavaの機能はあまり触れていませんでした。

今回、仕事でJDK11や13を使用して開発にかかわることになったため、特にプログラムの記述に関わりそうな追加機能をざざっと調べてみました。

そのうちで、目についたもの、気になったものをちょっと挙げてみます。

  1. ラムダ式
    こちらについては、1.8で追加になった際に話題にあがってるのを見聞きしていたので、存在は知っていました。ただ、記述がちょっと楽になるかなぁくらいの意識でしたが、今回の開発では、まぁあっちこっちにこの記法が出てくる出てくる。
    あれだけ出てくると、匿名クラスの記述方法で記載されているよりは、見た目はすっきりしますね。ただ、まぁ、名前とか色々省略というか、記述するとこがなくなるので、呼び出しているコードだけ見ても、何のための式が渡されているかわからなかったりして、読みやすくなったか?と言われると、そうとは言い切れない感じです。わかっている分には書きやすくはなっていると思います。

  2. Var 変数定義?
    これは、JDK10、11で機能追加されているようですが、使い所とか嬉しい点が理解できませんでした。

    var s = "123";
    var list = new ArrayList<String>();

    これくらいはっきりしていれば、見たら型わかりますけど、わざわざちょっとだけ書くのが楽になる程度で、こんな機能必要かが謎です。
    さらに、この場合のlistは、ArrayList型とのこと。そりゃそうかもしれませんが、Listではないのです。
    使いみちがわからない機能です。こう使うんだよとかあれば教えて欲しいところです。

  3. switch式とswitch文
    私個人としては、switch式は、さほど嬉しい追加機能ではなかったです。
    できることが増えたというより、わざわざそんな書き方しなくてもとか思ってしまいました。
    ただ、アロー構文と網羅性チェックについては、記述漏れのバグが防げるので、switch式がどうとかと別にありがたいですが、switch文ではチェックされないまま。既存のままということなのでしょうが、コンパイラのオプションとかでチェックするのはありな気がします。全部をバグとは言いませんが、switchでパターン網羅していないのは気持ち悪いです。大抵ミスですし・・

  4. JDK14のNullPointerExceptionのメッセージ
    これはとてもありがたいオプションですね。以前から、もっとわかりやすいメッセージ出してくれたらいいのにと思ってましたので、バッチリなオプションです。使ったことはないのですが、JDK14での開発時は、コンパイラオプションに是非つけて開発したいと思います。

他にも色々と便利なAPIの追加などもあるようでしたが、いっぱいありすぎて、まだまだJavaでの開発に混ざり始めたばかりで実感はありません。入出力まわりやらも便利そうな機能が増えていました。ありがたいことです。

これからしばらくJavaでの開発が続く予定ですので、使いこなせるように慣れて行きたいと思います。


プロフィール:
大学院生+研究職を9年
弊社入社後、システム開発を14年

大学院生+研究職時は、C++、Javaなどで開発
弊社では主にJavaでWebアプリケーション開発などに従事
ここ数年、Microsoft Dynamics AXで基幹システム開発に従事しており、Javaを触っていなかった