新型コロナの影響からか、リモートワークなどの在宅勤務と相性がよいプログラマーの志望者が増えており、この記事を読んでいる方の中には、これからプログラミングの学習を始めて、異業種からの転職を考えている人もいるでしょう。
経産省の発表によると、2030年には最大79万人のITエンジニアは人材が不足すると予想され、今後もITエンジニアの需要は高まることが予想されています。
一口にプログラミング言語と言っても、C言語、C++、Java、PHP、Pythonなど、メジャーな言語だけでも数多くの種類が存在し、何を学べばよいか迷うこともあるでしょう。
この記事では、数あるプログラミング言語の中でも、多くの企業から採用され、エンジニアの求人の数も多い Java について解説していきます。
Java とは
Javaは、1995年にUNIXベンダーとして有名でだったサン・マイクロシステムズによって公開されたプログラミング言語です。JVM(Java Virtual Machine)という Java の仮想マシン上で動くのが特徴で、コンパイルした実行ファイルは、OSを問わずどこでも実行することができ、Java の発表当時は大きなインパクトを与えました。
2007年には、GoogleからAndroidが発表され、Javaで開発されたモバイルオペレーティングシステムとして、現在までに20億人を超えるユーザーがいます。
2010年には Oracle社によって、サン・マイクロシステムズが買収され、合併吸収されてからはOracle 社が Java を提供しています。
Java で作れるもの
他の言語に比べ Java は汎用的な言語と言われており、多くの分野のアプリケーションを開発できます。Java で作れるアプリケーションの例としては次のものがあります。
Webアプリケーション
Web アプリケーションは、アクセスしたユーザーの操作内容などから、Web サーバー上でプログラムを実行させ、その結果をブラウザ上に表示するアプリを指します。
クライアントには、Chrome や Safari などの Web ブラウザがインストールされていれば動かすことができ、ECサイトや、動画配信、SNS、Office 系アプリなど、普段使っている多くのアプリが Webアプリケーションで作成されています。
スマホアプリ
Android 用アプリは、Java で開発されている物が数多くあります。近年では Kotlin という Java と互換性があるプログラミング言語も発表されました。Kotlin は JVM上で動作するため、Java の API がそのまま使えるのが特徴です。
家電製品やIoT
冷蔵庫、リモコン、テレビなどの家電製品に組み込まれるプログラムにも Java は利用されています。この分野については C言語や C++ が多くのジェアを占めていますが、Web・スマホアプリも作れる汎用的なプログラミング言語である Java の特徴を生かして開発できるのが Java の強みを生かして、徐々に組み込みの分野でも Java が使われ始めています。
また、話題の IoT(Internet of Things、モノのインターネット化)の分野においても、通信モジュールに Java が採用されることもあり、Java の開発元である Oracle社も IoT の分野に Javaの普及を促進しています。
Javaの資格
続いて、Java に資格があるのか確認してみましょう。
Java に関する資格として最も有名なのが、Oracle 認定 Javaプログラマ (Oracle Certified Java Programmer) です。Java を提供している Oracle が主催しているベンダ資格です。
難易度に合わせた3段階のグレード
Java SE 資格は次の3段階のグレードに分けられており、一番下の”Gold”が最も難易度が高く、”Silver”は真ん中のグレードに相当します。
- ”Bronze”
- ”Silver”
- ”Gold”
これらの資格を取得すると、Java でアプリケーション開発するための知識を証明することができ、最も難易度が高い「Java Gold」を取得できれば、高い技術力が認められ、就職などでも有利に働くことがあるでしょう。
【関連記事】
▶Java Silver(シルバー)資格を取得!試験の概要と合格ポイントを解説
Java有償化、そして再度無償化
2018年9月26日にリリースされた Oracle JDK 11からライセンスが変更されました。
変更内容の概略としては、Oracle JDKを今後も商用利用する場合は、Oracle 社と月額制のサブスクリプション契約を結ぶ必要があるという変更でした。つまり、開発用途であれば無償で使えるものの、実質は Java の有償化を行うことの発表でした。
有償化されたのは Oracle JDK だけであるため、OpenJDK などのコミュニティの JDK を使用することで、無償で使い続けることは可能であったが、これらの JDK はサポートが半年ごとに切れる物もあり、セキュリティパッチなどのサポートを受け続けるためには、半年ごとに JDK のバージョンアップが必要があるなど、できるだけシステムのランニングコストを抑えたい企業にとっては選択しにくいものでした。
このような情勢を受けてか、2021年9月に Oracle社は、同社が提供する Oracle JDK についてライセンスを変更し、無償で本番環境などでの利用を可能にすると発表しました。つまり、元どおりJava を無償で使うことが可能になりました。
開発にかかせないフレームワークも知っておこう
フレームワークとは、どのような分野のシステム開発でも共通する機能をあらかじめパッケージ化し、アプリ開発の土台となる機能を提供します。
例えば、Webアプリケーションを作る場合、クライアントのブラウザと通信するためには、HTTP や TCP のプロトコルへの理解と詳細な実装が必要で、その部分を1つから作ろうと思うと膨大な時間を要することになります。フレームワークを使えば、そういった部分は全て共通処理として提供されているため、開発者は本来の機能にのみ集中できます。
このように、フレームワークを使うメリットには、1からプログラムを全て書くよりも、圧倒的に生産性が上がることが挙げられ、今やシステム開発においてフレームワークは欠かせない存在になっています。
Java は歴史が長いこともあり、これまで数え切れないほどのフレームワークが生まれてきました。その中からメジャーなフレームワークを2つ紹介します。
Spring Framework
Spring Frameworkは、中大規模のプロジェクトでよく採用されるフレームワークです。
依存性注入を行う DI機構や、AOP (アスペクト指向プログラミング) といった考えを取り入れたフレームワークなのが特徴で、テストの自動化や保守性が高いことから、企業の基幹システムなどの比較的大きなプロジェクで Spring は非常に多くのシェアを占めています。
Play Framework
Play Framework は Java または Scala を使って開発するフレームワーク で、Spring Framework とは異なり、どちらかと言えば、Ruby on Rails のようなモダンな開発と、素早い生産性を与えてくれるフレームワークです。
再び Java が無償化された背景には、Javaの利用低下や、AWS や Microsoft が長期サポート付きの JDK を発表するなど、Java に対する Oracle社の影響力低下を危惧してとの話もあります。