単純な Java Web アプリにフレームワークを使用するのは意味があるのでしょうか?

StackOverflow https://stackoverflow.com/questions/403825

質問

私は jsps とサーブレットを使用した Java Web 開発を数多く行ってきましたが、このアプローチは簡単で柔軟であることがわかりました。ただし、データベース接続の管理など、関連する基礎作業の一部はかなり面倒で、新しい Web アプリを軌道に乗せるだけでもかなりの作業がかかります。

そこで初めてフレームワークの利用を検討しているのですが、フレームワークというと大規模なJ2EEアプリケーションに使われることが多く、複雑な設定が多いという印象です。私が探しているのは、(最初の学習曲線の後) できるだけ早く新しい Web アプリを立ち上げて実行できるようにするシンプルなものです。

そこで私の質問は、単純な Java Web アプリにフレームワークを使用するのは意味があるのでしょうか?

すでに質問されているため、どのフレームワークを使用するかを尋ねているわけではないことに注意してください(実際にフレームワークが推奨されている場合) ここ.

役に立ちましたか?

解決

それは非常に理にかなっています。私のチームは 5 年間の大部分をオープンソース スタックに費やしてきましたが、すべての新しい Web アプリを作成するために使用する「シード」プロジェクト (appfuse のように機能します) があります。アプリを保守する観点から見ると、単純な 2 ページャーでさえ、小さいだけで他のすべてのアプリと同じように見えます。

簡単に言うと、現時点では投資に対する利益は得られませんが、プロジェクトが進化し、それを維持するにつれて利益が得られるということです。

他のヒント

Web フレームワークを使用しない場合、通常は、下手な Web フレームワークを作成することになります。

はい、次の理由から Web フレームワークを使用します。

  1. ナビゲーション機能とコントロールが強化されました。必要ない場合でも、いつでも必要になった場合に使用できるようになります。
  2. 他の人が指摘したように、アプリは時間の経過とともに成長するため、将来のある時点でフレームワークの必要性を感じることになるでしょう。ページやナビゲーションを追加する必要がある場合
  3. セキュリティや DB アクセス フレームワークなどの他のフレームワークにプラグインできる機能。Spring は Java の世界における代表的な例です。Spring を使用する必要はありませんが、Struts、Spring MVC、Hibernate、Acegi などと非常によく連携します。配管工事をすべて自分で行う手間が省けます。
  4. サポート!!!優れたフレームワークには、ほとんどの場合、サポートし、質問したり答えたりするための活発なコミュニティが存在します。

最初は面倒に思えるかもしれませんが、将来的には間違いなく時間を大幅に節約できます

それは実際にはかなり重要だと思います どれの あなたが目指すフレームワーク。Spring MVC のようなものは、コード内でかなり目立たず、既存のものをそのまま実行できます。他のフレームワークには、物事をどのように行うべきかについて、より具体的なアイデアがあります。

はい、それは意味があります。アプリは成長し、変化する可能性があるため、将来的にはフレームワークが簡単に提供できるものが必要になる可能性があります。

たとえば、私の職場には単純な JSP / サーブレット アプリがあります。上で説明したことだけを理由に、書き直す必要があります。誰かがフレームワークのセットアップに時間を割いてくれたら、今より良い状態になっていたでしょう。

はい、それは理にかなっています。しかし、あなたの質問には、間違った(あなたにとって)フレームワークは価値以上に苦痛になる可能性があることが暗黙的に示されており、それは真実です。重い J2EE フレームワークと、聖杯のような軽くて陽気なフレームワークとの間には、天と地ほどの違いがあります。

代替手段は何ですか?自分で巻きますか?すべてのナビゲーションとロジックを JSP に埋め込みますか?

Web フレームワークには価値があるという意見に私も同意します。現在では文字通り何百ものものがあります (Struts、JSF、Spring、Wicket など)。あなたに合ったものをお選びください。

アプリケーションには次の 2 種類があります。

1) 捨てて二度と使用しない種類のものなので、モジュール性、保守性、明確さについて心配する必要はありません。

2) 本物の種類。

アプリは、現在計画しているよりも大きな機能セットやユーザー ベースを拡張、拡張、またはサービスする必要はまったくないかもしれないと時々思われるかもしれません...断言します、その認識は常に間違っています。

フレームワーク、具体的には Java の MVC 用 Struts、MVC 用の Spring と依存性インジェクション、オブジェクト リレーショナル モデリング用の Hibernate などはすべて、コードのモジュール性、保守性、明瞭さにつながる非常に価値のあるツールです。それで、最初の質問に答えると....はい、強調します。

いいえ、次の場合を除き、そうではありません。

  1. チームでJavaの経験はありません
  2. あなたはちょうどプロトタイプを作っています 時間以内に準備ができている必要があります
  3. 開発者を信頼していない あなたの申請書を書かせるのに十分な
  4. あなたはあなたの 開発者は学び、改善します

フレームワークの使用には次のような危険がありますが、これらに限定されません。

  1. あなたはすべてのフレームワークの欠陥を自分で上に取得します
  2. 現実的な見積もりを行うことはできません フレームワークを完璧に知っている
  3. あなたのチームはWebサーバーをプログラムする方法を学びません
  4. あなたはあなたのチームがより多くを通過するのを見つけるでしょう googleでより多くの時間を費やす代わりに コードを書くことで問題を解決します。

オープンソース フレームワークを選択することの唯一最悪の点は、社内に別個の R&D チームがあり、そのチームが「大規模で完全な究極の企業フレームワーク」を作成することです。

しかし、フレームワークに対する私の印象は、主に大規模な J2EE アプリケーションに使用され、多くの複雑な構成が必要であるということです。

必ずしも真実ではありません。優れたフレームワークは、小規模なアプリから非常に大規模なアプリまで対応できるように、適切に拡張できるように構築されています。現在のフレームワークの多くはゼロ構成に移行しているため、より簡単に使用できるようになります。

フレームワーク自体を学ぶには最初の努力が必要ですが、その投資は最初に構築するアプリケーションで元が取れるというのは正しいことです。そして、次のようなメタフレームワーク AppFuse フレームワークが事前に構成されているため、開始がさらに簡単になります。

フレームワークはほとんどのアプリケーションにとって意味があります。独自のフレームワークを構築するか、他のフレームワークを採用することが必要になる場合があります。最も重要な質問は、データ構造の粒度です。これが言いたいのは、データを入力するだけでよいのか、それとも動的コードを解析、コンパイル、実行する必要があるのか​​ということです。

フレームがゲージとして機能し、左側がすべて準備ができている既存のフレームワークのオープンソースまたはクローズドで、右側がすべてカスタムフレームワークである場合、そのフレームワークの上にコードを重ね合わせると、複雑さのレベルが増加します。右の方へ。右に行くほど、フレームワーク (IMO) で苦労することになります。

ただし、既存のフレームワークからカスタム フレームワークに徐々に移行することもできます。

あなたのビジネスについての質問もあります。銀行や病院など、ソフトウェアをコアコンピテンシーとして考慮しない企業で働いている場合は、どの程度のフレームワークを構築するかを考慮する必要があります。

結論としては、何らかのタイプのフレームワークは常に役に立ちます。

フレームワークを使用すると、学習曲線により Web アプリ開発にオーバーヘッドが追加される可能性があります。ただし、選択したフレームワークによっては、次の利点が得られる場合があります。

  1. スケーラビリティ
  2. 保守性
  3. モデルの分割をクリアします (例:MVC)
  4. すぐに使えるコンポーネント(セッション管理、認証など)
  5. サードパーティのプラグイン
  6. フレームワークから継承されたモジュール性
  7. 他にもたくさん。

さらに、学習曲線は変動要因です。スキルによっては、一部のフレームワークは他のフレームワークよりも習得が簡単な場合があります。

新しい分野の知識が得られるという理由以外に理由がなくても、フレームワークの使用を検討することは間違いなく意味があります。フレームワークの学習に投資する時間があれば、それがどれほど単純であっても、新しいプロジェクトにフレームワークを使用した方が簡単で早いことにやがて気づくかもしれません。

また、SamBeran の投稿に投票できるのであれば、そうします。フレームワークを使い始めると、「すごい!」と思う瞬間がいくつかあるでしょう。定型文をもう一度書く必要はありません!」

あなたが言ったように、単純な Java Web アプリであっても、何かを立ち上げて実行するのはかなり面倒です。このフレームワークが仕事を迅速に完了し、必要なサービスを提供するのに役立つのであれば、それは理にかなっていると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top