今までJava8の案件が主だったのですが、最近Java12の案件にも参画させて頂いています。開発している中でJava9以降の機能を使っておらず、使える機能がないかを調べる目的でまとめてみました。今回使用するサンプルコードは以下に全て置いてあります。BigIntegerで平方根取得のメソッドが追加されました。四捨五入するようで、√2は1を返します。Java8で追加されたOptional、Streamですが、Java9以降にいくつかメソッドが追加されているようです。Java8が展開された後に不足していた機能を充足するメソッド追加のようです。ifPresentOrElse()ではOptionalの値が存在する場合としない場合の処理をまとめて記載することができます。Optionalのstream処理をする際に、値がnullの項目を排除することができます。今までJavaの開発が多く、Javaは静的型付言語であった。最近Railsの開発に携わっており、静的型付言語と動的型付言語の違いを実感することがあったため雑ですが今思うことを以下に備忘メモとして残しました。Rubyは動的型付言語であり、開発時にカルチャーショックを受けることが多い。簡単な書き方であれば困ることはあまりないが、メタプログラミング要素を含む書き方になると調査難易度が格段に上がる。現場で感じた動的型付言語のメリット・デメリットは以下の通り。大規模になればなるほどメリデメは顕著に現れるように思える。現在参画している案件は大規模のため、以下の特徴を強く感じている。影響範囲調査に時間がかかる(対応箇所の検討は付くが、裏取りに時間がかかる。(雑な言い方だが)頭が良くないときつい。RubyはDDDと相性が良いように思える。ドメインを明確に決めることで役割が明確化し、可読性、メンテナンス性が高まる。Rubyの設計スキルを上げるためにDDDを学ぶ必要がある。大規模のプロジェクトでRails(動的型付言語)を使っている場合は序盤は全体構成の理解に徹するべき。SOAによるサービス単位での分割など、大規模になりすぎないようにシステムを分割することを検討した方が良い。Mac上にJava環境を整えたため、手順を残しておく。Homebrewはターミナルで使用するrbenvやnodebrewなどをインストールするパッケージマネージャですが、CaskではGUIアプリもインストールできます。Caskをインストールするために以下コマンドを打ちます。Caskを使用して、以下コマンドを実行します。Caskを使用して、以下コマンドを実行します。自動的に最新版(2019/1/26時点ではjava11がインストールされます。参考までに、以下バージョンがインストールされました。以下コマンドでhomebrew-caskでインストールしたアプリケーションが一覧で確認できます。今回はIntelliJとjavaの2つをインストールしました。ME温泉ソムリエエンジニア。サーバ構築からアプリケーションの開発まで手広く対応。