• 締切済み

Javaのフレームワークについて

Javaのフレームワークについての質問です。 現在、Webアプリケーションのショッピングサイトのようなサーバー側の規模がちょっと大きくなるものに関しては、スクリプト言語のPHPやRubyの代表的なフレームワークを使って作成しているのですが、Java用のWebアプリケーションのフレームワークもこれから使ってみたいと考えています。 それで、質問なのですが、 (1)現在、Java用のWebアプリケーション作成のフレームワークで世の中で皆さんが一番使われているものってどれになるのでしょうか?私が現在知っている限りでは、Struts、Struts2、JSF(Java Server Faces)、Seasar、Seasar2 くらいがあるのですが、使い分けのコツみたいなものがあれば教えていただきたいのです。(それぞれの、メリット、デメリットのようなもの。) (2)スクリプト言語のフレームワークとJavaのフレームワークの使い分けのようなものも分かれば教えてください。私の認識では、Java用のフレームワークを用いて設計しなければいけないものって、たとえば大手銀行の決済システムとか、かなり規模の大きなものを想定しています。プログラムの動作スピードを上げたい時とか、セキュリティー関係を厳重に行い時などを想定しています。Javaのフレームワークを使うメリットなども分かれば教えてください。 よろしくお願い致します。

  • Java
  • 回答数2
  • ありがとう数4

みんなの回答

noname#177743
noname#177743
回答No.2

ご質問の印象からすると、どこかの開発会社に所属していてエンタープライズな開発を手がける……といったわけではなくて、プライベートな範囲でJavaフレームワークを勉強していきたい、ということのように見受けられました。 おっしゃるように、確かに現時点でももっとも広く使われているのはStrutsだろうと思います。ただ、これを個人レベルで使っている人って、ほとんど聞いたことがありません。また、既にレガシーといってもよい古い設計で、新しく投入したStruts2もさほど普及せず、袋小路に入っている感があります。 現在、実際にプライベートユースでもっとも広く使われているJavaフレームワークは、「Google App Engine」じゃないでしょうか。私も使ってますし。まぁ、いわゆるフレームワーク」の範疇からは外れるかも知れませんが……。GAEはPaaSですが、独自のフレームワークを搭載しており、Googleのサービスを利用できるようになっています。これにライトウェイトなMVCアーキテクチャーを導入する「Slim3」というフレームワークもあり、けっこう人気があります(Seasar2を作った比嘉さんの作です)。これを使うことで、RailsやCakePHPなどのようなスタイルでMVCベース開発が行えます。 また、やはりPaaSで採用されているために利用が増えているのが「Spring」です。Springは現在、VMWareに買収されていますが、このVMWareが運営するのが、Open Paasの両雄といわれるCloud Foundry(もうひとつはOpenShiftですね)です。そんなわけで、Cloud Foundry + SpringMVCというアプローチは、GAEほどではないにしろ着実に広まりつつあります。個人的には、「RailsのHerokuとOpenShift、JavaのGAEとCloud Foundry」の4つがPaaSの中では一歩抜きん出ており、ほぼこの分野を制するだろうと思います。ですから、Javaであるならば「GAEとSpring」が今後のデファクトとなるだろう、と思うのです。 それ以外に注目されているのは、まずライトウェイトフレームワークの代名詞ともいえる「Apache Wicket」があります。これは従来の「できるかぎりJavaコードから不要なものを切り離してXMLや設定ファイルに置き換えていく」といったフレームワークの概念とは真逆です。「すべてをJavaで書こう」というのがWicketです。GUIもHTMLにはコンポーネントの格納場所となる簡単なタグがあるだけで、全部Javaのクラスとして定義します。これが、なれるとJava屋にとってはものすごく快適なんです。だって、「あれはこのXMLにタグを書いて、あれはこっちのファイルに設定を書いて……」なんてやらないでいいんですから。全部、Javaのコードをゴリゴリ書いていくだけ。素晴らしい! また、RailsのJava版となりうるだろうと思われているのが、現在はApacheに属する「Click Framework」と、Springに買収された「Grails」あたりでしょう。Clickは、Railsと同じようにコマンドでMVCファイル類を自動生成するため、とりあえずざっとアプリケーション全体を構築し、後から少しずつ具体的なページを作っていく、といったざっくりとした開発ができます。Grailsは、Java上で動くJava言語に非常に近いスクリプト言語「Groovy」を使ったMVCフレームワークで、なれるとスクリプト感覚で書けるGroovyはJava屋にとってもっとも快適なスクリプト言語であると気づきます。 HibernateやJSFなどは、直接触れることはなくなりつつあるように思えます。これらを土台として組み込んで独自フレームワークを組むような感じになってますね。例えばCloud FoundryなどもDAOの部分はHibernateを使っていたように記憶してます(うろおぼえ、別のフレームワークだったかも……)。Seasar2は根強い人気があると思います。ただ、私はあんまり触る機会がなかったのでよくわかりません。 また、大規模なエンタープライズ開発の現場については、私もよくわかりません。以上は、もう少し小規模な現場で使われているフレームワーク、ということで考えてください。

回答No.1

こんばんわ! 私の見解なので、正しいとは思わず1つの意見程度に 読んでいただけたら嬉しいです。 (1) 私がよく聞くオープン系フレームワークは Struts + Springの組み合わせ Seasar2 JSF といったところです。 ただ、最近になってVelocityやらClickやらWicketといった Apache系の軽量フレームワークを取り入れる所もあるみたいですね。 あと、割とオリジナルフレームワークの会社も多いです。 使い分けのコツ コツというか、大抵は開発するメンバーの経験してきた フレームワークの中から、多数決的な感じで決まることが多いです。 少なくとも私はそうでした。 なのでStrutsが今でも多いんでしょうね。 Seasar含むStruts系 メリットは、 設定ファイルさえやってしまえばコーディングが楽になる、 1action1インスタンスが保証されている、 って感じです。 デメリットは、 設定ファイルの記述方法を覚えなくてはいけない (意外にコーディング以上に時間がかかることも…)、 リフレクションを使ったり設定ファイルを読み込んだりがあるので 処理が生のサーブレットに比べて遅い(かもしれない)、 といったところでしょうか。 Apache系の軽量フレームワーク メリットは、 MVCモデルにもとづきJavaコードをWebページから切り離すことができる、 なのでプログラマとデザイナの仕事をキレイに分離できる (これはmayaaを使えばいいという話もありますが…)、 Java屋を実感できる(笑) (ゴリゴリと全部ソースでやるので)、 かな?と。 デメリットは、 Struts系に比べて書籍や解説サイトが少ない、 ゴリゴリと全部ソースでやるので辛く感じる人もいる、 とかですかね。 余談になりますが、HibernateやS2Daoといった DB系のフレームワークもあります。 こちらも合わせて理解しておくといいと思います。 (2) JavaのWebアプリって、基本的にフレームワークを用いります。 理由として、例えばいちいちパラメータのサニタイズを 実装しなきゃいけないのが面倒だとか、 MVCを明確にしただとか、 おっしゃる通りスピードとかセキュリティもあります。 まぁぶっちゃけるなら「ちょっとお勉強が必要だけど フレームワーク使った方が楽だもん」です(笑) サーブレットって本当に基本しか用意されてないので、 1から作ると共通処理をライブラリ化したり 何だりカンだりラジバ…すると、結局オリジナルの フレームワークが完成してしまいます。 なので「基本フレームワークは使う」ってなるのかな? なんて感じています。 最後になりますが、プログラム全般そうですが 大切なのは生産性と保守の容易さだと思ってます。 それを基本にフレームワークを選定するといいと思います。 初めに申しました通り、にわかJava屋の1つの見解です。 実は内容が間違ってるかもしれません(汗) 長文失礼いたしました。

関連するQ&A

  • Javaのフレームワークの勉強を始めます.

    Javaのフレームワークの勉強を始めます. 以下の3つのフレームワークに関する推薦図書があれば教えてください. JavaとWebアプリケーションの基礎知識はあります. ・Struts2 ・Spring ・JSF

  • javaフレームワークの入門として何が良い?

    今後、会社のWebシステムでjavaのフレームワークを使った開発を行うことになりそうです。(何を使うかは未定) そこで取っ掛かりとして、 どのフレームワークから勉強すると、理解しやすいでしょうか?? 個人的には、strutsがseasar2やspringの基本になってそうなので、 strutsだけでも触れておくほうがいいのかなと思ってるのですが。 如何でしょうか。 また、お薦めの書籍があればご教示ください。

    • ベストアンサー
    • Java
  • struts以外のフレームワークについて

    Javaにて、struts以外のフレームワークってあるのですか? struts以外の対抗馬ってJSF? JavaのWeb開発では、他にフレームワークってあるのですか? よろしく御願いします

    • ベストアンサー
    • Java
  • Javaのフレームワークを教えてください

    Javaを使いWEBページを作成しようと思っています。 使いやすいJavaのフレームワークを教えてください。 Strutsは使いづらいです>< ライブラリ等が充実していると助かります。

    • ベストアンサー
    • Java
  • Webアプリのフレームワーク

    JavaのWebアプリを構築するときは、皆さんはどんなフレームワークをお使いでしょうか?お勧めのものがあれば教えていただけますか?特にトランザクション管理が楽になるものがあればぜひ教えていただきたいです。 今まではずっとjavaのWindowsアプリを作っていました。Webアプリはまったくの素人です。今のところ、 ■以下はほぼ決定: jdk:j2se5 サーブレットコンテナ:Apache tomcat5.x ウェブサーバ:Apache最新 DB:MySQL最新 IDE: Eclipse WTP最新 テスト系:JUnitなど ■以下のライブラリを使うかどうか迷ってます。 ・JSF(よさそう) or Struts、 ・hibernate、 ・Seasar(よさそう) or Spring など よろしくお願いします。

    • ベストアンサー
    • Java
  • JavaでWebシステム。フレームワークは必須?

    これからJavaでWebシステムを作る場合、 フレームワークは、普通、必要でしょうか? 業務用のシステムでフレームワークなしで作るケースはあるのでしょうか? Strutsを使って、新規にWebシステム立ち上げるのはありですか? 今は新規の場合、Strutsではなく、Struts2を使うのが当然ですか?

  • どんなフレームワークが良いでしょうか?

    どんなフレームワークが良いでしょうか? Java言語を用いた画面が4つぐらいのWebシステムを作成しようとしています。 下記の環境はほぼ決まっています。 OS:Windows XP 言語:Java 1.6 APサーバ:Tomcat 6.0 開発ツール:eclipse 3.4 DB:HiRDB 8 サーブレットとJSPについてはある程度知識がありますが、 フレームワークについてはほとんど知識がありません。 (Struts1のシステム開発を少しだけ手伝ったことがあるぐらいです。) データベースアクセスについてもプログラム内にSQL文を自分で記述する 初歩的なやり方でしか経験がありません。 出来ればフレームワーク初心者でも仕組みがわかりやすいフレームワークで 作成しようと考えています。 フレームワークの組み合わせによってはXMLだらけになって 管理が大変だという記述も見ました。 フレームワークを知らない自分がいろいろ試すより、 これまで皆さんが用いた様々なフレームワークについてご意見を頂きたいです。

    • ベストアンサー
    • Java
  • Java (ジャバ)

    Java とは、使っているパソコンの機種に依存しないプログラム言語のこと。 ネットで扱われているJavaは、大きく分けてJavaスクリプトとJavaアプレットの2種類。 script・・・手書き、筆記、台本、原稿 applet・・・別のアプリケーションを動かしているときに呼び出せる小さなアプリケーションプログラム なのだそうですがよくわかりません。 素人でもわかる説明となるとどうなるでしょうか? お願いします。

  • JSPとフレームワーク

    初歩的な質問ですが、素通りせず回答お願いします。 JSPでWebアプリケーションを作成するため JSPの勉強をしようと考えていますが、StrutsやHibernateなどの フレームワークの勉強も必要でしょうか? ※ちなみにJava初心者です(余談)。 どなたかご教授ください、お願いします。

    • ベストアンサー
    • Java
  • Javaサーブレットのフレームワーク

    JavaサーブレットとmySQLを使用してwebサイトを構築したいのですが HTMLの加工や変更がしやすく処理速度が速いJavaサーブレットのフレームワークって何かありますか

専門家に質問してみよう