JRebelの代替案を再デプロイする[終了]


190

JRebelでは、アプリケーションを再起動せずに、新しくコンパイルされたコードを再デプロイできます。代替案はありますか(無料ですか?)。 よくある質問ページには、この質問に答えるが、私はそれがJRebelに偏っています確信しています。この質問は1年前にこのサイトで行われましたが、新しい情報があるかどうかを確認するために、この質問を元に戻します。

余談ですが、私はJRebelが本当に好きですが、無料の代替手段がある場合は、それを試してみたいと思っています。

もう1つの注意点として、私はオープンソースプロジェクトに取り組んでおり、オープンソースプロジェクトに参加していることを証明できるユーザーに1年間の無料ライセンスを提供しています。これは私(www.kuali.org)にとってはうまくいきますが、私はそのプロジェクトに永遠に携わることはありません。


53
良い質問。JRebelの販売部門が非常に侵襲的であるため、JRebelの代替品も探していました。JRebelのような製品の支払いに問題はありませんが、開発者とIT部門を24時間365日悩ませている場合は問題ありません。
neu242 2013

4
独自のZeroTurnAroundによってjRebelに代わるものがあります。プロジェクトをオープンソース化してケースを研究するための無料バージョンのJrebel ... my.jrebel.com
dellasavia

2
私はそれが遅い返信であることを知っています。JVMの実行中にクラスファイルの変更をリロードするためのJVMエージェントであるSpring Loaded-をご覧ください。ロード時にクラスを変換して、後でリロードできるようにします。JVMの実行後に単純な変更のみを許可する「ホットコード置換」(たとえば、メソッド本体の変更)とは異なり、Spring Loadedでは、メソッド/フィールド/コンストラクターなどを追加/変更/削除できます...
シンプルなソリューション

Eclipseデバッガー-ライブコードを即座に置き換えます。
user1050755

姉妹サイトのSoftware Recommendations Stack Exchangeに投稿してみてください。
バジル

回答:


97

DCEVMを見てください。これは、実行時に無制限にクラスを再定義できるHotSpot VMの修正版です。フィールドとメソッドを追加/削除し、実行時にクラスのスーパータイプを変更できます。DCEVMの機能は、JEP 159の一部としてJavaの将来のアップデートに統合される可能性があります。

元のサイトで利用できるバイナリは、Java 6u25とJava 7の初期バージョンに限定されています。プロジェクトはGithubでフォークされ、Java 7および8の最新バージョンをサポートしています。メンテナーは、Windows / 32/64ビットVMのバイナリを提供しますLinux。Java 11以降、プロジェクトは新しいGitHubリポジトリに移動し、OS Xのバイナリも提供するようになりました。

DCEVMはDebianとUbuntu用にパッケージ化されており、OpenJDKと便利に統合されており、で呼び出すことができますjava -dcevm。パッケージの名前は、デフォルトのJDKのバージョンによって異なります。


5
それは正常に動作し、JRebelよりも速く、メモリ消費が少ないことがわかりました。唯一の制限は、Java 6u25に固執することです。
Emmanuel Bourg

3
どうもありがとうございました。jRebelを希望どおりに機能させるために、一日中台無しにしてしまいました。DCEVMが助けになりました。
alehro

4
JDK 7u45およびMacOSXでのDCEVMの完全なビルドおよびインストール手順を以下に示します。neu242.livejournal.com / 52962.html
neu242

1
JEP 159はJDK 8の一部ではありません。JDK9に延期された可能性がありますが、まだ確認されていません。
KrishPrabakar 2013

5
ここにいくつかの完全なJVM 1.7バイナリが見つかりました:dcevm.nentjes.comなので、JVMにパッチを適用する必要はありません。私はwin64を試してみましたが、うまくいきました。詳細が必要な場合は、javainformed.blogspot.com
2014/01

42

Hotswap Agentは、多くのJavaフレームワーク(Spring Bean定義のリロード、Hibernateエンティティマッピング、ロガーレベルのセットアップなど)をサポートするDCEVMの拡張機能です。

DCEVMとJava 1.7用にコンパイルされたバイナリをセットアップする方法に関するドキュメントもたくさんあります。


5
これで、専用のWebサイトhotswapagent.orgができました。このプロジェクトは非常に新しいものですが、非常にうまく機能しているようです。
Didier L

私はこのチュートリアルに従って、それをインストールした後にEclipseに統合しました:tirthalpatel.blogspot.fr/2014/06/…それは魅力のように機能します
jpprade

@edudant「Hotswapエージェント」をインストールした後、DCEVMをインストールする必要がありますか?Ubuntu 19.04で「sudo apt install openjdk-11-jre-dcevm」を使用してDCEVMをインストールし、IntelliJ Ultimate 2019.1.3でプラグインもインストールしたためです。「Hotswapエージェント」をインストールするだけでなく、JRebelのジョブを実行する場合、DCEVMの使用は何ですか?


20

Springの人たちによる、Grailsのリロードに使用されますが、Javaでも動作します。

https://github.com/SpringSource/spring-loaded


3
私は不平を言いたくありませんが、スプリング式は依存関係の再ロードをサポートしていません。
lbednaszynski 2013年

私が覚えているように、リロード可能にするパッケージを指示するために設定できるシステムプロパティがあります。それには他の制限があり、私はおそらくいずれにせよDCEVMに行くでしょう。
ラモン2013年

1
「リロード可能にするパッケージ」-正解。@lbednaszynskiが指摘した問題は、依存JARを再ロードしないことです。これは、Mavenマルチモジュールプロジェクトに不可欠です。
MarcelStör

このプロジェクトは現在屋根裏部屋にあります!
jpmottin 2017年


9

私は、ホットスワップで許可されているものに加えて、クラスをホット置換できるオープンソースプロジェクトに取り組んできました:https : //github.com/fakereplace/fakereplace

うまくいくかもしれませんし、うまくいかないかもしれませんが、フィードバックはありがたいです


4

あなたはこれを見てみたいかもしれません:

HotSwapサポート:Java HotSpot VMのオブジェクト指向アーキテクチャーは、オンザフライクラス再定義、または「HotSwap」などの高度な機能を可能にします。この機能は、デバッガーAPIを介して実行中のアプリケーションで変更されたコードを置き換える機能を提供します。HotSwapは、Javaプラットフォームデバッガアーキテクチャに機能を追加し、デバッガの制御下で実行中にクラスを更新できるようにします。また、プロファイリングコードが挿入されているメソッドのバージョンでホットスワップによってプロファイリング操作を実行することもできます。

現時点では、これは、アプリケーションを再起動せずに、新しくコンパイルされたメソッド本体のみを再デプロイできるようにします。デバッガーで実行するだけです。私はEclipseでそれを試しました、そしてそれは素晴らしく働きます。

また、Emmanuel Bourgが彼の回答(JEP 159)で述べたように、スーパータイプの追加、およびメソッドとフィールドの追加と削除に対するサポートが期待されています。

参照: Javaホワイトペーパー135217:信頼性、可用性、および保守性


-3

JRebelは無料です。購入しないでください。「購入」ページで「無料」オプション(ラジオボタン)を選択します。次に「ソーシャル」を選択します。サインアップすると、完全に機能するJRebelライセンスキーを取得できます。次に、JRebelをダウンロードするか、IDE組み込みバージョンのキーを使用できます。キャッチ(はい、キャッチがあります)、あなたに代わってFBタイムラインまたはTwitterアカウントに月1回投稿(広告)することを許可する必要があります。私は彼らに自分のTwitterアカウントを与えました。だから$ 260を節約。


14
もう1つ問題点があります。JRebel Socialは非営利目的でのみ無料で利用できます。はい、確かに、私があなたが実際に個人的なプロジェクトや仕事でそれを使用しているかどうかはチェックしませんが、監査人があなたがソフトウェアを誤用しているのを見た場合、それを好まないかもしれません。
アントンArhipov 2013年

2
それ以外のことはお勧めしません。実際、私がこれを取り上げる唯一の理由は、もはや「個別の」ライセンスがないためです。会社に仕事のライセンスを支払うようにさせることができました。次に、個人使用のために、3年以上にわたって個人ライセンスも支払いました。しかし、価格が年間260ドルを超えると、それは現実的でなくなりました。これは私(および他の人)にとって最善の解決策ですが、価格が妥当であれば、私も支払いを続けていただろう。
マイケルアンドリュース

42
また、すでに購入したソフトウェアを毎年購入し直す必要があるという事実は、苛立たしいものです。他の会社はこれを行いません。通常、ソフトウェアを1回購入します。アップグレードすることを選択した場合、正規価格(または会社によってはアップグレード価格)で再度購入します。しかし、そのときあなたが払っているのは新しい機能です-あなたがすでに払ったのと同じ機能ではありません。それは、OSの代金を再度支払うまで、AppleまたはMicrosoftが毎年コンピュータを無効にするようなものです。思考の糧。
マイケルアンドリュース

2
JRebel SocialはmyJRebelに置き換えられました。非営利目的の使用は無料で、統計の共有を許可する必要があります:my.jrebel.com
Steve Swinsburg

1
全体として、JRebelは開発者ソフトウェアライセンスとしては比較的安価です。
Jared Hooper
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.