未来エンジニア養成所Blog

プログラミングを皆に楽しんでもらうための情報をお届けします。

【Java】Javaってなに? Part1

title


今回はシンプルに、そもそもJavaってどのようなものかを解説していきます。


Java の歴史と特徴

Java はプログラムを作るために利用するプログラミング言語の1 つです。

Sun Microsystems 社が「Oak」という名前で開発し、1995 年に「Java」に改名して正式に発表されました。

サーバ、スマートフォン、Web サイトのコンテンツ、パソコン用アプリケーション、家電製品からロボットまで、あらゆる場面で使われています。


これら様々な分野でJava が使われる理由は、

  • 学びやすく標準的な文法であり、豊富な命令群を装備している

  • 大規模開発に向いているオブジェクト指向である

  • プラットフォームに依存せずに実行できる

ということがあげられます。


学びやすく標準的な文法であり、豊富な命令群を装備している

文法が比較的簡単で学びやすいことから、プログラム開発の初心者には取り組みやすく、標準的であることから他言語を利用する際にも容易に理解することができます。

また、予め用意してある多くの命令文を利用することで、開発時間の短縮も可能です。


大規模開発に向いているオブジェクト指向である

オブジェクト指向(Object-Oriented)とは、物事を抽象化し、単純化して捉え、現実世界の機能的な仕組みを部品としてまとめ、プログラム開発にとりいれたものです。

機能ごとにまとめられた部品を利用することでプログラムを単純化し、また再利用できるので、大規模開発においても生産性が向上し、修正や改造が容易になります。


プラットフォームに依存せずに実行できる

プラットフォームとは、ここではハードウェアのアーキテクチャやOS などを意味します。

簡単に言うと、さまざまなマシンやOS 上で動かすことができる、ということです。




Javaの歴史はJava の開発キットであるJDK(Java Development Kit)の歴史と考えることができます。このJDKのバージョンがJava のバージョンとなります。


Javaバージョン履歴 - Wikipedia


JDKは1996年に1.0 がリリースされ、1998年にリリースされた1.2 からは大きく強化され1.4 までを「J2SE」と呼びます。

その後パフォーマンスやライブラリ強化を重ね、より利用しやすい敷居の低い言語にするため、文法の拡張やAPI の追加など大幅に言語機能が拡張されたJava5が2004 年に発表されました。

2009 年には、Sun Microsystems社がOracle社に買収され、Java の開発環境JDK はOracle 社により継続して提供されることになりました。

2014 年に発表されたJava8 では、プログラムをより簡潔に記述できるラムダ式という機能が追加されて、Java5 以来の大幅改良が行われました。




Java には、JDK のバージョンとは別に3 つの版(エディション)があります。

  • Java SE (Java Standard Edition)

バージョン5.0 まではJava 2 Platform, Standard Edition またはJ2SE と呼ばれていました。
個人向けデスクトップなどで使用されるJava 標準プログラムを作成するために必要なJava 言語に関する機能が含まれています。


  • Java EE (Java Enterprise Edition)

サーバ上で動作するプログラムをつくるときに使用するJavaの機能が提供されています。
WebアプリケーションなどをJava で作成するときにはJavaEE の機能を使用します。

JavaSE とJavaEE は、独立して存在しているわけではなく、JavaEEはJavaSEが前提の技術になります。


  • Java ME (Java Micro Edition)

携帯電話、PDA、テレビのようなリソースが制限された組み込み系のデバイスにおけるJavaの小型セットです。


JDK


Java 言語概要

Java には「Write Once, Run Anywhere」(一度書けば、どこでも実行できる)という考え方があります。


他の多くのプログラミング言語では、コードがハードウェアのアーキテクチャやOS に依存しています。

そのため、一度書いたプログラムを異なるプラットフォームで実行するには、修正が必要になります。


その点Java は一度書いたプログラムを修正することなく、さまざまなプラットフォームでそのまま使うことができます。

それではなぜそのようなことがJava で実現できるのでしょうか。


プログラムの記述

プログラムとはコンピュータに対する「命令」のかたまりです。

プログラムを作成することを「プログラムを書く」「プログラムを記述する」と言いますが、実際には紙に鉛筆を使って書くわけではなく、「テキストエディタ」と呼ばれるソフトウェアにプログラム言語を入力していきます。

テキストエディタには、Windowsに付属している「メモ帳」やMacOSに付属している「テキストエディット」、フリーウェアである「サクラエディタ」「VisualStudioCode」「Atom」など様々なものがあります。

テキストエディタは、ご自身の使いやすいテキストエディタを使ってもらって構いません。

またIDE(統合開発環境)などを使用してプログラムを作成することも可能です。

テキストエディタで作成されたプログラムは「ソースファイル」として保存します。

ソースファイルに記述されたプログラムのことを「ソースコード」と言います。

ソース(Source)とは、「元になる」という意味です。


コンパイル

プログラムを書き終えたら、いよいよそのプログラムをコンピュータに実行させますが、そのままでは実行できません。

コンピュータは高級言語で書かれたプログラムを理解することができないため、翻訳機(コンパイラ)を使って「コンパイル」という作業を行ないます。

ただしJava のコンパイラはOS に付属していません。

先に登場したJava の開発キットであるJDK に付属しています。

JDK をインストールすれば、コンパイルすることが可能になります。

コンパイラを使ってマシン語に変換されたプログラムコードを「オブジェクトコード」と言います。

Java ではこのオブジェクトコード(バイトコードとも言う)は、「.class」という拡張子が付けられます。

このファイルを「クラスファイル」と呼びます。


インタプリタ方式

オブジェクトコードを作らずに、ソースコードを1行ずつマシン語に同時通訳しながら実行する形式をインタプリタ方式と呼びます。

一般的に一括変換して処理を行うコンパイル方式より、1 行ずつ変換しながら実行するインタプリタ方式は実行スピードが遅くなります。


Java は「実行時コンパイル方式 + インタプリタ方式」

Java はコンパイル方式とインタプリタ方式の2 つの方式を併用して動作しています。

作成したソースプログラムを、コンパイラで機械語に変換し、プログラムを実行する際にはインタプリタ方式で1 行ずつ実行します。

コンパイラで変換されたバイトコード(クラスファイル)は、JavaVM という仮想のコンピュータが認識することができ、このクラスファイルをJavaVMが実行します。


JDK


JavaVM

JavaVM とは、Java プログラムを動作させるためのソフトウェアです。

JavaVMはJDK に含まれており、Windows用、Mac OS X 用、Linux 用といったOS ごとに用意されています。

「Write Once, Run Anywhere」(一度書けば、どこでも実行できる)とは、このようにソースプログラムをいったんバイトコード(クラスファイル)にコンパイルによって変換し、OS ごとに用意されたJavaVM で実行することができることで実現しているわけです。


オブジェクト指向

Javaの最大の特徴の2 つ目として、「オブジェクト指向」があげられます。

オブジェクト指向とは一言でいうと「プログラムを部品の集まりとしてとらえる」ことです。

プログラムが大規模化すれば必然的に大まかな分割が行われるものですが、オブジェクト指向の場合は最初から部品として分割しやすいような設計を与えています。

結果としてシステムのデバッグや保守、再利用がやりやすくなるというメリットを生んでいます。

そしてこのオブジェクト指向を支えているのが豊富なクラスライブラリです。

豊富なクラスライブラリとは、「プログラム上で使える汎用的な道具を大量に用意してくれている」と考えてください。

例えば、現実世界で家を建てる際に、大工さんが家を作るための部品や道具から作り始めていたのでは、1 軒の家を作成するのに大変な手間がかかってしまいます。

普通、大工さんは家を作るための部品や道具がすでにある状態で仕事をすることで、家の作成だけに時間をかけることができます。

プログラムも同じ事で、目的とするプログラム(家)を作成するのに便利な道具や部品がクラスライブラリとして用意されています。

phoeducation.work


いろいろなプログラム言語

プログラム言語にはJava以外にもいろいろな言語があります。

Java 以外には高級言語であるC 言語、C++言語、VisualBasic、Perl、Rubyや、機械語と1 対1 に対応しているアセンブラ言語があります。Javaは高級言語の1種です。


まとめ

今回は、Javaの歴史や特徴、言語概要について解説しました。

次回は、開発環境やプログラム作成の考え方を解説します。

phoeducation.work


参考図書



独学で挫折しそうになったら、オンラインプログラミングスクール
未来エンジニア養成所Logo



あわせて学習したい

phoeducation.work phoeducation.work