2013-11-28 10 views
24

私はJavaVMでより良いHotSwappingを探しています。メソッド本体の変更のみを適用できることは大丈夫ですが、かなり限定的です。アドバンストコードJDK 8でのホットスワップ?

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

DCEVMのコアデベロッパーによって書かれたJEP 159があります。 2011年のブログ記事によれば、DCEVMの開発者はOracleを使ってこれをJDKに統合するようになりました。

このようなJDK 8ベータ版のサポートはすでに完了しているのですか、それともJDK 9への延期ですか?

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

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

Fakereplaceというgithubで利用できる別のプロジェクトもあります。これは私の目的のために簡単に使うことができますか?これについては調査しないでください。

+4

JRebelの開発者の一人が、市場で異なるコードスワップソリューションを少し紹介しました。 - http://stackoverflow.com/a/17642585/2269816私の個人的意見では、JRebelは作業を非常にうまくやってくれました。今すぐ近くに来てください。あなた自身がマーケティングを嫌っているのは、ツールそのものが最高品質であるにもかかわらず、おそらくあなた自身を傷つけているからです。 –

答えて

10

JDK 8およびJDK 9に入っているJEPは、this pageにリストされています。 JEP-159はその中にはありません。 jep indexから、JDK-159はまだJDKリリース10までターゲットにされていないことがわかります。

JEP-159ステータスは現在"Submitted"です。プロセスis described次のように成功したJEPは、以下の状態を通過する

  • ドラフト - 最初のレビューや合意形成のための著者による循環での
  • が投稿 - JEP締結
  • 提出されました - 評価の準備が完了したことを著者が宣言しました
  • 候補者 - Opeによるロードマップに含めるために受け入れられましたnJDKは
  • 積立鉛 - 完成し、だから、それはまだロードマップのために受け入れられていない

を配信 - 完全に完了

  • に資金を供給するために、グループや地域の鉛によって判断します。

  • +1

    それで、私はプレアルファ版かそれに類するものがあるのだろうかと思います。 DCEVMプロジェクトはかなり進化したので、なぜ1.7バージョンがないのだろうと思って、1.8バージョンを望んでいました。 –

    +0

    @MartinKersten私はどのようなスコープにも組み込まれていないので、どのようなプレアルファバージョンが利用可能になるかわかりません。 – eis

    +2

    私は、インストールして実行できる断片のようなものを望んでいました。 JDK6と2年間Oracleに雇われた人々のためにDCEVMのバージョンが動作していたことを見て、私は現在の開発状況を示す何かを期待しました。私は、オラクルが自分の得意先を止めてこのチームを辞任することを決断しないことを願っています。 –

    11

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

    メソッドを追加/削除するなどの簡単なことは、かなり信頼性が高いことです(16の異なる構成の自動テストによって検証されます)。しかし、それはやがてJVMをクラッシュさせる可能性があるため、決して実稼働環境で使用する必要はありません。

    +0

    ありがとうございます。確認してみるよ。私は開発のためにそれが必要なので、それが動作する場合は素晴らしいだろう。 –

    +0

    私はちょうどPHPのような経験を与えるために、即座にhtmlページのレンダリングメソッドを変更したいです。私が結果を得たら、修正された結果を期待するためにページのユニットテストを適応させるでしょう。今日は、コードが変更されるたびにページを自動的にリロードするのではなく、毎回フロントエンドサーバーを再起動する必要があります(ダーツ機能をページに追加してサーバーにステータスを要求しただけです)。 –

    +3

    ありがとう、私はLinux上でoracle java 1.8.0_05 x86-64を試してみました。それは美しく動作します。 fastdebugは非常に遅いので、 "product"プロファイルを使用してください。 –

    関連する問題