寺田氏は、DockerやKubernetesで構築するアプリケーションを開発するためのJava活用のポイントにも言及。「現時点で世界的に最も利用されているJavaのバージョンは『Java 8』だ」と説明し、Java 9、Java 10以降でのDockerやKubernetesに関係する2つの機能改善を取り上げる。
参考記事:Dockerとは
まず、Java 9からは、カスタマイズしたJavaの実行環境であるJRE(Java Runtime Environment)が作成できるようになった点を説明する。
Java 8以前は、Oracleが用意したJDK(Java Development Kit)やJREと、コンテナ化したいWebアプリケーションをまとめ、コンテナの元となるDockerイメージを作成する。この場合、利用しないモジュールを含んだJDK、JREでDockerイメージを作成するため、容量が大きくなるという問題があった。Java 9からは「jlink」というコマンドを利用することで、利用者に必要なモジュールだけをまとめたJREを用いて、より小さなDockerイメージを作成できる。寺田氏は「今後、DockerやKubernetes上でJavaアプリケーションを動作させる場合、重要なコマンドになるだろう」と述べる。
次に、Java 10からは、コンテナに割り当てられたCPUやメモリの設定情報を取得できるようになった点を説明する。
Java 9以前は、DockerでJavaを利用する際、コンテナに割り当てられたCPUやメモリの設定をJVM(Java仮想マシン)が認識できなかった。そのため、コンテナ側で1コアに制限するように設定していても、ホストマシンの構成、設定を基にしてアプリケーションが実行された。結果、コンテナ側で設定した制限を超えてアプリケーションがリソースを消費し、Out of Memoryなどのエラーが発生するなどの問題が起きていた。Java 10からはJVMのオプションを利用することで、コンテナに割り当てられたCPUやメモリの設定情報を取得できるようになり、問題が解決されている。
寺田氏は、Javaの機能改善が進んでいることを説明し、コンテナ仮想化技術、Kubernetes、Javaについてまとめ、講演を締めくくった。
「グローバルではKubernetesの活用が進んでいる。Kubernetesを利用しない選択をとっても、どんな技術なのか、理解しておく必要がある。また、プログラミング言語側でも、コンテナ化を意識した機能の改善が行われている。最新技術に触れる際にはさまざまなトラブルにあうが、それを乗り越えてよりよい製品やサービス、社会を作っていくためにも、技術へのキャッチアップを欠かさないでほしい」
Copyright © ITmedia, Inc. All Rights Reserved.