2009-04-07 7 views
2

Javaアプリケーションに多くのフレームワーク依存関係を追加すると、起動時にすべてのライブラリがプリロードされるか、必要なときに必要なクラスだけをロードするより怠惰な動作になるため、メモリ占有量が大幅に増加しますステートメント、または後で)?多くのフレームワークをJavaアプリケーションに追加すると、負の副作用はありますか?

多くの依存関係を追加すると、Java開発者が気づくべき他の負の副作用もありますか?複数のフレームワークと

答えて

3

必要に応じてクラスのみ(importなどを経由して他のクラスによって参照)がロードされます

頭痛は、あなたが彼らの共有の依存関係を管理しなければならないということです。例えばフレームワークAにはロギングフレームワークXが必要ですが、フレームワークBにはロギングフレームワークYが必要です。

これらの問題は解決できませんが、それらを追跡する必要があります。フレームワークAをアップグレードすると、リップル効果が得られる可能性があります。リップル効果では、対応する依存関係を更新する必要があります。その場合、別のフレームワークコンポーネントの更新などが必​​要になります。

フレームワークAはアップグレードされ、Log4Jへの更新が必要です。フレームワークBをあなたの新しいLog4Jと互換性のあるバージョンに更新するように強制します。

フレームワークの要件が複数ある場合は、実際にはアプリケーションを異なるデプロイメント/サービスなどに細分する必要があります。

+0

ここで最も難しいのは、バージョンの依存関係です。フレームワークは他のフレームワーク/ libに依存するだけでなく、時にはそれらのdepsの特定のバージョンに依存します。 –

+0

それは私が(またはしようとしている)ものです。フレームワークAのコメントと波及効果に注意してください。しかし、これを強調するように編集します。 –

+0

これまでの間接的な依存関係の面でこれを見たことがありません。私の元ソフトウェア開発リーダーは、誰かが新しい依存関係を導入したとき、常に非常に重大であった(おそらく多すぎる)ことがありました。 Mavenの使用はここで多く役立ちます。ありがとう。 –

1

概念的には、多数のフレームワークを追加しているときに、コードベースに重複した機能を追加することも考えられます。この過負荷はかなり頭痛になることもあります。また、別のフレームワークの異なる機能を同じバージョンの異なるバージョンで使用することになります。それは乱雑になることがあります。

0

サードパーティ製のjarファイルに依存しているため、分散アプリケーションのサイズが気になる場合は、いつも難読化/縮小することができます。私は過去にPro Guardを使用しました。また、難読化や未使用のクラス/メソッド/フィールドなどを削除することによって、依存関係のサイズを減らします。

0

技術的には、複数のフレームワークをJavaで使用している場合&あなたのシステムがかなり大きいです&あなたのフレームワークがJavaコードのオーバーヘッドを減らすならば、それでうまくいくでしょう。例えば、システムが非常に大きい場合、データベースとのオブジェクト関係マッピングのためにHibernateを使用することができます。挿入、更新、削除のようなコードの負担を軽減します。しかし、あなたのシステムがそれほど大きくなければ、手動で上記のように書くことができます。&ハイバーネイトと同じように処理に時間がかかりません。 SpringやStruts2でも同じです。

関連する問題