現在のソフトウェア開発では、Javaがプログラミング言語の主流となっている。
そんな風に言いきってしまっても支障ないのではないでしょうか。
それほど、Javaはとても優秀なプログラミング言語であり、動作する環境に影響されず、速度も速いため様々なところに用いられています。
Javaについて、一言で表せば「なんでも作れる言語」と言えます。
Javaを使ってどのようなモノが作れるのか、その一例を以下に挙げてみます。
- Webサービスや通販サイト
- スマートフォンアプリ
- IoT機器などへの組み込みソフトウェア
- 小~大規模なWebシステム
Javaはインターネットとの相性がよく、TwitterやEvernoteといった今を代表するWebサービスや誰もが知るような通販サイトの多くはJavaで作られています。
IoT機器などへの組み込みソフトウェア、さらに、社会インフラを支える基幹システムでもJavaが使われており、Javaを使えるということで幅広いところでそのスキルを役立たせることできます。
最近では、Python(パイソン)の台頭が目立ちますが、Pythonは小規模なシステム向けであり、重要なシステムではJavaが使われているというのが筆者の印象です。
Javaの習得は仕事に直結することから大学や専門学校の授業、新入社員のプログラミング研修などではJavaが用いられることが多いです。
Javaを学ぶ利点
プログラミング言語は数百種類以上存在すると言われていますが、それら数あるプログラミング言語の中から、Javaを学ぶ利点として何があるのでしょうか。
その理由はたくさんありますが、厳選すると以下の2つです。
- 求人数が圧倒的に多い
- 他のプログラミング言語への応用が可能
「求人数が多い」というシンプルな理由ではありますが、プログラマーとして活躍したいのであれば、それだけでJava言語を習得しておく意義は高いです。
Javaが誕生したのは1996年のことであり、その歴史は長く、古いプログラミング言語と位置付けられるでしょう。
上述のとおり、プログラミング言語の種類は本当に多く、CやJavaなど長らく使われている歴史のある言語から、PythonやGo、Kotlinなど最近人気が急上昇した言語まで様々です。
どうせなら古い言語よりモダンな言語を習得したいというのが若手エンジニアの本音だと思います。
しかし、モダンなプログラミング言語が次々誕生する中で、今もなお、圧倒的な求人数を誇っているのは「Java」です。
モダンな言語の求人は首都圏に偏っており、地方では意外とニーズがなかったります。
また、Javaはオブジェクト指向型言語の代表格であり、模範となるようなものです。
そのため、Javaの基本ができていれば規則正しいお手本となるようなコードが書けるようになり、他のプログラミング言語への応用が効き、少ない学習時間でその言語を習得することが可能です。
Javaの求人数は多いですが、実際の開発現場でも、Java言語をちゃんと扱えるエンジニアは需要の割に少ない印象があります。
そうした意味でもJavaについてしっかり学んでおく意義は深いです。
Javaプログラムの実行方式
Javaプログラミングについて学んでいく前に、Javaの特徴についておさえていきます。
Javaの特徴はたくさんあり、順を追ってとらえていくのが良いと考えますが、Javaプログラミング学習の手始めに、Javaの最も基本的なコンセプトについてまずは知っておきましょう。
Javaは「Write once, run anywhere」(一度プログラムを書けば、どのマシンでも動く)という思想のもと作られたプログラミング言語です。
それはつまり、Java言語でソースコードを記述することで、そのプログラムはWindows、Mac、Linux、AndroidといったOSに依存することなく、どの環境でも動作するということです。
もしかしたら当たり前のことを言っているように思えるかもしれません。
ただ、よくよく考えるとそれは不思議なことです。
OSはプログラムの実行基盤と言え、実行基盤が異なるということは、OSごとにプログラムを用意しないと動かないはずです。
少なくとも、従来の常識ではそんなことは不可能でした。
例えば、C言語やC#、Goといったプログラミング言語で記述したソースコードは「コンパイル」という作業を行い機械語に翻訳する必要があります。
その翻訳機にあたる「コンパイラ」は、WindowsやMac、AndroidといったOSごとに用意されており、それぞれの環境用に用意されたコンパイラを使ってコンパイルする必要があります。
Windows用に翻訳されたプログラムをMac環境に持って行っても、当然動作しません。
その逆も然りです。
つまり、
「プログラミング言語で書かれたコードがあってもコンピュータは実行することができない」
ということです。
必ずコンピュータが理解できる「機械語」(マシン語)に翻訳する必要があります。
その翻訳を行うのが「コンパイラ」です。
プログラムの実態は機械語で書かれたコードであり、大事なのは、その「機械語」がすべてのコンピュータの共通言語ではないということです。
Windows、Macなどそれぞれ異なる機械語が存在します
それはつまり上図で示したようにプログラミング言語から機械語に翻訳するコンパイラもそれぞれ必要になるということです。
しかし、「Javaならひとつのコンパイラがあれば様々にあるどの環境でも動作するプログラムを生成可能である」という、登場して間もない当時は、ある種不思議がられた言語でした。
ではなぜ、そんなことが可能なのでしょうか。
それは、「Java仮想マシン(JVM:ジェーブイエム)」と呼ばれる特殊なソフトウェアが間にあるからです。
Java言語で書かれたソースコードは、バイトコードと呼ばれる中間言語にコンパイルします。
JavaバイトコードはJava仮想マシン(JVM:ジェーブイエム)上で実行される専用コードのことです。
JVMは、さまざまなプラットフォームの環境の相違を吸収するソフトウェアであり、WindowsやMac、あるいは家電や車載機器といった様々な環境に合わせて提供されています。
このJVMの存在が、「Write once, run anywhere」(一度プログラムを書けば、どのマシンでも動く)という思想を実現させているというわけです。
まとめ
Javaは、現在のソフトウェア開発において主流なプログラミング言語であり、習得する意義が高いということを本記事では解説してきました。
Javaは「Write once, run anywhere」(一度プログラムを書けば、どのマシンでも動く)という思想のもと作られたプログラミング言語であり、プラットフォーム(OSやハードウェア)に依存することのないプログラムを開発することができます。
パソコンやスマートフォン、タブレット端末、IoT機器など現在はたくさんのプラットフォームが存在しています。
Javaの特徴はそうした背景下にマッチしていることもあり、現在のシステム開発では、Javaが採用されることが非常に多いです。
ぜひ、本連載を通して、Javaについて学んでいただけますと幸いです。
次ページからはJava開発環境の構築方法について見ていきます。