見出し画像

Open Liberty:クラウドネイティブなJavaアプリケーションのための軽量・高速なオープンソース・ランタイム


完全にモジュール化された軽量・高速なランタイム

Open Libertyは,IBMが提供する次世代の商用アプリケーションサーバーWebSphere LibertyをOSS化したものです。Libertyは,新規に実装されたカーネルの上に従来のWebSphereで提供されていた機能がモジュール(Feature)として移植されています。一般的なアプリケーションサーバーがモノリシックな実装になっており,提供されている全ての機能が常に有効になっているのに対し,Libertyでは必要なFeatureだけを選んで有効にすることが可能です。そのため最小限のメモリで高速に起動します。

Libertyでは有効にしたFeatureだけがメモリに読み込まれる

新しいバージョンで新規のFeatureが追加されても,構成を変更して有効にしなければ既存環境が重くなることもありません。そのためLibertyでは容易かつ大胆に新機能を追加することが可能です。

また有効にしたFeatureの実行に必要なファイルだけを導入することも可能で,ディスクのフットプリントも最小限にすることができます。コンテナ環境での利用の際にも,イメージのサイズを非常に小さく保つことができ,効率的な運用が可能です。

最新のEnterprise Java仕様に対応

  • Jakarta EE 9.1 / 10

  • MicroProfile 5.0 / 6.0

  • Java SE 11 / 17 / 21

Libertyは最新の仕様にいちはやく対応。コミュニティベースで開発がすすむ最新のEnterprise Java仕様であるJakarta EE,コンテナ環境を活用したマイクロサービースなどを実装するためのMicroProfileなど,最新仕様を活用したアプリケーションを実装できます。また実行するJava SE環境についても,公開の翌月のバージョンから対応。Java SE 21にも2023年10月版からサポートしました。

ゼロマイグレーション・ポリシーで従来の仕様もサポートを継続

  • Java EE 7 / 8

  • MicroProfile 1.4 / 2.2 / 3.3 / 4.1

  • Java SE 8

様々な仕様をより長くサポートするのも Libertyの特徴です。最新バージョンでもJava EE仕様のサポートを継続してます。多くのお客様では既存のアプリケーションの実装にはJava EE仕様が利用されているでしょう。 Libertyでは,バージョンを上げてもJakarta EEへの移行は必須ではありません。

Libertyでは構成ファイルでアプリケーションから利用するAPIを指定します。Java EEの仕様を設定すれば従来のjavaxパッケージのアプリケーションを,Jakarta EEの仕様を設定すれば新しいjakartaパッケージのアプリケーションを実行することが可能です。Java EEの機能の削除は現時点では計画されておらず,当分の間Java EEのアプリケーションも利用することが可能です。

構成ファイル"server.xml"に使用するAPIを記述

また,Java 8での実行も2026年9月版まで提供することを計画しており,Java 11以降への移行を余裕を持っておこなうことができます。

使用しているTomcatや商用アプリケーションサーバーのバージョンアップで,Java EEからJakarta EEへの移行が必須になってしまって困っている。そんなお客様にもLibertyはおすすめです。

Eclipse Public Licenseで提供

Open Libertyはオープンソース・ライセンスであるEPL(Eclipse Public License)で提供されています。教育・検証・開発・本番用途を含め,どなたでも無償でご利用いただくことができます。また,EPLは派生部分のソースコードの公開義務がないため,製品やソリューションに安全に組み込んで利用することができます。

快適な開発体験

Libertyでは,Eclipse IDEをはじめVisual Studio CodeIDEA IntelliJに開発者プラグインを無償で提供しています。好みのIDEを利用して開発が可能です。openliberty.ioのスタートページでは,Libertyのプロジェクトが簡単に作成できるスターターも提供されており,すぐにLibertyの開発を始めることができます。

Visual Studio CodeにLiberty Toolsを導入した画面

Javaのビルドツールのデファクトスタンダードとして広く使われているMavenにも,プラグインを無償で提供しています。プラグインを追加することで,アプリケーションのソースだけでなく,それを実行するLibertyの構成ファイルもソースとして管理することができるようになります。プラットフォーム全体をコードとして管理するPlatform as Codeが簡単に実現できます。ビルドすると,Libertyのランタイム+構成ファイル+アプリケーションの全てを含んだZIPファイルを作成することができます。

もうLibertyでは,あらかじめサーバーにアプリケーションサーバーを導入しておく必要はありません。単一のZIPを解凍するだけで,導入から構成,アプリケーションのデプロイまで全てが完了します。ツールによる自動化やCI/CDへの組み込みも容易になり,運用の省力化・高品質化に大きく寄与します。

Libertyでは事前にサーバーを導入・構成するは必要ありません

安心のサポート

Libertyでは,必要なときにIBMからサポートを得ることができます。

OSSのOpen Libertyと商用製品のWebSphere Libertyは,バージョンが完全に同期されています。つまり同じタイミングで同じバージョン番号がでます。Libertyは4週間ごとに新しいバージョンが公開されるのですが,2023年9月には,Open Liberty / WebSphere LibertyともにVersion 23.0.0.9がでています。

新機能も同時に提供されます。一般にOSSをベースとした商用製品では,OSSで先行して新機能が提供され,商用製品にその機能が追加されるまでには数ヶ月から一年以上かかることが珍しくありません。ですがLibertyでは,Open Libertyで提供された新機能はWebSphereにも同時に提供されます。最新のOpen Libertyでテストした構成やアプリケーションは,そのままで同じバージョンのWebSphere Libertyで同じように動作します。

Open Libertyから,サポートのあるWebSphere Libertyへの移行も簡単

コンテナにも最適

ランタイムのサイズを最小に保つことができるLibertyはコンテナ環境にも最適です。

公式イメージも提供されており,4週間ごとに更新されます。公式イメージもOpen Liberty / WebSphere Libertyと同じ構成のものが提供され,共通のDockerfileでFROM行を書き換えるだけで簡単に切り替えることができます。

コンテナでのJavaの新しい可能性をひらくLiberty InstantOn

コンテナ環境では,Knativeなどの仕組みを使い,リクエストやイベントが発生したときに仮想環境を起動して処理を行う,Serverlessの仕組みが注目を集めています。システムの使用効率を高め,マイクロサービースなどで柔軟なシステムを構築するのに最適な技術です。

Serverlessでは,サーバー環境を高速に,1秒以内に起動することが必要です。リクエストがきてからサーバーを起動するServerlessでは,サーバーの起動時間がレスポンスタイムに含まれるため,起動時間がサービスの品質に直結します。

サーバーの起動時間が応答時間に含まれる

Javaのアプリケーションを高速起動させる技術としてGraalVMが注目を集めています。JavaアプリケーションをOSで直接実行可能なNativeアプリケーションにコンパイルし,高速に起動することができます。QuarkusやHelidonなどの新しいJavaフレームワークは,GraalVMを使用してNativeコンパイルができる事をアピールしています。

ただ,GraalVMによるNativeコンパイルには大きな制限があります。利用できるJavaの機能に制限がかかり,とくに動的なリフレクション操作が使用できなくなります。そのため,リフレクションを多用しているJava EEアプリケーションサーバーをGraalVMでコンパイルすることはできません。そのため各社は,Java EEと互換性のないランタイムを新規に開発しています。

2023年に登場したLiberty InstantOnは,GraalVMと全く異なるアプローチでJavaアプリケーションの高速起動を実現します。起動したJVMプロセスを,LinuxのCRIU(Checkpont Restore in Userspace)機能を使ってファイルに保存(Checkpoiint)しておき,ファイルからプロセスを復帰(Restore)することで高速に起動します。Libertyの導入されたコンテナを数百msecで起動することが可能です。

CheckpointからJavaプロセスをRestoreすることで高速に起動

Liberty InstantOnの最大の特徴は,使用できるJavaの機能に制限がないことです。そのため,現在のアプリケーションで活用されているJava EEの機能を使用してServerlessを実現することができます。またJITコンパイルも行われますので,起動した後のスループット・レスポンスタイムも十分な性能を発揮します。

更に詳しく知りたい方は

IBM Communityサイトをご覧ください。WebSphere Libertyについての多くの術情報や,Open Libertyについての各種情報へのリンクも提供されています。


この記事が気に入ったらサポートをしてみませんか?