お役立ちコンテンツ | フリーランスエンジニアの案件・求人なら【テクフリ】

Javaフレームワークとは?おすすめの10選と選び方【2021年最新版】

 oinari | 2021/03/24 - 17:00
目次

    Javaフレームワークとは

    Javaのフレームワークとは、Javaを利用して開発をする際に必要な機能を、ある法則に則ってつかえるよう標準化したものです。

    例えばJavaを1から書く場合には200行必要な機能が、Javaのフレームワークを利用すると20行だけで済むことがあります。

    フレームワークと似た言葉としてライブラリがありますが、両者の違いは「制御の反転があるかどうか」によります。

    ライブラリの場合、プログラムを動かす主導権はプログラマーが書いたコードにあります。一方でフレームワークの場合、プログラマーが書いたコードはフレームワークによって制御されるのです。

    つまり、ライブラリは主導権がエンジニア側にあり、フレームワークは主導権がフレームワークに側にあると言えます。

    Javaフレームワークを利用するメリット

    開発スピードが上がる

    MVP開発やリーンスタートアップという言葉が注目されているように、IT/Web業界では特にサービスを高速で市場に投下することが重要です。Javaのフレームワークを利用するのとしないのでは、開発スピードにかなりの差が生じます。

    例えばJavaのフレームワークには、データベースアクセスの機能やログイン機能などが備わっているのですが、それらをフレームワークなしでエラー無く完成させるには、かなりの時間を要してしまうのです。

    コードの統一性を保持(多人数開発にも対応しやすくなる)

    プログラミングに限らず全ての仕事にいえますが、コードの書き方にはその人の個性やクセがでます。

    経験、スキル、年齢、性格、キャリアなど様々な要因によって差が生じるのですが、人が書いたコードを修正するのは、かなり大変な作業です。

    フレームワークを利用すれば、コードの統一性を保持させることができます。

    統一性を保持することにより、多人数開発にも対応しやすくなります。

    バグの減少

    Javaのフレームワークは基本的に大人数のエンジニアに利用されています。そのため、バグはすでに解決されていることが多いです。

    それらのバグが少ないフレームワークを利用して開発を進めると、開発をしたプログラムもバグが少なくなる可能性が高まるといえます。

    フリーランスとして仕事が取りやすくなる

    Javaの中規模、大規模以上案件では、フレームワークが利用されていることがほとんどです。特にLaravelは年々ニーズが上昇しているため、Javaエンジニアのフリーランスとして仕事を安定的に獲得するにはキャッチアップは必須といえるでしょう。
    【Javaのフリーランス案件一覧】

    Javaフレームワークを利用するデメリット

    学習期間が必要

    フレームワークを使いこなすにはJavaの理解がある前提で、最低でも数週間は学習をする必要があります。概要を抑えることができても、細かい要望を実現しようとすると調査に更に時間がかかることはよくあります。

    また、ドキュメントは基本的に英語で書かれていることが多いです。

    イレギュラーに対応できないことがある

    フレームワークはいわゆる「よくある機能」を開発する際には有用です。
    しかし、前例が少ない機能を開発したい場合、対応できないことが多々あります。
    フレームワークは決められたルールに則ってサービスを開発していかなければならないため、イレギュラーが多発するようなサービスではフレームワークを利用しないほうが作りやすいことがあるのです。

    Javaフレームワークトレンド状況

    画像:Googleトレンド(2020/07/05~2021/06/29)をもとに算出
    Javaフレームワークのトレンド状況を見てみましょう。
    グラフから分かる通り、Javaのフレームワークは近年Spring Bootの人気が高まっています。

    おすすめのJavaフレームワーク10選

    Spring Framework

    Springは2003年に開発されたJavaのフレームワークで、東芝やNTTデータなどの大手企業が利用しています。
    Pivotalが開発しており、最新技術をいち早く導入するので、最大のシェアを伸ばしています。

    1つ目の特徴は依存性の注入(DI)です。

    これは、オブジェクトの情報を外部に分けることで、コンポーネントの集合としてアプリケーションを組み立てるデザインパターンのことです。

    具体的にはクラスやライブラリという動作に必要なクラスをそのクラス内で生成するのではなく、Springに生成を任せます。

    もう1つの特徴はAOP(Aspect Oriented Programming)です。

    Javaは属性(データ)と操作(メソッド)の集合であるクラスを単位としています。

    しかし、クラスに分解できない要素も存在します。分解できないものは複数のクラスにまたがるため、変更の際にすべてのコードから変更箇所を探す必要が生まれるなど管理が難しくなってしまいます。

    この分解できない要素をアスペクトとしてモジュール化し、管理変更追加を簡単にします。すると、もとのソースコードを変更せずに、新たな処理を追加できるようになります。

    日本語の情報は少なく、使いこなすにはJavaの高レベルな知識が必要です。

    Play Framework

    Play FrameworkはJavaとScalaを利用つくられたフレームワークです。

    RubyのRuby on RailsやPythonのDjangoとよく似ています。

    Java EEには準拠していないのですが、コンパイルが不要で開発スピードが早いのが特徴です。MVCモデルを採用しており、Eclipseを利用できます。

    CPUリソースやメモリ使用量が少ないのもPlay Frameworkの良さです。

    小規模向けで学習コストは低いのですが、日本語の情報は少ないので注意です。

    Apache Struts

    Apache Strutsは2001年ごろから利用されているJavaのフレームワークです。

    Javaでは最も有名なフレームワークとして知られており、MVCモデルを採用しています。

    歴史はあるものの、情報処理推進機構(IPA)の注意喚起脆弱性の発見によって、人気は落ちてきています。

    https://www.ipa.go.jp/security/announce/struts2_list.html

    設定が煩雑なのはデメリットに挙げられます。

    Apache Wicket

    Apache WicketはApacheソフトウェア財団が提供している2005年に開発されたフレームワークです。

    他のフレームワークはなるべくソースコードの記述を抑えようと、設定ファイルなどにアプリケーション設定を書くことで作業負担を減らそうとしますが、Apache WicketはほとんどをJavaで記述するという特徴があります。

    実際にシステムをつくるにはJavaだけでなく、Servlet、JSP、設定ファイルなど多くの設定が必要で煩雑になるケースが多いのですが、Apache Wicketでは基本的にJavaさえ知っていればシステム構築ができます。

    設定ファイルもweb.xmlだけで済むので、シンプルにJavaで開発をしたい場合におすすめです。

    SAStruts (Super Agile Struts)

    SAStrutsはSeaserプロジェクトがStrutsをベースとして開発された、国産のオープンソースフレームワークです。

    設定ファイルが自動生成できるのと、ホットデプロイ機能を採用しているのでスピーディーに開発ができるのが特徴といわれています。

    JSF

    JSFは2004年に開発されました。

    Java EEの仕様に採用されており、表示にXML方式のHTMLを採用します。

    HTMLの場合はブラウザにそのまま表示されるためデザインの確認がしやすいです。

    Webアプリケーションを作るためのフレームワークです。

    Java EE(Java Platform, Enterprise Edition)

    Java EEは1999年に登場しました。

    大規模システム向けに、複数の機能をセットにして提供しているフレームワークです。

    Javaの開発元だった、サン・マイクロシステムズの時代から提供されているため信頼性が担保されています。

    ServletやJSP、EJBや各種APIなどいろいろ

    大規模向け。かつてはJ2EEと呼ばれていた。

    Oracle社による研修や認定資格がある

    大きなフレームワークなので更新頻度は遅い

    Spark Framework

    Spark FrameworkはRubyのフレームワークである、Sinatoraに影響を受けています。

    シンプルで軽量なのが特徴です。

    Java 8のラムダ式を採用して、なるべくプログラムを完結に書くことを目指していますが、機能性は高くないのが弱点です。

    ※Apache Sparkとは別物です。

    Dropwizard

    Dropwizardは米国のSNSであるyammerのWebサービス提供のために作られた、新しいJavaフレームワークです。

    サーブレットコンテナ「jetty」が組み込まれているため、tomcatなどのアプリケーションを準備する必要がありません。

    また、多くのWebシステムでは動作時に複数のJARファイルというコンパイルされたJavaの圧縮ファイルが必要になりますが、Dropwizardでは1つのJARファイルだけで動作することができるのが特徴です。

    ZK

    ZKはブラウザとWebサーバの非同期通信を行うAjaxを取り入れた、Javaフレームワークです。

    MVCモデルのViewの部分である「プレゼンテーション層」の開発効率を高めるフレームワークと言われています。

    ユーザーインターフェースが豊富で、画面で発生したボタンクリックなどのイベントはAjaxで管理されています。

    ZKを使った開発の際にはJavaScriptの知識は必要になりますが、Ajaxを多用するシステムを構築するならZKは選択肢の一つになるかもしれません。

    Javaフレームワークの選び方

    Javaフレームワークを下記のように比較をしてみました。

    Javaのフリーランスエンジニアとして案件を受注したいのであれば、現状、選ぶべきはSpring FrameworkもしくはSpring Bootといえそうです。

    フレームワーク テクフリ案件数 Qiitaの記事数 stackoverflowでの質問数 学習コスト
    Spring 23 7731 140
    Spring Boot 10 3518 154
    Play Framework 1 823 22
    Apache Struts 1 151 7
    SAStruts 0 63 8
    JSF 0 247 33
    Java EE 0 1432 28
    Spark Framework 0 177 0
    Dropwizard 0 95 0
    ZK 0 329 1

    Javaを使用する案件紹介

    フレームワーク Spring Boot
    案件名 【Java/Kotlin】管理WEBアプリサーバーサイド開発(週3〜週5で応相談)
    月額単価 〜720,000円/月
    最寄駅 若林(慣れたあとのリモートは可能)
    業務内容 音声LIVE配信メディアを運営している企業にて、toB向けの管理WEBアプリの開発にご参画いただきます。
    今回はサーバーサイドエンジニアとして携わっていただき、要件定義からアプリケーション構築を行っていただきます。
    DBはNoSQLを推奨しておりますので、その経験や知見がある方のほうが業務に入りやすいかと思います。
    基本スキル ・JavaもしくはKotlinを使用したWebアプリケーションの開発経験
    フレームワーク Spring
    案件名 【Java/Spring】大手コンビニECサイト開発
    月額単価 〜720,000円/月
    最寄駅 麹町駅
    業務内容 大手コンビニECサイト開発PJにサーバーサイドエンジニアとして携わって頂きます。
    【案件詳細】
    ・ECサイト構築のエンハンス対応
    ・設計
・製造/単体試験
    ・内部結合試験
・外部結合試験
・システムテスト
    基本スキル ・Javaの開発経験(spring経験)
    ・SQLを使用した開発経験
    フレームワーク Spring
    案件名 【Java】アカウント情報基盤の開発・運用
    月額単価 〜660,000円/月
    最寄駅 フルリモート
    業務内容 主にエンタメ系の様々なWebサービスを展開するエンド企業にて、アカウント登録やログインなどの
    機能を提供する認証基盤と、アカウントに紐付いた個人情報を管理しているアカウント
    情報基盤の開発・運用・保守を行っているチームに参画頂きます。
    基本スキル ・JAVA/Spring or Springbootでの開発経験2,3年以上
    ・コードレビューの経験
    ・品質向上を意識した開発が行える方
    ・1人称で自主的に開発が行える方

    今すぐシェアしよう!

    B!
    仕事内容
    techcareer freelancetechcareer freelance


    【マージン率10%案件が多数掲載!】テクフリで高単価案件を探してみよう!

    上部へ戻る