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

Javaは今どうなっているの? / how about java now

Javaは今どうなっているの? / how about java now

2024年1月7日に行われたFukuoka Engineers Dayでの登壇資料です。

Naoki Kishida

January 07, 2024
Tweet

More Decks by Naoki Kishida

Other Decks in Programming

Transcript

  1. 2024/01/07 2 自己紹介 • きしだ なおき • LINEヤフー • twitter:

    @kis • 「プロになるJava」という Java入門書を書いてます
  2. javac不要で実行できる • java sample.java で実行可能 • javacを使うときに困ること • javacではファイル名を指定、javaではパッケージ含むクラス名を指定 •

    パッケージについて理解が必要 • パッケージ名と同じフォルダにソースがない場合、コンパイルはできるけど実 行はできない • ファイル名とクラス名をあわせる必要がある • 大文字小文字ではまりがち • ちょっと実行したいときにsample.classができるのも邪魔
  3. パブリックスタティックヴォイドメインからの脱却 • パブリックスタティックヴォイドメインの問題 • おまじないがいっぱいある • publicやstaticは相対的なので最初の段階では説明できない • mainから呼び出すメソッドを定義するときには必要になるのでモヤモヤしつ づけることに

    • Stringや[]はがんばれば説明できるけど、まだそのときではない • クラスもいらない • 単にコード置き場に なっている public class Sample { public static void main(String[] args) { System.out.println(“Hello world!”); } }
  4. void mainでいける • void main()でいける • void mainを消すためにはmain以外にも影響のある変更が必要 • まだ試用機能

    • Java 23くらい?(9月リリース) • System.outもそのうち消せるかも void main() { System.out.println(“Hello world!”); }
  5. グリーンスレッドの復活 • Java1.0ではグリーンスレッドだった • 当時は単一CPU、シングルコアしかなかった • GUIのバックグラウンド処理のためが主な目的 • Java1.1でOSスレッドに対応 •

    複数CPUが増え始めた。その後マルチコアが当然に • 複数プロセッサで高負荷処理 • Java 21でグリーンスレッドが「仮想スレッド」として導入 • マルチスレッドの目的が通信時に別の処理をしたいだけが多い グリーンスレッド アプリケーションで管理 軽い 複数コアを使えない OSスレッド OSで管理 重い 複数コアを使える
  6. オブジェクト指向からデータ指向へ • オブジェクト指向 • オブジェクト指向はモジュール化技術 • モジュール化はすでに行われてる • ブラウザ-サーバー •

    マイクロサービス • サーバレス • プログラムをさらにモジュール化する必要がない • データ指向 • データをデータ(not オブジェクト)として扱う • データの性質を型として定義する
  7. 直和型 • いずれかの型になる • とりうるパターンは足し算になる • sealedの導入 sealed interface Op

    { record AddOp(int a, int b) implements Op {} record SubOp(int a, int b) implements Op {} }
  8. パターンマッチング • 型ごとの処理 • 構造の分解 int calc(Op op) { return

    switch(op) { case AddOp(int a, int b) -> a + b; case SubOp(int a, int b) -> a – b; } }