TechReach

Javaのフレームワーク「Struts」とは?特徴やSAStrutsとの違いについても解説

Javaの古参フレームワークであるStrutsは、懐かしいという方と、見聞きしたことはあるという方に別れると思います。この記事では、Strutsの特徴や利用方法、SAStrutsとの違いなどについて説明をしています。ぜひともご確認ください。

Javaの特徴

Javaは1996年にリリースされたオブジェクト指向のプログラミング言語で、JVM(Java Virtual Machine|Java仮想マシン)というソフトウェアがあるためWindows、macOS、LinuxなどのOSに依存せず、JVMがある環境であればプログラムを動かすことができるようになっています。

また、JavaはWebサイトやWebアプリケーションの開発に加え、業務システム、Androidアプリケーション、ゲーム、CGソフトウェア、組み込みシステム開発、IoT(Internet of Thing)など、多岐にわたる開発が可能です。これらのような特徴を合わせ持ったプログラミング言語はあまりなく、Javaはその汎用性の高さと実績から、多くの企業で利用されています。

弊社のJava案件数はプログラミング言語別で1位になっており、業界全体から見ても転職やフリーランス市場でJavaのスキルを求めるものが多くなっています。そのため、Javaを扱えるようになれば、IT業界の転職やフリーランスの案件探しを有利に進められることが期待できます。(以降の情報もすべて2022年9月現在のもの)

以上がJavaのおおまかな特徴となっています。また、Javaについてより詳しく解説をしている記事もありますので、こちらもぜひご確認ください。

 

関連記事:Javaのプログラミングで出来ることまとめ【フレームワークも紹介】

     JavaとC言語の違いとは?特徴や習得難易度について解説

Strutsとは

JavaのフレームワークであるStrutsについて説明をします。

 

出典:Welcome to the Apache Struts project

Apache Strutsフレームワークのこと

Apacheソフトウェア財団がリリースしているWebアプリケーションフレームワークで、オープンソースになっています。IT業界では正式名称のApache Strutsではなく、Struts(ストラッツ)とよく呼ばれています。2001年のリリース以降、2005年頃にはJavaのフレームワークでデファクトスタンダード(業界標準)といえるほどのシェアを誇っていました。

Strutsには『Struts1』と『Struts2』の二つがあり、Struts1は2001年にリリースされたのち、2008年10月のStruts1 ver. 1.3.10でアップデートを終了し、2013年4月にはサポート対応も終了しました。Struts2は2007年にStruts1とは別物のフレームワークとしてリリースされ、最新のバージョンは2022年6月にアップデートされたStruts2 ver.6.0.0となっています。

Struts1とStruts2はともにMVCモデルを採用しており、Struts1の登場でMVCモデルが普及していったとの見方もあります。しかしながら、かつてはデファクトスタンダードの地位を築いていたStrutsですが、後述する脆弱性の問題や、Spring Frameworkなどの登場により新規案件で利用される機会は減ってきており、弊社TechReachのStruts案件は45件にとどまっています。

Strutsのタグライブラリ・カスタムタグ

JavaにはJSP(Jakarta Server Pages|ジャカルタサーバーページス)というものがあります。JSPはHTMLファイルにJavaのプログラミングを埋め込み、Servletコンテナ (Webコンテナとも呼ばれる)でサーバー上で動くJavaのプログラムであるJava Servletに変換、データの取り出しをおこない、Javaの実行結果をHTMLとしてユーザー画面に表示するようになっています。

StrutsはJSPのぺージ(HTMLファイルと同じようなテキストファイル)で Javaのコードの代わりに利用できる専用のタグライブラリを設けており、JSPの記述を統一し可読性を上げることができます。

Strutsのタグライブラリにはhtmlタグライブラリ、beanタグライブラリ、logicタグライブラリ、tilesタグライブラリ、nestedタグライブラリが用意されていて、タグライブラリのなかにはbutton(ボタン)、message(応答メッセージ文字列)などのカスタムタグが多数あり、繰り返し利用されるプログラムコードをタグとして定義づけをすることができます。

脆弱性が指摘されている

Strutsは過去に70個ほどの脆弱性が見つかり、①情報の窃取やファイルの不正操作、②Webアプリケーションを使用不能にさせられる、③サーバー上で不正なJavaコードが実行される、などの被害が出てしまいました。これらはStruts1、Struts2の両方ともに見つかり、Strutsを利用している企業も多かったため、総務省の『Apache Strutsの脆弱性について(2014年5月1日更新)』という記事で注意喚起がおこなわれました。

現在では、Strutsの脆弱性を改善する修正パッチがリリースされ、脆弱性問題は解決しています。しかしながら、脆弱性問題はStrutsの評判を落としてしまい、Strutsを利用した新規開発が減少し、StrutsからSpring Frameworkなどへシステム移行をおこなう企業も増加しました。

 

出典:Apache Strutsの脆弱性について(2014年5月1日更新) – 総務省

JavaのStrutsを利用するには

Strutsを利用するための方法をお伝えします。

JDK(Java Development Kit)をインストール

Javaの開発に必要なソフトウェアをまとめたパッケージをJDKといい、JavaはJDKをインストールしないと利用することができません。JavaをリリースしているOracle社の公式ページにインストール方法が書かれていますので、下記の出典からインストールをしてみてください。

 

出典:JDKのインストールの概要 – Oracle Help Center

IDE(統合開発環境)を用意

Javaで開発をするだけなら、JDKをインストールするだけで利用することができます。しかしながら、Javaに限らずどのようなプログラミング言語でも、コードの入力補完や構文エラーの検知、チーム開発をスムーズにおこなう機能などがある、IDEを利用したほうが効率的に開発ができるようになっています。

JavaのIDEではEclipse(エクリプス)が有名ですが、NetBeansや IntelliJ(インテリジェ)など、IDEにはいろいろと種類がありますので、ご自身の好みで選ぶことも可能です。

しかしながら、Apache NetBeansのサイトには『Struts Webフレームワーク入門』という公式ドキュメントがあり、こちらのドキュメントではNetBeans IDEを利用した手順が書かれていますので、わかりやすさを重視する場合は公式どおりに開発環境を整えたほうがよいでしょう。

 

出典:Struts Webフレームワーク入門 – Apache NetBeans

Tomcatのインストール

Tomcatとは、『Strutsのタグライブラリ・カスタムタグ』の項でご紹介した、JSPを動かすための実行環境になるソフトウェアのひとつです。Javaで作られたWebアプリケーションを動かすためには、Servletコンテナ(Webコンテナ)というものが必要になっています。Tomcatは、StrutsをリリースしているApacheソフトウェア財団がオープンソースで提供しており、JavaのServletコンテナでは非常に有名なものです。

下記の出典にある、公式サイトからTomcatをダウンロードをすることができます。

出典:Apache Tomcat® – Welcome!を日本語に翻訳

Strutsをダウンロードし、アプリケーションの設定をする

JDK、NetBeans IDE、Tomcatのインストールで公式サイトが推奨する環境が整います。

 

出典:Struts Webフレームワーク入門 – Apache NetBeans(こちらが公式ドキュメントです。)

ここまで準備ができたあとは、Strutsを下記の出典リンクからダウンロードしていただき、公式ドキュメントに沿ってアプリケーションの設定をしていきましょう。

 

出典:Download a Release of Apache Strutsを日本語に翻訳

Struts1と2の違い

Struts1とStruts2は、名前は同じですがまったく別のフレームワークになっています。Struts2はWebWork2というJavaのWebアプリケーションフレームワークを土台に造られており、Struts 1の設定ファイルである『struts-config.xml』は『struts.xml』に、Action終了後の移行先を保持するクラスである『ActionForwardオブジェクト』は『Resultオブジェクト』に変更されました。

それら以外のStruts2で変更された点は、Ruby on RailやCakePHPのような「設定より規約」(CoC|Convention over Configuration)という設計思想の採用、制約の多いActionクラスをシンプルなJavaオブジェクトで自由に開発できるPOJO(Plain Old Java Object)の採用などがあります。

SAStrutsとの違い

SAStrutsとは、The Seasar Projectという日本のオープンソースプロジェクトが提供している、Strutsをもとにしたフレームワークです。Strutsの機能に加え、テキストや画面などのデータにタグ付けをおこなうアノテーションや、Webアプリケーションを稼働したままシステムの更新・反映ができるホットデプロイ機能などが追加されています。

そのような機能を持っているSAStrutsですが、2016年9月にEOL(End of Life|アップデートやサポート、問い合わせなどの一切を終了すること)となっています。しかしながら、弊社TechReachではSAStruts関連の案件が5件あり、案件内容はシステムの保守開発や移行業務となっています。

 

出典:Seasar2

まとめ

Strutsは脆弱性の問題などもあり、将来性が低いフレームワークであるといえるかもしれません。しかしながら、学習コストが低いフレームワークであるといわれており、これからJavaフレームワークの勉強を始める方はMVCモデルを理解するためにStrutsを学んでみる、という選択を採ることもできます。

また、Strutsを扱う仕事内容では保守開発業務が多いという特徴があります。一般的に保守開発業務では、新規開発業務より経験を求めない傾向があるため、経験の浅いエンジニアはStrutsの技術を覚えたほうが転職やフリーランスの案件探しに役立つ可能性も考えられます。

最終的な判断は個々人によりますが、Strutsのように保守開発が多いスキルの場合は、そのようなメリットがあることも覚えておきましょう。この記事が少しでもお役に立てば幸いです。

フリーランスの案件をお探しの方はTechReachにご相談ください。

TechReachを運営する株式会社アールストーンはIT・Web業界特化で15年以上の実績がございます。

そのため、高単価・高品質な数多くの案件紹介が可能です。

また一人のコンサルタントが企業と求職者様の担当を行う「両面型エージェント」を採用しているため、あなたの希望に合う案件がきっと見つかるはずです。

TechReachを活用して、理想の案件を見つけましょう!

関連記事

カテゴリ