2017-10-17 1 views
0

HotSpot JVMチームは、Java、Javascriptなどを動的にコンパイル/インジェクトしてJVMの速度で実行できるように、非常にクールなプロジェクト​​を開発しています。 質問: - OpenJ9はGraal/Truffleと相互運用できますか? - OMRがGraal/Truffleに似ている場合は、それらを比較できますか?OpenJ9とProject Graal/Truffle

答えて

1

比較はここに書かれていますhttps://github.com/eclipse/omr/issues/1118

はその問題からジョンDuimovichを引用:だから

、簡単な答えは、Truffle/Graalがプログラミング言語を実装するためにJVMを使用することを検討しているということです。 Truffleは、ASTパーサを実装し、Graal(詳細はスキップされている)を介して最適化することで、言語を実装するために使用されます。 Graalはコード生成に重点を置き、ガベージコレクションのためにJavaに依存しています。 Javaで言語を実装します。ターゲット言語の多くはC/C++を実装言語として使用しているので、これは初心者ではないかもしれませんが、おそらくTruffleCを使って直接コンパイルすることができますが、それはオープンソースだとは思いません。印象的なベンチマークがあるので、そこにはクールなものがあります。

EclipseのOMRは、生産準備IBMのJavaによって使用されるコード、および他の言語へのブートストラップしようとしている、Javaで良いベンチマークを持っていますが、他の言語のための証拠のポイントはまだ進行中ですOMRはオープンソースプロジェクトとして約1年程であるためです。既存の言語実装者は、コンポーネントを段階的に採用できるようにC/C++実装を書き直す必要はありません。コード・ジェネラル・ライブラリを統合したい場合や、統合する別のGCインプリメンテーションを使用する場合は、OMRがモジュラー・コンポーネントとして提供されているので選択します。

また、JavaコードでJavaからOMRのJITBuilderコードジェネレータを起動できるプロトタイプもあります。 https://www.youtube.com/watch?v=w5rcBiOHrB0

+0

>ターゲット言語の多くがC/C++を実装言語として使用するため、これは非スターターである可能性があります。 たとえば、Cコードを呼び出すことができます。 JNIにはGraalLLVM [1](コードネームsulong)があります。これはJVM内でC/C++/Fortranを実行します(他のTruffle言語と同様に解釈されます)。 R/Rubyネイティブ拡張を実行するためにこれを使用しているFastRまたはTruffleRubyを参照してください。 [1] https://github.com/graalvm/sulong – Steves

+0

...もちろん、問題の可能性がある既存の実装を移植したいのであれば、同時に利益を得ることはないでしょうORM/Truffleが提供するものにその実装を採用します。 – Steves