こんにちは。今年も春の足音がしてくると、嬉しいような焦るようなな、スッキリわかるシリーズ監修の中山です。
今回は、本日発売の『スッキリわかるサーブレット&JSP入門 第3版』のについて、第3版の「改良点」のご紹介です!
第2版 → 第3版の改定ポイント
第3版改定での最大のポイントが、「Eclipse2021以降」への解説対応です。
「え? なにそれ?」という方も、「あぁ、あれ散々だったよね」という方もいらっしゃると思うため補足しますと、Eclipseのバージョン2021頃から、「サーブレットJSP開発をするために使う動的Webプロジェクトのフォルダ構造」が大幅に変化しました。
そのため、スッキリサーブレット第2版では、「その変更に対応するための応急処置」をsukkiri.jpのWeb付録として掲載して対応してきたのですが、この度、はれてEclipse2021以降に解説自体が対応しました!
|
Eclipse2021より前(スッキリサーブレット2版の解説前提) |
Eclipse2021以降(スッキリサーブレット3版の解説前提) |
フォルダ構成 |
|
|
Javaソースコード配置場所 |
/src以下 |
/src/main/java以下 |
HTML/JSP配置場所 |
/WebContent以下 |
/src/main/webapp以下 |
デフォルトJDKバージョン |
11 |
17 |
デフォルトTomcatバージョン |
9 |
9 |
利用パースペクティブ |
JavaEE |
Java |
上記のように、Eclipseのフォルダ構成だけではなく、デフォルトで選ばれるJDKのバージョンも17に変わったり、JavaEEパースペクティブが廃止になったりで、これらに対応した解説に改訂されています。
実際に、本書で学ぶ範囲でいうと、JDK11も17も大きな利用構文上の違いはないのですが、「解説と画面が違う」ことによる不安や、その他の細かい「入門者にとっては十分すぎるほど謎なエラーの噴出」というのは少しでも避けられるよう、解説自体も進化した次第です。
企業研修や学校教育でご利用の指導者の皆様へ
スッキリわかるサーブレット&JSP 第2版から第3版への変更において、主に指導上考慮が必要なのは、以下の点です。
- 動的Webプロジェクトのフォルダ構成の変更 (Pleiades2021-2022のデフォルト構成のままでよくなりました)
- 使用するJDK及びTomcatバージョンの変更 (Pleiades2021-2022のデフォルト構成のままでよくなりました)
- 「JavaEEパースペクティブ」廃止に伴い、Javaパースペクティブを利用した解説に変更
- JARファイル配置する場所を、Tomcatの構成ディレクトリではなく、WebアプリのWEB-INF/libに変更
その他、セキュリティに関する付録が追加となったり、細部の違いはありますが、指導プランに影響するのは主に上記です。
でも、もう2023年だぜ
「Eclipse2021からフォルダ構造が変わっていた」のなら、なんでさっさと本を改版しなかったの?
そうお感じになった方もいらっしゃるかもしれません。 ...が! よくぞ聞いてくれました!
「2019年に第2版だしたばっかなのに、すぐに版を進めると店舗在庫の残りが云々」みたいな大人な話が出版社からあったに違いない、的な想像をされる方もいるかもしれませんが、そういうわけではありません。
もっと技術的で本質的な理由として
「Eclipse2021が出たばかりの当時、フォルダ構造が大幅に変わったのにあわせて、JDKやTomcatの組み合わせ周りで、
入門者の方を地獄に突き落とす系のトラブル(特にgit連携をしはじめたとき噴出)があった」
のです1。
現役エンジニアや経験者の方なら、Qiitaやネット記事調べながら個別に手を打てる程度ではあったのですが、入門者の方にはかなり手厳しい印象と言えば伝わりますでしょうか。企業研修などでこの手のトラブルが起きると、あちこちから「すいません!動きません!」の挙手が乱発して、収拾が付かなくなるリスクがある感覚です。
で。
ツールがこういう状況だと、私のような「デスマーチプロジェクト専門で投入される部隊」出身者としては、当然、こう考えるわけです。
「フォルダ構造やJDKのデフォルトをこれほど派手に変えておきながら、あちこちに不具合あるまま出してくるってことは、
このあといろいろ修正がかかって変更になったり、再度また大きな変更がかかる可能性があるかもしれない...」
そのたびに解説を変更した「スッキリサーブレット」を発刊すると、Pythonなんてまだ初版なのにサーブレットだけ第16版とかに突入するリスクがあり、当時、「従来から実績のあるフォルダ構造と、ランタイムを選んで、確実に動作させる方法」をsukkiri.jpの手順書でご案内することとし、様子を見るという選択をせざるを得なかった、という次第です。
幸い、その後Eclipse2022からはかなりトラブルも減少して落ち着いたほか、デフォルトランタイムとして「Tomcat9 + Java17」が選ばれるようになったため、ようやく第3版では、新構成での発刊ができたという次第です。
そして JakartaEE。
上の段落を読んで、「ん? あれ? Tomcat9?」と思ったあなた。鋭い。
Tomcat9って、JavaEEのサーバーだよね。
「で。最新のJakartaEEは、どうしたん?」
ド直球な疑問を感じちゃうあなた同様、私たちももちろん、JakartaEEのことは、「JavaEE8なかなかでないじゃん問題」&「そもそも名前どうするよ論争」&「え?パッケージ名、全置換かよ!2問題」などなど、ずっとウォッチしてます。
今回第3版を出すにあたり、当然、「最新JakartaEE対応!」って謳えたら、格好いいよね! という話も著者内でさんざんしましたとも、えぇ。
でも、、、、。
今回の第3版は、悩みに悩んだ上、あえてコードは「JavaEE」とさせていただきました。
(紙面の中で、JakartaEEについて解説するにとどめました)
確かにJakartaEEは、一応、2019年に正式リリースはされています。しかし、2020年のJakartaEE9も含め、名前空間が変わることによる影響がもろもろある割には、企業側として得る実利としては決して大きくないことから、現場的にはなかなか手を出しづらい事情もあり、「もちょっと様子見」という風潮があったことは、皆さんもよくご存じのとおりです3。
2022年9月、ようやくJakartaEE10が正式発表されました。
これから2023年度のシステム企画や予算が編成され、「情報システム資産のJakarta本格移行」に入る企業・現場もあろうかと思いますし、書籍発売時点で、Eclipse WTP自体のデフォルトTomcatがまだ9のままであることを考えると(そして過去の苦い経験から、デフォルトがTomcat10になってもしばらくはWTPが暴れる可能性があることを考えると)、ツール周りの非本質的なところのトラブルで学習自体が挫折してしまうリスクを避け、一人でも多くの方がゴールに到達できればと思った次第です4。
そんな背景からJavaEEを選んだ本書ですが、おそらく「シリーズ最後のJavaEE本」になると思います。
これからも、読者の皆様が安定的に学びを進められるよう改良を進めて参りますので、どうぞよろしくお願い致します。
- デフォルトで選ばれているバージョンのJDKとTomcatを選ぶと変な動きをするとか、メタデータ隠しファイルの格納情報がおかしいとか、結構、Eclipse WTPが不安定な状態でした。このトラブルのせいで涙を落とした先輩エンジニア・講師・指導者の方、たくさんいらっしゃるのではないでしょうか...(私もその一人です)
- 「これたぶん、機械変換でjavax.sqlまでjakarta.sqlにしちゃって死亡する人続出やん。」問題ともいう
- ここで「ンだよそれ! 9でた段階でリファクタ的に9移行をすませておけや。技術的負債たまってくだろーが!」って義憤に燃えているそこのあなた。気持ちは痛いほどわかるし、そんなあなたをぎゅっと抱きしめたい。...でもね。今をときめくアジャイル開発で少数精鋭のフルサイクルなエンジニアたちがライトウェイトに改善を回していけない事情があるシステムというもの(そして、「仮に私であっても、その道を選択せざるを得ないであろう」巨大さと複雑さ)をリアルに目にしてしまった私には、「戦略的遅延評価」を選ぶ気持ちも、同じぐらい痛くわかるんです(その痛みが小さい程度の規模と複雑性のシステム資産であれば、そもそもJakartaEEを待たずにSpringまたは非Javaのマイクロサービスに移行しているものも少なくないでしょう)
- 逆に、変な理不尽トラブルで挫折しなければ、JavaEEで学んだとしても、すぐJakartaEE順応はできますしね...