プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。
「Java」は、現在日本で最も使われている言語であり、非常に人気のあるプログラミング言語です。この記事では、「Java」の歴史と特徴について解説していきます。
Javaの歴史
Javaは1996年にサン・マイクロシステムズ社のGreenと呼ばれるプロジェクトで誕生した言語です。しかし、この誕生までには長い試行錯誤がありました。
1990年代以降、家電製品の機能は急速に発展し続けており、様々な企業が次々と新しいソフトウェアを開発しては、それを販売していました。
1991年、Greenプロジェクトでは「C++」という現在でも比較的普及している言語を拡張することで対応しようと試みたのですが、家電製品などのハードウェアに依存しない開発プロセスの仕組みを活かすためには、「C++」言語では不十分でした。この過程から生まれたのが、Javaの前身である「Oak」という言語です。
1994年以降インターネットが登場して間もなく、この「Oak」という言語を使って「WebRunner」と呼ばれるブラウザが開発されました。しかし「Oak」という名前には商標権の問題が絡み、やもなく名称を「Java」と変更することになりました。
現在の「Java言語」の誕生です。
1996年にJava1.0が正式にリリースされ、「一度書けばどこでも動く(write once, run anywhere)」という革新的なコンセプトは世界中に大きな衝撃を与え、一気に広まっていくことになりました。
Javaはそこからプラットフォームの再編が行われ、ソフトウェア開発向け、通信などのサービスを提供する企業向け、そして当初からの目的であるハードウェア組み込み向けに分かれていくことになります。
スマートフォン市場が急速に拡大した現在では、AndroidOSのオープンソースとしても使われていることから、今なお、世界中で絶大な人気を誇るプログラミング言語となっています。
このように、プログラミング言語の中では歴史のある「Java言語」は、その長い期間故に色々な場面で使用されており、今後もその勢いは止まらないでしょう。
Javaはハイブリッド型の言語
Javaが「一度書けばどこでも動く」というコンセプトで一気に需要が高まったことは先ほど説明しましたが、ここからはもう少し深くJavaの特徴について解説していきます。
Javaの大きな特徴として、Javaはコンパイラー・インタプリタ両方式の性質を持つ言語であるという点です。
コンパイラー方式とは、一度すべてのコードを機械語に翻訳しそれを実行する方式を指します。一方のインタプリタ方式とは、コードを一行ずつ機械語に翻訳し、それを実行する方式のことを指します。
これら両方の性質を持つとはどういうことかというと、まず人の手で書かれたJavaのソースコードはコンパイルによりオブジェクトコードという2進数の羅列である機械語に変換されます。
その後、オブジェクトコードがそれぞれのOSに合わせてインタプリタ実行されていくのです。この2段階構成であることで、Javaのどこでも動くというコンセプトにあるように、様々なOSで動かすことが可能となっているのです。
Javaはオブジェクト指向言語
Javaのもう一つの大きな特徴に、オブジェクト指向言語という点があります。オブジェクト指向とは、独立性や再利用性、拡張性に重点を置いたプログラミングの考え方のことで、これにより効率よく開発ができるようになっています。
このオブジェクト指向は複数人の手によってシステムが開発される際の効率性を高めるための考え方であることから、Javaなどの大規模システム開発に向いた言語で採用されています。具体的な仕組みとして、独立性では「カプセル化」、再利用性では「継承」、拡張性では「抽象化」が特徴としてあります。
カプセル化
カプセル化として、Javaではクラスという仕組みが使われています。これは学校のクラスと考え方は同じで、他のプログラムと区別することで中身が見えないように隠し、干渉されないようにしています。例えば、ログインする機能はAというクラスで実装し、メールを送信する機能はBというクラスで実装し分けることで、互いが依存することなく独立性を保持できるのです。要は、悪意の有る無しに関わらず、想定しない第三者の不正利用や誤操作の防止が目的です。
継承
継承とは、複数の機能で使われている共通部分を一つのクラスで作成しておき、それを他の機能を実装する際に利用することを指し、これにより同じコードを書く手間を省くことができます。また、もし共通部分の修正が必要な場合、この継承がないと同じ修正を使っている機能分修正にないといけないですが、継承していればこの共通部分だけの修正で済むため、効率が高まるのです。
抽象化
最後の抽象化については継承と似ている部分があるのですが、継承は共通部分を具体的にクラスとして作りそれを各々の機能で再利用するのに対して、抽象化は漠然とした骨組みだけを共通部分として作成し、各々の部分でそれに肉付けするという考え方です。
イメージとしては、抽象的な内容を具体的な内容で上書きしているイメージです。これにより、抽象部分はそのままに具体的な実装部分だけを修正すれば良いことになるため、余計な実装が削減できるのです。
「抽象化」については、いますぐに覚える必要はありません。Javaを習得していくうちに、いつか必ずその時が来ます。無理に覚えようとして、結局分からず辞めていく人が多いことから、今の段階で無理に覚える必要はありません。
このように、オブジェクト指向は複数発生しうる手間を1回にまとめることができ、それがJavaには適用されているのです。
Javaで作成されているもの
そもそもJava言語は、もともとインターネットやイントラネット上でその威力を発揮できるよう進化してきた経緯があります。
それに伴い、単にプログラムやデータをネットワーク上で簡単に扱えるだけではなく、Webサーバー上での業務システムを構築する際に必要となる「セッション管理」やプログラム間での「データ受渡し」といったインフラ機能が、あらかじめ組み込まれています。
作成できないものを探す方が難しいと言えるでしょう。
Webサービス
Java言語は、下記に挙げる様々なWebサービスの開発にも利用されています。
- Twitter
当初Rubyで作成されていましたが、処理速度の問題からJava言語に変更されました。
- Evernote
EvernoteもJava言語で作成されています。
- Google検索
GoogleもJava言語で作成されています。現在はPythonなども使用されているようです。
- Amazon
多くの商用目的の大規模企業サイトもJavaで作成されています。
アプリケーション
開発者にはなじみの深いアプリケーションにもJava言語が使われています。
- Eclipse統合開発環境
Java技術者には欠かせませんね。EclipseもJavaで開発されています。
ゲーム
Javaは、Webアプリケーションだけでなく、娯楽用途のゲームにも利用されています。
- Minecraft
有名な「Minecraft」もJavaで開発されました。
スマートフォンアプリ
- Android
これは言うまでもありませんね。
商用システム
- Oracleデータベース
Oracle社による Sun Microsystems社の買収後、JavaはOracle社の主要な製品としてさらに進化し続けています。
Javaの基本は他の言語にもつながる
今回はJavaの基本的な概要について解説しました。Javaは歴史深いプログラミング言語であることから、後に出てくる多くの言語もこのJavaの考え方を反映させていることが多々あります。
そのため、プログラミング言語を初めて習得する際にJavaを学べば汎用性が高いと言われています。ぜひ、Javaのスキルを身につけてみてはいかがでしょうか。
Javaプログラムの基礎知識(全11記事)
├─Javaとは? Javaの基本概要をわかりやすく解説!
├─IDEとは?エクリプス環境を整えよう!
├─Javaの基本構造とコンパイルの流れを解説!
├─変数、リテラル、基本データ型について?
├─文字列の作成方法とStringのメソッドについて!
├─演算子について!
├─ifとswitchによる条件分岐を理解しよう!
├─ループ処理をおこなうfor文を理解しよう!
├─データをまとめて管理する配列とは?
├─メソッドとメソッドの定義について!
└─Javaに標準装備されている「ライブラリー」を活用しよう!