java Strutsとは?初心者向け解説

入社3年目30代のWEBプログラマの畑中です。
現在は、工場向けの生産管理システム開発に携わっています。java歴は2年です。

Java Strutsとは?Springと何が違うの?という感じで、開発目的に合わせた他のjavaフレームワークとの違いをよく質問されますので、現役javaエンジニアの畑中ストラッツが解説します。

 

javastrutsとは

java Strutsとは?初心者向け解説

そもそもフレームワークとはなんぞやと疑問に思う方もいらっしゃると思います
ので、簡単に説明します。フレームワークという言葉をIT用語で調べると「枠組み」という言葉が記載されています。


土台ひな形という言葉で言い表すと分かりやすいと思います。
システムは余程個性的なものでもない限り、ある程度同じようなものを作るもの
です。


一からプログラムを記述していくよりも、ある程度作ってあるもの(フレ
ームワーク)を使用して、独自の部分だけ作るといった手法を取るプロジェクトがほとんどです。その理由はコストが掛からないからだと言われています。

Strutsとはその昔デファクトスタンダードと言われるくらい普及したフレーム
ワークです。オーソドックスなフレームワークで、MVCモデル(Model View
Controller)が採用されています。


当時はかなりの人気を得て多くの企業が採用していったようですが、他のもっと
便利なフレームワークに取って代わられ段々とStrutsが使用される機会が減っ
ていきました。


しかし現在でもStrutsのフレームワークを使用しているシステムは、まだまだたくさんあり、かくいう私も今の案件はStrutsを使っていまして、フレームワークの基礎を学ぶ良い機会になっています。

現在はStrutsと言えば、Struts2が使用されています。
Struts2が開発されたのは経緯は2つあるようです。

1.生産性の向上

2.シンプルコードで記述ができるようにしたい

のようです。


Struts1からStruts2にするメリットは、シンプルなコードになった分、メンテナンスの時間を削減できること、また最近の技術にも対応していることです。

Strutsのメリット

Struts入門前に知らないと炎上!フレームワークの種類と違い

フレームワークには、開発コストを削減できるメリットがあるため、多くの企業が採用しています。そのフレームワークにはいくつか種類があり、ここではよく使われているフレームワークとそのメリットデメリットを簡単に解説します。

①Spring Framework

注目されているフレームワークですね。
特徴はやりたいことが提供されていること、保守性が高いことです。
拡張改善に優れ、また複雑なことをするにも必要な機能を提供してくれます。

②Java EE(Java Platform, Enterprise Edition)

Java標準のフレームワークです。
大規模なシステムに必要な機能が提供されています。
更新が遅いため、安定感がある反面、最新技術を取り入れるまでが遅いといった
デメリットがあります。

③SAStruts(Super Agile Struts)

Strutsでの開発をアジャイル方式で行うために便利なフレームワークです。
設定ファイルを変更しても、再起動が必要ないため開発効率を上げこと
ができます。

④Play Framework

ScalaとJava言語で書かれたフレームワークです。
特徴は、軽量さと高い生産性にあります。シンプルな開発が可能なため、小中規
模のシステム開発に向いています。

⑤Apache Struts

現在では使用している企業は減りましたが、開発者にとっては馴染みのあるフレ
ームワークとして知られています。
近年では脆弱性が問題となっていますが、今だ多くのシステムが使用しているフ
レームワークです。

javaフレームワークの種類

Springとの違いとは?

どちらのフレームワークが需要があるかと聞かれたら、Springを上げる人がほとんどだと思います。人気の高いフレームワークとして多くの企業が採用しています。


その理由といてSpringの持つ高い拡張性から、幅広いジャンルのアプリやソフトが開発できるからです。一方、Strutsはというと近年Struts1・2ともに脆弱性が指摘されていて現象傾向となっています。strutsを採用していた大手の企業が、外部からの攻撃により多数の被害を出しました。


そういった理由から徐々にStruts以外のフレームワークへと移行していく流れが広がっています。とは言え、現在Strutsは現役稼働中のシステムも多く、Strutsから他のフレームワークへ移行する際にも携わることがあります。

要は、知ってて損はないはずです。

StrutsとSpringの違いをご説明します。

Springには先述した通り拡張性が高いため、様々なシステムに対応することができます。

共通化できる部分はあらかじめ環境を整えておくことで、開発者は独自の部分だけを記述することで済みます。これは単に開発期間の短縮に繋がる以外にも、バグの発見や変更がしやすいなど、運用後の管理にも良いことです。

あくまで私が思うStrutsがSpringよりも優れている点は、馴染みやすいといったところです。特にプログラミング初心者にとってはJavaを学習後に扱うフレームワークとしてハードルが高くないと感じます。


その理由は、Java学習用のテキストに書かれている内容からそれ程変わらないからです。そういうものだと割り切って覚えるにはいいですが、どうも最初は納得がいかず、難しいと感じて苦手意識が着きがちです。

勿論Strutsもフレームワークなので、そういったしっくりこないが覚えるべきことはあるのですが、Springよりも少ないため、苦手意識が着きにくいといったメリットがあります。

java spring との違い

最短で習得する方法

私のおすすめの方法は、まずはフレームワークで書かれている記述を丸暗記する
ことです。最短で習得するのに一番オススメな環境は、現場に行って開発に携わることですね。プログラミングの先輩方が記述した実際のコードを見るのが一番習得が早いになります。


表示、登録(更新)削除など基本的にやりたいことは限られます。
最初訳が分からなくても、その決められたルールに従って記述してください。
えっ理解しなくて良いの?と疑問に思うかもしれないですが、最初は良いと思い
ます。


余裕ができたらコードの意味を考えて1つ1つの疑問を解決していけば良いです。色々考えて手が止まるよりも、まずはやるべきことを体に覚えさせる方が効率が良く最短で習得できます。

私自身も最初は理解が追い付かず、調べたりプログラミング教室に通ったことが
ありました。しかし、余計覚えることが増えすぎて混乱することになりました。
なので、自分で考えて記述するよりも、人の真似をして筋トレのように繰り返す
ことを意識することが最短でフレームワークを習得する方法だと思います。

javaを最短で習得するにはまず体で覚えよう

MVCモデルについて

MVCモデルについてイメージが湧きにくい方もいると思いますので、Struts1におけるMVCモデルについて解説します。


MVCの解説されている文章や図を見てもいまいちピンと思いますが、実際にコーディングしていくうちに役割が見えてきます。最初は大体のイメージだけ持てばいいと思います。


MVCとは…「Model」(モデル)、「View」(ビュー)、「Controller」(コントローラ)と言われるソフトウェアの設計モデルで、それぞれ役割のことです。Modelとは…データに関する役割を担っています。DBからデータを取得したり、更新したりするところですね。このDB操作に関する操作はひとまとめに「dao」と言われる階層にあります。


Viewとは…は画面をデザインする役割を担っています。文字やボタンなどをどういった風に出力するかを記述します。こちらも同様に「jsp」と言われる階層に格納されます。


Controllerとは…例えば画面から「登録」ボタンを押した際のサーバー側で行う
処理を担っています。「Action」「Form」「logic」にクラス分けされています。データを取得する(Model)、表示する(View)といった処理はこのControllerから行います。

ざっと書きましたが、こんな感じです。

やはり実際に見て書いてみることが最速で理解する方法だと思います。

java初級編

まとめ

・Strutsとは以前は、かつてディファクトスタンダードと言われるくらい世の中に広まり馴染みあるフレームワーク、まだ使用している企業も多い。
・フレームワークの種類は豊富で、それぞれ特徴を持っている。
・StrutsとSpringの違いは注目度(ただし初心者の方が学習するならばStrutsがおすすめ)
・フレームワークを学習するならまずは暗記から始めよ。
・MVCはイメージするだけで良い、まずは実際にモノを見てみることが重要。

以上、java Struts 入門編! springとの違いは?について初心者向けに解説さ
せていただきました。