
Apache Struts Webフレームワークは、Java Webアプリケーションを作成するための無料のオープンソースソリューションです。
Webアプリケーションは、動的な応答を生成できるという点で従来のWebサイトとは異なります。多くのWebサイトは静的なページしか配信しません。Webアプリケーションは、データベースやビジネスロジックエンジンと連携して、応答をカスタマイズできます。
JavaServer Pagesに基づくWebアプリケーションでは、データベースコード、ページデザインコード、制御フローコードが混在することがあります。実際には、これらの関心事を分離しない限り、大規模なアプリケーションは保守が困難になることがわかっています。
ソフトウェアアプリケーションで関心事を分離する1つの方法は、Model-View-Controller(MVC)アーキテクチャを使用することです。Modelはビジネスまたはデータベースコードを表し、Viewはページデザインコードを表し、Controllerはナビゲーションコードを表します。Strutsフレームワークは、MVCアーキテクチャを利用するWebアプリケーションの作成を支援するように設計されています。
このフレームワークは、3つの主要なコンポーネントを提供します。
アプリケーション開発者によって提供され、標準URIにマッピングされる「リクエスト」ハンドラ。応答を完了する別のリソースに制御を移す「レスポンス」ハンドラ。開発者がサーバーページでインタラクティブなフォームベースのアプリケーションを作成するのに役立つタグライブラリ。フレームワークのアーキテクチャとタグは、バズワードに準拠しています。Strutsは、従来のRESTアプリケーションや、SOAPやAJAXなどのテクノロジーとうまく連携します。
Apache Strutsプロジェクトは、Apache Strutsフレームワークを作成および保守するオープンソースコミュニティです。このプロジェクトは、協調的でコミュニティベースのオープンソース開発に関する共通の価値観を共有する多様なボランティアグループで構成されています。Apache Strutsプロジェクトは、これらの価値観を親組織であるApache Software Foundationと共有できることを誇りに思っています。
このプロジェクトが「Struts」と呼ばれるのは、フレームワークがプロフェッショナルなアプリケーション開発をサポートする「目に見えない下支え」を提供することを意図しているためです。Strutsは、標準Javaプラットフォームのさまざまな要素を結合して、一貫性のある全体を形成する接着剤を提供します。私たちの目標は、長期にわたって保守が容易なエンタープライズグレードのアプリケーションを作成するために必要な欠けている部分を生成することにより、既存の標準を活用することです。
Apache Strutsプロジェクトは、Strutsフレームワークの2つのメジャーバージョンを提供しました。現在、私たちはStruts 2バージョンのみを保守しています。すべてのStruts 1.xアプリケーションをStruts 2にアップグレードすることをお勧めします。セキュリティパッチを発行しなくなったため、Struts 1.xを使用した新しいアプリケーション開発を開始しないでください。
Struts 2は、もともとWebWork 2として知られていました。数年間独立して活動した後、WebWorkとStrutsのコミュニティは力を合わせてStruts 2を作成しました。2.xフレームワークは、困難な問題に対するエレガントなソリューションを重視するチームにとって最良の選択です。
Apache Strutsは、現代的で、保守されており、フル機能を備えたWebフレームワークです。それは何年も前から存在しており、膨大なユーザーベースがあるため、近い将来に廃止される可能性は低いです。それだけでなく、プロジェクトには専任のユーザーと開発者がいます。Apache StrutsはApache License 2.0の下でライセンスされており、これは変更されません。私たちはクリーンなIPを維持しており、プロジェクトを「安全に」使用できます。企業がSCMを管理している場合、プロジェクトを「安全に」使用できないことがあります。ソースコードへのアクセスは、それが無料であることを意味しません。Apache Strutsでは、「やりたいことを自由に行う」ことができ、さらにコントリビュートすることもできます(これは常に可能であるとは限りません)。そして何より、コアチームの一員になることもできます。
Apache Strutsに他のテクノロジーを統合することは、通常非常に簡単です。Apache Cayenne、Hibernate、JDBCなどのORMを使用している場合、制限はありません。Apache Strutsはフロントエンドテクノロジーにもあまり縛られていません。昔はJSPでしたが、次にVelocityとFreemarkerが登場しました。今日では、静的なHTMLとAngularJSだけでWebアプリケーションを構築するかもしれません。あるいは、SitemeshやTilesを使用したいかもしれません。これらはすべて、Strutsのエレガントで使いやすい拡張メカニズムのおかげで問題ありません。
他のコンポーネント指向フレームワークとは異なり、私たちはWebのステートレス性を隠そうとはしません。リクエスト/レスポンスサイクルの上に構築することは完全に受け入れられると考えています。また、MVCパターンは古いという理由だけで悪いわけではないと考えています。実際、Apache Strutsのアーキテクチャはクリーンで理解しやすいと信じています。
もちろん、サーバーサイドでコンポーネントを構築し、フロントエンド側でレンダリングしたい場合は、Strutsはおそらく適していません。これは、必要なHTML/JavaScriptの知識を減らし、ビューレイヤー用の再利用可能なコンポーネントを作成することを約束する異なるアプローチです。WicketやTapestryのようなプロジェクトは、この目的に非常に適しています。すべてのフレームワークと同様に、コンポーネントを構築することが自分にとって意味があるか、それともStrutsのアプローチの方が適しているかを判断する必要があります。