Javaは今でも無償です、という話 / Java is still free
by
Naoki Kishida
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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は今でも無償です