[参加レポート]JJUG CCC 2021 Fall
JJUG CCC 2021 Fall にて登壇しました!
カサレアルは、11/21(日)に開催された「JJUG CCC 2021 Fall」へ、ゴールドスポンサーとして参加してきました。
スポンサーセッションにて弊社講師の石井 真が、「最新 LTS Java 17 でプログラムが書きやすくなるという話 」と題して講演させていただきました。
今回はその内容を、講演者 石井がレポートいたします!
⧉ JJUG CCCとは(公式HPより抜粋)
JJUG CCCは毎年2回、春と秋に開催する日本最大のJavaコミュニティイベントです。
Java関連の技術や事例に関する良質なセッションが行われ、また異なる分野で活躍するJava技術者が一堂に会する場ともなっています。
イベント概要
- イベント名
- JJUG CCC 2021 Fall
- 開催日時
- 2021年11月21日(日) 10:00 〜 2021年11月21日(日) 18:00
- 開催場所
- オンライン
申し込み
開催日時
申込締切
当日の様子
最新 LTS Java 17 でプログラムが書きやすくなるという話
本講演では、最新のLTS Java 17に追加された様々な仕様の中から、言語使用[プログラムの書き方]にフォーカスし、「今までの書き方」と「新しい書き方」をご紹介しました。
サンプルソースが多く掲載されていますので、ぜひ講演資料をあわせてご覧ください。
講演目次
- LTSってなあに
- レコードクラス
- 新しいswitchステートメントとswitch式
- instanceofによるパターンマッチング
- TextBlocks
- シール クラス
◆LTSってなあに
2021/9/14に最新のLTS(Long Term Support)版として、Java 17がリリースされました。
LTS(Long Term Support)版とは、Javaの長期サポート版です。
Javaは半年に1回のペースでバージョンアップされますが、各バージョンのサポートは、次のバージョンがリリースされるまでの短期間となっています。
これに対してLTS版は無償で長期サポートが行われ、Java 17の場合は2029年9月までサポートされます。
◆レコードクラス
ここからは、参加者にもダウンロードしていただけるサンプルソースを利用しながら、機能の紹介をいたしました。
レコードクラスは、Java 16から使用できる機能です。
はじめに、レコードクラスの宣言と概要(①レコードの宣言、②レコードヘッダーやレコードコンポーネントリストなど各部分の名称、③同等の通常クラスとの比較)やその細かな仕様(①継承及びインターフェースの実装、②コンパクトコンストラクタと通常のコンストラクタ、③メソッドの宣言)などを、サンプルコードをお見せしながらご説明しました。
また、実際にレコードクラスを活用する例として、Spring Bootアプリケーションを例に、活用可能な個所(① Formクラス:リクエストパラメータのバインディング,Bean Validationを使った入力検証、② Request/Responseクラス : Jacksonを使って Javaインスタンス ⇔ JSONオブジェクト の変換など)をサンプルアプリのコードを使い(特にレコードクラスでのアノテーションの記述法などを中心に)ご説明しました。
質疑応答でも、データ バインディングなどでレコードクラスが使えるかなど、実際のアプリケーション開発のどのような個所でレコードクラスが使えるのかについて、皆さんの高い関心を持っていることが伺えました。
◆新しいswitchステートメントとswitch式
Java 14で追加されたswitchルールで記述する新しいswitchステートメントとswitch式について、従来のswitchステートメントを対比して改良された点を踏まえながら解説いたしました。
◆instanceofによるパターンマッチング
Java 16で追加されたinstanceofによるパターンマッチングが可能になりました。
スーパークラス型からサブクラス型へのダウンキャストを行う際、instanceofによるパターンマッチングを使うことにより、従来の記述よりミスなく安全に記述できることを説明しました。
また、まだJava 17のプレビュー機能ではありますが、switchによるパターンマッチングも(switchも改良によりとても使い勝手がよくなりましたが、nullの扱いには注意が必要であることも含めて)ご紹介しました。
質疑応答でも、switchでのnullについて話題に挙がりましたので、この注意点も紹介出来て良かったと思います。
switchによるパターンマッチングも、今後、正式仕様としてリリースされることを待ち望みます。
◆Text Blocks
Text Blocksは、複数行にまたがっているような文字列を、ひとつの文字列リテラルで書くことができる機能です。講演ではサンプルコードをお見せしながら、先頭・末尾に「”””」が必要な点など、使用上の注意点をお伝えしました。
◆シール クラス
Java 17から導入された機能として、最後にシール クラスをご紹介しました。
シール クラスは通常の業務アプリケーションで使用する場面は多くないものの、アプリケーション側で利用してもらうためのエンジンやフレームワークをAPIとして提供する際にはシール クラスを使うメリットが大きくなります。
講演では通信プロトコルのサンプルコードを用意し、具体的にシール クラスの活用例を紹介しました。
Java 17に対応するカサレアルの関連研修
カサレアルでは、本講演で扱ったキーワードに関連する研修コースをご用意しています。ぜひご活用ください!
- Javaプログラミング入門 -現場で活躍するエンジニアになるための第一歩-
- Javaプログラミング基礎 -開発現場を見据えた次のステップ-
- JUnitによるテスト入門
- Javaプログラミング作法 -Effective Javaで知るプログラミングの定石-