web-dev-qa-db-ja.com

JDK 8の高度なコードホットスワップ?

JavaVMでより優れたホットスワップを探しています。メソッド本体の変更のみを適用できることは問題ありませんが、かなり制限されます。

使用可能なオプションは、JRebelと Dynamic Code Evolution Virtual Machine(DCEVM) と呼ばれる廃止されたプロジェクトです。

DCEVMのコア開発者によって書かれた JEP 159 があります。 2011年のブログ投稿では、DCEVMの開発者は現在OracleでこれをJDKに統合するために働いていると述べています。

この種のJDK8ベータ版のサポートはすでにありますか、それともJDK 9に延期されましたか?

ほとんどの場合、プライベートメソッドを追加、削除、および名前変更するには、ホットスワップが必要です。これは大いに役立ちます。私にそうすることを可能にする製品はありますか(PRキャンペーンが私を動揺させたJRebelのほかに)。

DCEVMの最後にサポートされたバージョンは1.6u24用であり、32ビットのLinuxバイナリのみを提供します。私は1.7ビットと64ビットのLinuxを使用しているので、これは両方とも私にとってショーストッパーです。

Fakereplace と呼ばれる別のプロジェクトもgithubで利用できます。これは私の目的に簡単に使用できますか、それとも調査すべきではありませんか?

26
Martin Kersten

Github のリポジトリに保持されているDCEVMのフォークがあります。最近、Java 8用に更新されました。バイナリはGitHubリリースまたは ダウンロードページ から入手できます。

メソッドの追加/削除などの単純なものについては、かなり信頼できるはずです(16の異なる構成での自動テストによって検証されます)。ただし、それでも最終的にJVMがクラッシュする可能性があるため、本番環境で使用しないでください。

12
Ivan Dubrov

JDK8およびJDK9で提供されるJEPは、 このページ にリストされています。 JEP-159はその中にはありません。 jep index から、JEP-159はまだjdk 10を含め、どのJDKリリースも対象にしていないことがわかります。

JEP-159のステータスは現在 "Submitted" です。プロセス 説明 次のように:

成功したJEPは、次の状態を通過します。

  • ドラフト—最初のレビューと合意形成のために著者が回覧中
  • 投稿—幅広いレビューのために著者によってJEPアーカイブに入力されました
  • 提出済み—評価の準備ができていると著者によって宣言されました
  • 候補者—OpenJDKリードによってロードマップへの追加が承認されました
  • 資金提供—グループまたはエリアリードによって完全に資金提供されていると判断された
  • 完了—完了して配信されました

そのため、ロードマップではまだ受け入れられていません。

12
eis