interfaceのprivateメソッドJava9からinterfaceにprivateメソッドを記述することができるようになった。privateメソッドのため子クラスから参照することは出来ない。interfaceに実装したdefaultメソッドやstaticメソッドすることを想定した機能だと思う。使うときにはこのように実装する。普通に継承すればいいだけ。abstractクラスとinterfaceの違いがなくなってしまったような気がする。違いとして考えられるのはinterfaceはいくらメソッドを書けるといってもinterfaceなので、いくつでもimplementsすることが出来る。interfaceだとabstractとは異なり多重継承のようなことが出来てしまう。これはdefaultメソッドを使えるようになったJava8のときから出来る。Java9になってprivateメソッドも実装できるようになったのでこの機能がより強化された形になったと思う。多重継承というとあまりいいイメージがない。C++で開発を行うときにも内部的な規約で禁止していたりと、何かと嫌われている感じがする。うまくやればより柔軟な設計が可能になるわけで、使う、使わないの選択はプログラマが行うほうがいいと思う。ファクトリメソッドが追加されている。これがJava9になると、このように書くことができるようになった。このコードはJava8だとコンパイルエラーになってしまう。Listなどのコレクションクラスを使う場合にいちいち実装クラス(ArrayListやLinkedList)を指定してやらないといけないところが面倒だと感じていたので、この面倒さが解消されるのが嬉しい。Listの使用方法によって、実装クラスを使い分けたほうが速度面で優位なのかもしれないけれど、そこまでシビアに処理能力の差を求められることも少ないんじゃないだろうか。作っているプログラムによるわけだけれど。List.of();」とする。Setでも同様にコードを書くことができる。Setは要素の重複が許されないので、下記のように書いてしまうと実行時にIllegalArgumentExceptionが発生してしまうので注意が必要となる。最後にMapも試してみる。・・・・」というようにKeyとValueを繰り返し書いていくことになる。注意しないといけないのは、Mapの場合は10個までしか指定できないこと。下記のように書くとコンパイルエラーとなる。JShellJava9から導入されたJavaのREPL環境であるJShellで少し遊んでみたので、やったことをまとめておく。PowerShell。JShellのディレクトリだが、JDKインストールフォルダ配下のbinディレクトリ。Files\java\jdk-9.0.1\bin」となっている。JShell上でプログラムを実行してみる。コマンドを打つと確認できる。1行でも書くことはできるが、行の途中で改行するとJShellの方で勝手に判断してくれる。コマンドを打つと確認できる。クラスも作ったりできるのだけれど、書くのが大変なのでこの辺りで・・・。コマンドを打つとヘルプを見られる。ヘルプの全文は以下の通り。色々な機能を持っていることが分かる。Java言語の式、文または宣言を入力します。ファイルにスニペット・ソースを保存します。intro'などです。/reloadおよび/resetの評価コンテキスト・オプション以前、同僚がJShellを作る意味(存在意義)が分からないと言っていたのだけれど、ちょっと動作を確認したいときなどには便利。今まではクラスをいちいち作成してなど、ちょっと面倒だった。APIを呼び出して結果を得ることも簡単にできる。手軽に試せるのが何よりの利点だろうと思った。これからJavaを学習する人にとっては、クラスやなんだといちいち書かなくていいので、学習の敷居も下げてくれるものだと思う。RubyやPythonなどにはREPL環境があるわけで、ある環境とない環境のどちらを使いたいかと言われれば、断然ある環境なわけだし、他の言語に対抗するうえでも必要なものなんじゃないだろうか。使ってJSONを作成するクラスJavaでMapとListを使ってJSON文字列を返却するクラスを作成した。Jackson等のライブラリを使えば楽なのかもしれないけれど、仕事によっては外部ライブラリを自由に使うことができなかったりすることもあるので、そうしたときには使えると思う。出力結果ちょっと使いづらい気もするけれど実用に耐え無いわけじゃないし、これで良しとしておこう。Ajaxの基本的なやり方Ajaxをうまく使えば、ブラウザアプリであっても操作性の優れたアプリを作ることが出来る。サブミットしなくてもサーバと通信が出来るだけで、UIの幅がかなり広がる。この記事では、jQueryを用いたAjaxの基本的なやり方を説明していく。Ajaxプログラム上記のプログラムはAjaxを利用してサーバと通信を行うことができる。リクエストパラメータの指定を行う。サーバとの通信の成否に関わらず行う処理を記述するAjaxによる処理は非同期処理となるので、そこはプログラム設計をするときに考慮にいれる必要があるが、asyncというプロパティもありこれのtrue/falseを切り替えることで同期処理とすることも可能だ。Yamazaki株式会社アクティアで働くプログラマ。