Javaテクノロジーの特徴Javaは膨大なテクノロジーが公開されています。JavaテクノロジのコアであるJREとJDK以外にも多くのテクノロジーが存在します。普段のプログラミングでJavaテクノロジーを意識することはありません。設計やパフォーマンスを考慮した実装をする際に、Javaテクノロジーの知識は重要になります。この講義では、最低限抑えて欲しいJavaテクノロジーを簡潔にまとめました。Javaバイトコードを実行する仮想マシンです。JVMは、コンパイルしたクラスをロードして実行します。JVMはクラスをロードするために、クラス・ローダー・オブジェクトを使用します。ロードされたすべてのクラスは自身のクラス・ローダーへの参照を持っており、JVMはそのクラス・ローダーを使用して、このクラスから参照されるすべてのクラスをロードします。クラス・ローダーは、java.lang.Classloader型のオブジェクトであり、開発者はこのオブジェクトを使用して、クラス名によってクラスを検索してロードします。同一の複数のクラスにJVMがアクセスできる場合、最初に見つかった該当クラスを優先します。JITコンパイラJITコンパイラは、アプリケーション実行時に、コードのコンパイルを行い実行速度の向上を図るコンパイラのことです。JITとはJust-In-Timeの略です。JIT方式は、AOTコンパイル方式と比べ、コンパイル時間の分がプログラム実行時間に関するオーバーヘッド(余分に費やされる処理時間)になります。AOTコンパイルと比べてこのような不利な点がありながらも、JITコンパイル方式が利用されているのは、実行時にコンパイルを行うことでOSやCPUに依存しないソースコードや中間コードの状態でソフトウェアを配布することができるからです。AOTコンパイラAOTコンパイラは、アプリケーション実行時に事前にコンパイルするコンパイラのこと。AOTとはAhead-Of-Timeの略です。AOT方式は、JITコンパイル方式と比べ、プログラム実行前にJavaバイトコードをネイティブコードに変換することで、プログラム実行時間に関するオーバーヘッド(余分に費やされる処理時間)を減らすことができます。9以降のLinux版のみで対応しています。GraalGraalは2018年にoracleから発表されたJITコンパイラです。既存のJITコンパイラに利用されているC2コンパイラの維持拡張がとても難しくなっていることから、新しいコンパイラとしてゼロから書かれれています。machine)です。GraalVMはJITコンパイラに既存のJITコンパイラに利用されているC2コンパイラでなく、Graalを使っています。GraalVMには、既存のJVMベースのアプリケーション用のネイティブイメージを作成する機能があります。ネイティブイメージには、即時実行のためのプログラム全体がマシンコード形式で含まれます。既存のVMだと起動コストがかかり、サーバーレスのような用途には向きませんでしたが、ネイティブイメージを使うことで起動コストがなくなり、サーバーレスでも高速に処理を実行できます。まとめこの講義では、Javaテクノロジーについて学習しました。ここで説明されているのは、初学者にも抑えていて欲しいJavaテクノロジーです。プログラミングのレベルが上がると、もっと深い知識が必要になってきます。この講義で説明されているテクノロジーを完全に理解して、さらなるプログラミングのスキルの向上に努めてください。演習この講義に関連する演習問題を用意しました。理解度を確認してください。