yak shaving life

遠回りこそが最短の道

独習Java 新版 を読んだ

独習Java 新版

独習Java 新版

なぜ読もうと思ったか

大学の研究室に置いてあった独習JavaJava 6まで対応だった気がする)を読んで、なるほど、オブジェクト指向ってこういう感じなのかー。へー。なんかわかんないけど便利そうだなあ、などと思ったものの研究が始まってみればそこにあったのはC++で書かれたシミュレーターであった…というのが僕とJavaとの出会いであり、それ以降ほとんどJavaに関わることなく生きてきたのだが、なんやかんや仕事でJavaを使うことになり、じゃあ独習Javaをもう一回読んでみるか!おっ、なんか新版出てるしとりあえずこれ読んでみるかーてなもんです。

どのような本か

Javaを独習するための本。 …というのは冗談で、Javaの基本的な構文から標準クラスライブラリ、マルチスレッドプログラミングあたりまで手広くカバーしている本。Java未経験者でも大丈夫だけどプログラミング自体が未経験だと厳しいかも。サードパーティのライブラリやフレームワークの話はほぼないので、これを読んでもWebサービスとかAndroidアプリは作れません。

書評というか感想

良い。なんか前の版と比べてポップになって読みやすくなっている気がする。サンプルコードも多いし分かりやすいと思った。Java 6の頃から変わらないところは復習になったし、Lambda, Functional Interface, Stream APIあたりであやふやだった知識が整理されて良かった。プログラミング経験はあるけどJavaは未経験、という人にオススメできる本。

この本自体とは関係ないのだが、自分の中でJavaと言ったら「完全未経験の新卒がSIerに入ると最初に研修で覚えさせられる言語」というイメージだったのだが、現代の現場ではJava 8 以降の比較的新しい機能を活用したコードが求められるわけで、未経験者が頑張ってJavaの基本的の構文を覚えたとしてもそれでOptionalやStreamをゴリゴリ使ったコードが書けて読めるか?というと難しそう。僕なんて昔ジェネリクスすら全く理解できなかったし。一応プログラミング自体は研究で多少やっていたにも関わらずですよ。まあ僕の頭が悪いだけという説もあるけど、プログラミング未経験者が3ヶ月やそこらの研修中にCollector.of メソッドのシグネチャとか見たら卒倒してしまうんではないか。

public static <T,A,R> Collector<T,A,R> of(Supplier<A> supplier, 
    BiConsumer<A,T> accumulator, BinaryOperator<A> combiner,
    Function<A,R> finisher, Collector.Characteristics... chara)

うん、僕も卒倒しそう。

まあこんなややこしすぎる見た目のメソッドなんかもちゃんとサンプルコードつきで解説してくれてるのでこの本は良い本です。あと今未経験からプログラミングを始めるなら、JavaよりGoとかRubyとかJavaScriptとかがいいんだろうなーと思いました。知らんけど。