ホットスワップと代替手段?


15

私の大学生活の初期から、私はJavaを使用してきましたが、私たちが抱えている最大の問題は、他の通訳言語よりも生産性が絶対に低いことです。すべての人々は、javaが最高のコンパイル言語の1つであることを確信しています。

ただし、SunもOracleもこの問題を解決するために十分な努力をしていません。もちろん、問題の1つはクラスのリロードです。

この問題を解決するためのコミュニティからの最新の試みは、DaVinci HotswapプロジェクトJRebelPlayFrameworkです。ただし、この記事の執筆時点では、まだ成熟しておらず(ネイティブ)でした。それらの一部はエンタープライズ対応ではなく、一部はすべてのIDEと互換性がなく、一部は未熟な大学プロジェクトです。ロードマップ、さらには開発者向けのJavaの準備は整っていますが、Javaコミュニティには、オンザフライでクラスをリロードするためのソリューションがまだありません。

Oracleがこの問題を解決するために努力することはそれほど難しいですか?クラスの再読み込みがネイティブにまだ実装されていないのはなぜですか?


2
実際、JRebelは完全にエンタープライズに対応しており、無料ではありませんが、IDEをかなりサポートしています。
カルロス

@CarlosZ本当に?最初のベータ版から3.xシリーズまで、JRebelでIntelliJ IDEAを使用しました。「this」の代わりに、「that」を使用する必要があります。各リリースのフォーラムでは、intelliJプラグインに関する多くの問題を確認できます。しかし、最悪の経験はデバッグの問題でした。デバッガーは非常に遅く接続できました。そして、私たちには大きな問題がありました。intellJユーザーとして、IDEAでのJRebelに関する具体的な経験があります。そしてもちろん、お金を払うことも別の問題です。

@CarlosZそれは本当に質問です。Javaでクラスのリロードをネイティブに実装することがなぜ難しいのかを知りたいです。

回答:


4

JEE / J2EEはどうですか?これは、12年前に初めてリリースされました。これは、Sun / Oracleおよび他の多くのベンダーで直接サポートされています。

OSGiはどうですか?最初のリリースはほぼ11年前です。Eclipse(IDE)はその上に構築されており、Sun / OracleのGlassfishとApache Felixはそれを広く使用しています。Spring-OSGiで使用できます。

エンタープライズアプリケーションは個別の製品としてアプリケーションサーバーによって意図的にサポートされていたため、Java SEではネイティブにサポートされていません。


@Peter Lawrey 1)Lawrey J2EEに関して具体的な解決策はありますか?あなたのポイントが見えませんでしたか?2)クラスのリロードのために、OSGIを使用すべきだと思いますか?ジグソーパズルはどうですか?JCRレベルでも、コンセンサスはまだありません:)。OSGIは、クラスのリロードとは非常に異なる領域に対処しています。3)JavaSEの部分を理解できませんでしたが、もう少し説明してもらえますか?また、DaVinci HotSwapプロジェクトはOracleがスポンサーとなっていることに注意してください。少なくとも私にとっては、彼らもそのような解決策を切望しているということです。

これは、ホットスワップの実行内容に依存します。デバッグ用のホットスワップが必要な場合は、しばらくの間これを行うことができました。ただし、堅牢なエンタープライズソリューションの場合、この性質のホットスワップは適切ではなく、管理されたリリースのみが適切です。この場合、JEEとOSGiを使用すると、実行中のアプリケーションを更新できます。これは、ほぼ同じ利点がありますが、運用環境に期待する制御を備えています。たとえば、OSGiコンテナーで、アプリケーションを停止せずにクラスを削除し、新しいバージョンに置き換えることができます。OSGiでできないことは何ですか?
ピーターローリー

1)JEE / J2EEリファレンス実装は開始点かもしれませんが、より多くの一般的で使いやすいJEEがあります。私のポイントは、実行中のシステムのコードを置き換えることができるということです。本番/制御された環境でさらに必要なもの。
ピーターローリー

1
2)OSGiを使用するのはクラスのリロードのみです。OSGiの主な用途は何ですか?
ピーターローリー

3)JEEのポイントは、これがエンタープライズアプリケーションのサポートのためのスペースであるということです。JSEは、JEEまたは他のアプリケーションに使用できる基盤プラットフォームです。
ピーターローリー

2

これを試してください:http : //www.zeroturnaround.com/blog/reloading_java_classes_401_hotswap_jrebel/

複雑な問題が複数あります。私は実際には、ステートフルエンティティの構造的な変更を行うソリューション(Javaの有無にかかわらず)を知りません。RubyやPHPなどの動的言語は実際にはそうしません。Erlangについてはわかりませんが、状態も失われると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.