Apache StrutsがJavaアプリケーションの構造維持をどうサポートするか、そしてまだ見捨てるときではない理由
多くのJava開発者は、Strutsという言葉を耳にすると、過去のレガシープロジェクトやセキュリティ脆弱性に関するセンセーショナルな見出しを思い出さずにはいられません。しかし、先入観を捨ててリポジトリを覗いてみれば、エンタープライズ分野の大きな部分を今も支えている、生きたフレームワークの姿が見えます。マイクロサービスやリアクティブプログラミングの時代には、Strutsは過去の来訪者のように見えるかもしれませんが、それでもウェブアプリケーションを構築するための明確で予測可能な方法を提供し続けています。
誰が必要としていて、なぜ今なのか
Strutsは古典的なMVCフレームワークです。主な目標は、ビジネスロジック、プレゼンテーション、ナビゲーション制御を分離することです。2000年代初頭、これは革命的なことでした:それまでは、開発者はSQLクエリ、Javaコード、HTMLタグをJSPページに直接書き込むことが一般的でした。その結果として生まれたのは、保守不可能な混乱でした。
今日、このプロジェクトはApache Software Foundationの傘下で活動しています。エンタープライズ分野で働いているなら、おそらくいつかお世話になることになるでしょう。そしてそれは単なるレガシーコードの保守だけではありません。Struts 2(WebWork 2から発展)は、Request/Responseモデルを好む人、JSFやTapestryのようなコンポーネントフレームワークの複雑な抽象化の裏側にウェブプロトコルの詳細を隠したくない人にとって、完全に現代的なツールです。
箱の中身に着什么
Strutsのアーキテクチャは3つの柱の上に構築されています。1つめはリクエストハンドラ(Actions)です。有用な処理を行うクラスを作成し、特定のURLにマッピングします。2つめは制御フローメカニズムです。ロジック実行後、フレームワークがどのリソース(例えばページやJSON)をユーザーに返すかを決定します。3つめは、インタラクティブなフォームの作成を簡素化するタグライブラリです。
興味深いことに、Strutsは特定のフロントエンドスタックやデータアクセス層を強制しようとはしません。Hibernate、JDBC、Apache Cayenneのいずれとも同様にうまく連携できます。クライアント側では、昔ながらのJSPを使うこともできますし、AngularやReactにすべてを任せて、StrutsをRESTサービスのバックエンドに変えることもできます。
以下はStruts 2のシンプルなアクションの例です:
public class HelloAction extends ActionSupport {
private String message;
public String execute() {
message = "Привет из Struts!";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
設定( традиционноXML形式ですが、アノテーションも使用可能)は、このコードをブラウザパスに接続します。透明性が高く、デバッグが容易です。
正直な自由とセキュリティ
Apache Strutsの開発者は、ライセンスの「クリーンさ」と独立性を強調しています。このプロジェクトは完全にボランティアによって運営されています。つまり、明日どの企業も利用規約を変更したり、ソースコードへのアクセスを закрытьたりすることはできません。
セキュリティに関しては:いくつかの注目されたインシデントの後、コミュニティはチェックに対して偏執的になりました。このプロジェクトは現在OpenSSF Scorecardで高評価を取得しています。リポジトリには詳細なセキュリティガイドがあり、現在のStruts 2ブランチの критическихパッチは迅速にリリースされています。
ちなみに、バージョンについて。重要なポイントとして:Struts 1は正式にサポート終了です。開発者は新規プロジェクトでの使用を強く警告し、可能な限りStruts 2への移行を推奨しています。最初のブランチはセキュリティ更新を受け取らなくなったため、本番環境での使用は意図的なリスクです。
魔法なしの柔軟性
多くの現代的な「魔法の」フレームワークとは異なり、Strutsはウェブが本質的にステートレスであるという事実を隠しません。リクエスト-レスポンスのサイクルが明確に目にします。
特定のテクノロジーを統合する必要がある場合、Strutsは拡張メカニズムを提供します。SOAPを使いたい?問題ありません。AJAXが必要ですか? готовыеソリューションがあります。JSPの代わりにFreemarkerやVelocityテンプレートエンジンを接続したいですか?それは標準ツールで行えます。
同時に、開発者は正直に言います: готовыеサーバーコンポーネントからUIを構築することが目標なら、Strutsは向きません。そのタスクには、Wicketを見る方が良いでしょう。Strutsを選ぶのは、低レベルでHTMLとJavaScriptをコントロールしたい人です。
試す価値があるか、そして誰に向いているか
Strutsは、最も良い意味での保守主義者の選択です。時間が試したアーキテクチャパターンとApacheの安定性を重視するチームに適しています。
リポジトリを注目すべき人:
- 大規模なエンタープライズシステム保守しているJava開発者。
- 不必要な複雑さと隠れた魔法のない、予測可能なMVCフレームワークを探している人。
- ライセンスのクリーンさとベンダーロックインのないオープンソースが重要なアーキテクト。
入門には、プロジェクトのウェブサイトにある公式ドキュメントとStruts 2チュートリアルから始めるのが最佳です。GitHubリポジトリは、Java開発史上最も有名なフレームワークの内部構造を見るのに最適な場所です。有时候、知っておくことは有益です。業界の「見えない支柱」(struts)が何で構成されているかを。
関連プロジェクト