Excelsior(リンク・英語)は1999年に設立され、最近、Excelsior JET(リンク・英語)6.4をリリースした。この最新バージョンには価値のある機能が含まれている。データやリソースの暗号化、スタートアップオプティマイザー、スマートコンパイルなどである。
データやリソースの暗号化
前のバージョンでは、コンパイルされたJavaクラスが最適化された結果として、コードは「安全」であった。しかし、これは、文字列、リフレクション情報、メディアファイルやプロパティファイルは保護していなかった。最新のリリースでは、これらのことはすべて「JETコントロールパネル」の単なるオプションの選択によって暗号化できる。ときどきコードが動かなくなることがある名前の最適化とは異なるものとして、Excelsiorのマーケティング部長、Dmitry Leskov氏は次のように言及する。
Javaアプリケーションを保護するために通常使われる名前の最適化とは対照的に、オンデマンドの復号化は、リフレクションやJNIで完全に機能できる状態を実現します。オンデマンドの復号化によるパフォーマンスの低下に関して、Dmitryは次のように述べている。
私たちの測定ではパフォーマンスの低下は極わずかです。しかし、これもさらに高度な暗号化のスキーマで改善されるかもしれません。顧客からの要望があれば、将来のバージョンで対応する可能性があります。スタートアップオプティマイザー
標準のSun JVMは、パフォーマンスをわずかに向上させるためランタイム中にJavaコードを最適化する。しかしながら、Excelsior JET 6.4に含まれているのは新しいスタートアップオプティマイザーであり、2つの要因によってアプリケーションのスタートアップ時間を減少することができる。この機能に関するさらなる情報は、Excelsior JET ユーザーガイド(リンク・英語)の「スタートアップ時間の最適化」の章で参照できる。
スマートコンパイル
他の注目に値する変更のひとつは、レベル0の「スマート」コンパイルである。Excelsiorウェブサイト(リンク・英語)を引用しよう。
InfoQはまた、彼らの主張を支持するベンチマークの結果や、Excelsior JETとGCJやApache Harmonyなどの他のVMで利用できるものとの比較についてDmitry氏に尋ねた。JETオプティマイザーは、プロジェクトの変更を追跡します。これにより付属のアプリケーションファイルやプロジェクト設定だけが修正された場合は、アプリレーション全体をリコンパイルしないようにします。これは、コンパイル時間を著しく減らします。例えば、バージョン情報、ランタイム設定、リソースファイル、アイコン/スプラッシュ画面などを修正する場合です。
Java 5や6で書かれたアプリケーションは、Excelsior JET 6.4でサポートする。一方、Java 1.4.2 のアプリケーションは、まだ、Excelsior JET 4.8を使うことができる。Excelsior JETの将来について、Dmitry氏はこのように語っている。私たちは、内部的に数多くのベンチマークを走らせています。ええ、確かに6.4のベンチマークの結果がいくつかありますが、それらを公開する時間がありませんでした。私たちは、SPECjvm2008の結果をすぐに公開したいと思っています。私が知っているもっとも最近のサードパーティによる結果は、http://www.stefankrause.net/wp/?p=6で参照できます。Sun JDK、IBM JDK、BEA JRockit、GCJ、Apache Harmony、Excelsior JETが挙げられていて、GCCやIntel C++は不利な結果になっています。
製品が新しいマーケットセグメントに入いっていけるように、私たちは重要な機能に取り組んでいます。このリリースの前にその機能を完成させる時間がありませんでした。したがってこのようなバージョン番号になっています。(6.5の代わりに6.4) 私たちはこの機能を発表し、7月半ばから後半にかけてベータ版を作ろうと計画しています。どうぞそのままお待ちください。:)
Excelsiorが、JET製品を組み込み(リンク・英語)アプリケーションに提供することも触れておく価値があるであろう。