Upgrade to Pro — share decks privately, control downloads, hide ads and more …

新しいJavaを学んで・使っていこう! / osd26do

新しいJavaを学んで・使っていこう! / osd26do

オープンソースカンファレンス北海道'26

タイムテーブル:https://event.ospn.jp/osc2026-do/session/2324693
サンプルコード:https://github.com/java-do/osc26do

Avatar for Hiroto YAMAKAWA

Hiroto YAMAKAWA

June 27, 2026

More Decks by Hiroto YAMAKAWA

Other Decks in Education

Transcript

  1. #osc26do #javado 公立千歳科学技術大学 情報システム工学科 准教授 R&D: Software Engineering, Programmer & Engineer

    Education, Learning Technology (Collaboration and Learning Environment) Hiroto YAMAKAWA 2 学習支援システムの実開発 解析性・客観的な理解可能性を ソースコードに持たせる 初学者向け設計・開発手法
  2. #osc26do #javado 次世代の開発者に向けたJavaの普及活動において、 特に優れた成果を挙げたJava User Groupが表彰される 「Java in Education Community

    Award」部門で受賞しました。 The 23rd JCP Annual Awards を受賞しました! 4 (撮影 @skrb さん) (撮影 @ ymkwlab_mayu さん)
  3. #osc26do #javado 7 月 5 日 ( 日 )にイベントを開催します! 5

    1. Java Community Process (JCP) の Chair である Heather VanCura さんによる、 Javaを事例としたAI時代の次世代開発者の育成・コミュニティの役割についての講話 2. AI時代における次世代のエンジニアの育成・成長について、参加者が悩みや考えを共有し、 今後の実践につながる示唆を得るワールドカフェ 講話:Heather VanCuraさん (英語でのご登壇ですが、  AIによる同時通訳にtryします)
  4. #osc26do #javado Java 言 語の置かれている状況 19 • 学んでおくべき言語から次第に離れ始めている • (そもそも昔から)ボイラープレートが多い

    ⇒言語仕様上、学ぶ際に意図不明になる 「おまじない」修飾子 も多い • コーディングAIによる プログラミング学習不要論 (Foo言語からBar言語を出力できる) ※登壇者の主観です 画像出典:IEEE Spectrum (2026/6/25確認) 画像出典:TIOBE Index for June 2026 (2026/6/25確認)
  5. #osc26do #javado REPL(Read-Eval-Print Loop) 23 JShellコマンドで起動し、以後はコードごとの入力・結果表示で進めていく  ⇒IDE等を準備しなくても、簡単なコード(片)動作確認ができる $ jshell |

    JShellへようこそ -- バージョン25.0.3 | 概要については、次を入力してください: /help intro jshell> List.of(1,2,3,4); $1 ==> [1, 2, 3, 4] jshell> for(int i:$1) { ...> System.out.println(i%2); ...> } 1 0 1 0 コードごとの結果表示 $1 のような スクラッチ変数も使える
  6. #osc26do #javado main メソッドのある public クラスが含まれている .java ファイルを、 classファイルにコンパイルせずに、直接起動できる 簡易起動(Launch

    Multi-File Source-Code Programs) 24 $ ls Hello.java $ javac Hello.java # コンパイル $ ls Hello.class Hello.java $ java Hello Hello! $ ls Hello.java $ java Hello.java Hello! # コンパイルせずに実行できる 従前 現在 ※複数クラスの場合も問題ない
  7. #osc26do #javado Switch文ではなくSwitch式 case に対して Arrow 演算子で結果を記述する。breakが消えて見通しがよくなる。 型パターンのマッチングも可能。 Switch式 26

    switch文 switch式 パターンマッチングswitch式 ※型や数値の範囲で切り替えができる  今後、primitive型(int, float, ...)にも対応予定
  8. #osc26do #javado 値オブジェクトなどのクラスを簡潔に定義するための構文 ※なんでもかんでもrecordsで作りたくなる症状に注意🏥  あくまで、データ管理 records 28 ・フィールド変数に final な

     id, name, credits ・equals/hashcode メソッド ・フィールドへのアクセサメソッド  (例:id()) ・別途実装したcanGraduateメソッド を備え、同値比較が可能で イミュータブルなインスタンスを作成できる
  9. #osc26do #javado public class HelloWorld { public static void main(String[]

    args) { System.out.println("Hello, World!"); } } Compact Source Files and Instance Main Methods 29 Javaの最初の実行には、言語仕様上の様々な修飾子が必要だった void main() { IO.println("Hello, World!"); } 言語仕様上の修飾子を極力排して、実行できる環境へ
  10. #osc26do #javado コード例(xxxx.javaに直接記載する。パッケージ・一部のimport・クラス名宣言不要) 標準入出力は IO クラスに再構成 Compact Source Files and

    Instance Main Methods 30 フィールド変数も定義可能 System.out ⇒ IO new Scanner(System.in) ⇒ IO 入力値ラベルを定義できるのが地味に嬉しい
  11. #osc26do #javado 一部の標準ライブラリは import も不要 Compact Source Files and Instance

    Main Methods 31 クラス定義をきちんとすると、下の記述と同等 import module java.base で java.io java.lang java.math java.net java.nio java.security java.text java.time java.util javax.crypto を利用可能
  12. #osc26do #javado • 学びやすさのための変更にとどまらず、プロダクトにも使える 教育用専用だけではなく、Javaの標準仕様として実現されている プロダクトで使えるところは積極的に使っていける (ただし、JDKのバージョンアップは必要...ここが重たい?) • 古い記法がなくなった訳ではない むしろ、これまでのプロダクトは古い記法ばかりのはず

    新しい記法は入門として使い、古い記法も把握していく必要がある... • 教育用途には、記法の変更にあわせた概念の学び順や前提知識の確認も必要 標準入力が簡単になった!...が、Scanner相当の機能ではない 例えば、数値入力をさせるためには「型変換」が必要になる ⇒概念の学びの順序(前提知識のつけさせ方)の並び替えが必要 新しい記法を使って学んでいく上で... 35
  13. #osc26do #javado • Java in Education for JUGs v2.5. Java

    Community Process. https://jcp.org/java-in-education • コンパクトなソース・ファイルおよびインスタンスのMainメソッド. Oracle Help Center. https://docs.oracle.com/javase/jp/25/language/compact-source-files-and- instance-main-methods.html 参考 文 献 36