JJUGナイトセミナーのメモ(これからのJavaのライセンス・サポート)

6/20 JJUGナイトセミナー 『JJUG ナイトセミナー 「緊急特集! Javaの無償版はなくならないぞ!」』のメモ。

興味あるところだけまとめ。

JDK8まで

OpenJDK

  • バイナリ提供なし
  • パッチは反映したりしなかったり
  • ライセンス: GPL V2 + classpath exception

OracleJDK

  • バイナリ提供あり
  • パッチはOracleで開発
  • JavaFX,JFR/JMC, installer etc… を追加
  • ライセンス: BCL

JDK9以降

OpenJDK

  • バイナリ提供なし => バイナリ提供あり(Oracleがビルド)
  • パッチは反映したりしなかったり
  • ライセンス: GPL V2 + classpath exception

OracleJDK

  • バイナリ提供あり
  • パッチはOracleで開発
  • JavaFX,JFR/JMC, installer etc… OpenJDK11からそちらにマージ
  • ライセンス: BCL

JDK11以降

OpenJDK

  • バイナリ提供あり
  • リリース: 3月と9月
  • アップデートリリース: (セキュリティパッチ配布) 1,4,7,10月に提供
  • サポート: (無償) 次のリリースがでたら終了、移行期間なし
  • ライセンス: GPL V2 + classpath exception

OracleJDK

  • バイナリ提供あり
  • リリース: 3年ごと
  • アップデートリリース: (セキュリティパッチ配布) 1,4,7,10月に提供
  • サポート: (有償)最長8年
  • JavaFX,JFR/JMC, installer etc… OpenJDK11からそちらにマージ
  • ライセンス: BCL

ということで、無償だとサポート期間が短すぎて、有償だと長いけど、費用かかる。
Java諦めるか?ってなるけど、いいJDKがリリースされる

AdoptOpenJDK

https://adoptopenjdk.net/

これを使うことが多くなるのではないだろうか?
サポート: JDK8 2022/9まで
ライセンス: Apache License, Version 2.0. OpenJDK code itself is licensed under GPL v2 with Classpath Exception.
スポンサー: IBM , ロンドンJUG , MicroSoftとか。。。 (https://adoptopenjdk.net/sponsors.html)

と、OpenJDKとOracleJDKでは帯に短し襷に長しな感じだったが、AdoptOpenJDKがかなり有力になるんじゃないかなーと思う。

間違ってたらツッコミをお願いします

awsのlambdaをserverless framework runtime Java8の環境構築

AWSのlambdaをserverless frameworkでJavaで動かそうとしているので、環境構築メモ

serverless frameworkインストール

まずはnpmでインストール

$ npm install -g serverless 

templateプロジェクト作成

今回は、aws-gradle-javaで作ることに

$ serverless create --template aws-java-gradle --path ${プロジェクト名}
$ cd ${プロジェクト名}

ローカル環境で実行

Javaプロジェクトをビルドしたあとにローカル環境で実行してみる
hello というエンドポイントが設定されてるので、これで実行してみる

$ serverless invoke local --function hello

Serverless: In order to get human-readable output, please implement "toString()" method of your "ApiGatewayResponse" object.
log4j:WARN No appenders could be found for logger (com.serverless.Handler).

log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

com.serverless.ApiGatewayResponse@475530b9

こんな感じで、Javaが実行される

awsのアップロード等は次回

dockerのmysqlでCan’t create/write to file ‘/var/lib/mysql/is_writable’

Macでmysqlをdockerを動かしてるとこんなのがでていた。どうやらpermissionが原因らしく、下記をセットすると動作したので、一旦メモ

下記でエラー

services:
  db-data:
    container_name: mysql-data
    image: busybox
    volumes:
      - ./volume-data/mysql:/var/lib/mysql:rw

  web:
    image: nginx:1.13.12-alpine
    ports:
      - "8080:80"

  db:
    container_name: mysql-db
    image: mysql:5.7
    volumes_from: 
      - db-data
    environment: 
      MYSQL_ROOT_PASSWORD: spring_boot_root
    ports:
        - "3306:3306"

dbのところで、user: "100:50"を追加する

services:
  db-data:
    container_name: mysql-data
    image: busybox
    volumes:
      - ./volume-data/mysql:/var/lib/mysql:rw

  web:
    image: nginx:1.13.12-alpine
    ports:
      - "8080:80"

  db:
    container_name: mysql-db
    image: mysql:5.7
    user: "1000:50"
    volumes_from: 
      - db-data
    environment: 
      MYSQL_ROOT_PASSWORD: spring_boot_root
    ports:
        - "3306:3306"

これで無事起動できた