Javaは今でも無償です、という話 / Java is still free
by
Naoki Kishida
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Javaは今でも無償です という話 2019/6/1 FGNエンジニアMeetup vol.1 きしだ なおき
Slide 2
Slide 2 text
自己紹介 • きしだ なおき • LINE Fukuoka • @kis
Slide 3
Slide 3 text
Javaのダウンロード • 「個人的な使用や開発目的での使用など、特定の使用が無償で 許可されますが、以前のOracle Javaライセンスの下で認可され たその他の使用はできなくなりました」
Slide 4
Slide 4 text
無償で商用利用ができない?
Slide 5
Slide 5 text
Javaはオープンソース • Javaはクラスパス例外付GPLで開発されている
Slide 6
Slide 6 text
Javaの開発体制 • JavaはOpenJDKとして複数の会社や個人が開発に参加している • Javaはさまざまな会社や団体がバイナリを提供している OpenJDK Oracle Red Hat SAP Googleなど Oracle Amazon Red Hat Azul 開発 Oracle JDK Oracle OpenJDK Amazon Corretto Red Hat OpenJDK Zulu AdoptOpenJDK AdoptOpenJDK バイナリ
Slide 7
Slide 7 text
Javaのリリースサイクル • 半年に一回3月と9月に新バージョンをリリース • 最新バージョンは3月にリリースされたJava 12 • Java 13が開発中で9月にリリース予定 • Oracle OpenJDK以外のディストリビューションは3年ごとに LTS(Long Term Support)を設定 • Java 11がLTS • 次のLTSはJava 17
Slide 8
Slide 8 text
どのディストリビューションを 使えばいいの? • OSやクラウド、Appサーバーで提供されているものがあればそれ • Red Hat Enterprise LinuxやCentOS • Red Hat OpenJDK • Microsoft Azure • Azul Zulu • AWS(Amazon Linux) • Amazon Corretto(予定) • こだわりがなければAdoptOpenJDK • https://adoptopenjdk.net/ • 個人の環境はOracle OpenJDKの最新版 • http://jdk.java.net/
Slide 9
Slide 9 text
OracleのJDKを無償で 本番で使いたいんだ! • GraalVMというのがあります • https://www.graalvm.org/ • Oracle Labが開発、提供 • Java 8ベース • GraalVM CEは無償で利用できる • GraalVM EEは有償 • 性能が高め
Slide 10
Slide 10 text
GraalVM • Javaで書かれたJITコンパイラ”Graal”をベースにしたJVM • GraalはJava 10にもExperimentalとして搭載されている • 現在のC2コンパイラはCで書かれていてメンテナンス困難 • GraalをAOTコンパイラとして利用してJavaをネイティブイ メージ化できる
Slide 11
Slide 11 text
GraalVM native-image • Javaの起動速度が高速化 • Javaのメモリ使用量を削減 https://medium.com/graalvm/lightweight-cloud-native-java-applications- 35d56bc45673
Slide 12
Slide 12 text
最近のJava Webフレームワーク • Helidon by Oracle • https://helidon.io/ • Micronaut by Object Computing • https://micronaut.io/ • Quarkus by Red Hat • https://quarkus.io/ • 起動速度やメモリフットプリントを削減 • GraalVM Native Imageに対応
Slide 13
Slide 13 text
ついでにJavaの最近の言語拡張 • var(JDK10) • switch式(JDK 12, 13, preview) • Text Block(JDK 13, preview) • パターンマッチング • record
Slide 14
Slide 14 text
var • ローカル変数型推論 • var list = new ArrayList();
Slide 15
Slide 15 text
switch式 • switch文が式に var s = switch (n) { case 1, 2 -> "Hello"; case 3 -> "World"; default -> "!!!"; }
Slide 16
Slide 16 text
Text Blocks • 複数行テキスト String html = """
Hello, world
""";
Slide 17
Slide 17 text
パターンマッチング • パターンマッチングが来る! if (o instanceof String s) { System.out.println(s.trim()); }
Slide 18
Slide 18 text
record型 • 構造体のようなものが • record Point(int x, int y) {} • パターンマッチも対応予定 if (p instanceof Point(var x, var y)) { System.out.printf("x:%d y:%d", x, y); }
Slide 19
Slide 19 text
まとめ • Javaは今でも無償です