忙しい人のためのJavaの近況とOpenJDKについて #Corretto #Zulu #Adopt

OracleからJava11がリリースされましたが

私自身、色々と誤解していた部分があったので、まとめてみました。

まとめてみると、今後はAdoptかZuluのOpenJDKがサポート期間も長く主流になるかも?と思えます。

OracleのOpenJDKも、LTSで3年サポートされれば、、、Oracle嫌いだけど。

(個人的には、流れ的にOracleのOpenJDKもLTSで3年サポートされるでしょーって思います。)

因みにサポートとは、バグフィックスやセキュリティパッチを入手できるか?ということです。

11/15 Correttoを追記。OpenJDKの戦国時代になりそうな、選択肢の豊富さになってきました。

  • Oracle JDK11
    • OracleのJDK、今までのJDKといえばほぼコレ。
    • Java12が出るまで(6ヶ月)のサポートは無償(開発・テストやプロトタイプ、デモ用途に限定)。Java12が出てからのサポートや実運用は有償。
  • Oracle OpenJDK11
    • OracleがOpenJDKをビルドして提供
    • Java12が出るまで(6ヶ月)のサポートは無償。Java12が出てからのサポート(LTS期間の3年)はチーフアーキテクトのMark Reinhold氏が宣言しているが、公式発表はなし。jdk.java.netで提供。
  • Adopt OpenJDK
    • AdoptOpenJDKコミュニティがOpenJDKをビルドして提供
    • Java8は2023年9月まで、Java11は2022年9月まで(最低4年間)サポート。
      • IBMやMS?がスポンサー
    • AdoptOpenJDK+HotspotVMと、AdoptOpenJDK+OpenJ9がある
      • Linux、AIX、Windows向けに提供されている。
      • HotspotVMのみ、MacOSとLinux ARM向けが提供されている。
    • DockerHubでも配信。 
    • IBMが、AdoptOpenJDKを4年間サポートする意向を示している。
  • RedHat OpenJDK11
    • RedHatがOpenJDKをビルドして提供
    • OpenJDK8をRed Hatが2020年10月までサポート、OpenJDK11はRed Hatが独自のサポート期間を設ける
      • Red Hat Linuxのエンタープライズ版で利用する事ができる。
  • IBM JDK + OpenJ9
    • IBMのJDK。ランタイムのOpenJ9が最近OSS化された。
    • Java8は2022年4月までサポート
      • Windows向けのバイナリは単体で提供されていない。
      • LinuxやAIX向けは単体提供あり。
      • DockerStoreで無料配信されているが、実運用は有償。
  • Zulu OpenJDK
    • AZUL SystemsがOpenJDKをビルドして提供
    • 商用サポートは8年のLTSサポートで、セキュリティとバグ修正を迅速に入手できる
    • 非商用の提供は明確にされていない。
      • JDK10、JDK9の32bit版があり、JDK6u113、JDK7u191、JDK8u181がある。
        • 非商用もサポート長いかもしれない?
      • ダウンロードページ
    • カスタマーにMicrosoft
    • 元OracleのSimon Ritter氏が所属している
  • Amazon Corretto
    • AmazonがOpenJDKをビルドして無償提供、今はプレビュー版。正式は2019年1月を予定。
    • JDK8は2023年6月(4年半)、JDK11は2024年6月(4年半)、セキュリティとバグ修正を入手できる?
    • 現在、Amazon Linux、Windows7~10、MacOSのインストーラ、Docker版が提供中、Windowsの32bit版の有無は不明。
      • 正式リリース時には、UbuntuやRed Hat Enterprise Linuxが含まれる
      • 個人的には、zip版も欲しい、、、
      • ダウンロードページ 
      • AWSにJavaの神様と言われているJames Gosling氏が所属している

以上

AntのJavaタスクでCLASSPATHを引き継ぐ

baseDirを変えて、外部のAntスクリプトを呼び出したい事があったので

javaタスクで新しいAntプロセスを起動し、build.xmlを実行することにしました。

その際に欠点があり、Ant実行時に指定したCLASSPATHが引き継がれません。

Antのドキュメントを調べてみると、VM引数に“-Dbuild.sysclasspath=last”を追加すると良さそうです。

因みに、javaタスクのcloneVm=”true”も目的を達成できそうでしたが、

対象のビルドファイル指定(-buildFile)が無効になってしまったので、

別のbuild.xmlを呼ぶことには使えなさそうです。

これで、長々とJavaタスクのclasspathを書く必要がなくなりました。

Ktorのfullstackサンプルを最新にアップデートしてみた #Kotlin

Ktorを試してみようと思い、Ktor(Backend)+KotlinJSのサンプルを見つけましたが、

影響しているモジュールが古かったので、最新にバージョンアップして、

ソースコードもバージョンアップに伴い少し修正しました。

その他、かなり自己流に修正してしまったので、PullRequestするかは検討中。。。

“Ktorのfullstackサンプルを最新にアップデートしてみた #Kotlin” の続きを読む

JRuby on Rails で #Kotlin を使う #JRuby #Rails

経緯

KotlinでWebアプリを作りたいと思い、一つの選択肢として調査した内容になります。

SpringBoot3.0がKotlinに対応してますし、Ktorもありますが、

RailsのREST-APIに適した、生産性の高いMVCフレームワークに魅力を感じて、Kotlinとの組み合わせを試して見ました。

制約

今の所、Kotlin側はデバッグやホットリロードができてません。

さらに、GradleとRailsを組み合わせて使うため、少し複雑になってます。

本格的に使う場合は、プラグインを作ってシンプルにしたいです。

また、Rails周りの経験が浅く、今はやり方が分からないのですが、デバッグ周りは出来る様にしたいと思っています。

対象OSは、macOSです。

“JRuby on Rails で #Kotlin を使う #JRuby #Rails” の続きを読む