1 日おきに別の Java Web フレームワークを学ばなければならないことにうんざりしています。
JSP、Struts、Wicket、JSF、JBoss Seam、Spring MVC など、数え切れないほどのフレームワークが同じ問題に対処しようとしています。しかし、どれも根本的な問題を本当に解決するものではありません。そのため、常に新しい問題が次々と発生しています。
シンプルな作業をシンプルにするため、ほとんどの製品は第一印象で非常に明るく輝いて見えます。
しかし、実際のユースケースの実装になるとすぐに、問題が発生します。
多くの場合、フレームワークは何の助けも提供しませんが、フレームワーク自体のロジックと環境に従って物事を実装することを強制することで、助けを妨げ、選択肢を制限しています。
要するに、フレームワークを使用する場合、次の欠点があります。
- ほとんどの場合、学習曲線は急勾配であり、開始する前に、まず非常に学術的な概念を理解し、一連の構成ファイルの意味と場所を知る必要があります。
- ドキュメントは通常、多かれ少なかれひどいものであり、公開されているオンライン リファレンスがないか、どうしようもなく時代遅れであり、互換性のないさまざまなバージョンまたはこれらすべてが混同されており、多くの場合、役立つ例が提供されていません。
- フレームワークは無数のクラスで構成されており、ソースを閲覧するだけでは使用目的を理解することは事実上不可能です。
- したがって、全文検索がなく、持ち運ぶのが重いため、ユーザーインターフェイスが悪い「XYZ in action for dummies in 21 days」のような本を購入する必要があります。
- このフレームワークの 1 つを実際に使用するには、他に使用できない愚かで役に立たない情報で頭がいっぱいになるまで、適切なクラスとメソッド名を覚えることによって、フレームワークが必要とする方法で物事を行う方法を暗記する必要があります。 .
- 大きなオーバーヘッドが発生し、アプリケーションのパフォーマンスが低下し、実際に何が起こっているのかを理解しようとすると、脳が麻痺してしまいます。
- 現実の世界では、生産的であることのプレッシャーのために、通常、何か新しいことに慣れる時間はありません。アプローチを行うことによるこの学習の結果として、新しいツールとその可能性を実際に理解するのではなく、次のタスクを完了するための最速の方法だけを常に探します。
- 標準に従うことで、プロジェクトに不慣れな人々がすぐに始めることができるという議論は、私の見解では有効ではありません。同じ会社内であっても、すべてのプロジェクトが異なるフレームワークを使用するためです (少なくとも私の場合)。
アルバート・アインシュタインの次の引用は、ここに非常によく当てはまるように思えます。
「問題を作ったときと同じ考え方で問題を解決することはできません。」
コーディングがまだ楽しくて生産的だった古き良き PHP コーディング時代に戻ると、私はほとんどのことに対して独自のフレームワークを作成し、それを 1 つのプロジェクトから次のプロジェクトにコピー アンド ペーストして採用していました。
このアプローチは非常にうまくいき、開発が高速になり、オーバーヘッドがまったくなくなり、実際にはほとんどの Java フレームワークよりも強力なフレームワークになりましたが、1 つのファイルに数百行のコードといくつかの単純な mod_rewrite ルールしかありませんでした。
これで Web 開発のすべての問題が解決されたわけではありませんが、シンプルで、迅速で、的を射たものでした。
現在のプロジェクトの要件に完全に適合すると同時に、簡単に拡張でき、オーバーヘッドがゼロであるため非常に高いパフォーマンスが得られました。
では、なぜこのフレームワークを使用するのにそれほど手間がかかるのでしょうか? それらをすべて捨てて、ルーツに戻らないのはなぜでしょうか?
明日からまた新しいフレームワークで次のプロジェクトを始めるとき、上司に何と言えばいいですか?
それとも、本当に違いを生むフレームワークがあるのでしょうか?
または、私が無視したいくつかの隠された利点?