Java言語とは

Java基礎 1

1.本章での学習項目

本章では、プログラミング言語の概念、Java言語の歴史と特徴を学習します。

2.本章の講義

本章で学習する内容を動画としてまとめたものです。最初に一通り見終わった後で、学習に入るようにしてください。

講義:Javaの概要

3.プログラミング言語とは

プログラミング言語の1つであるJavaをこれから学習することになるわけですが、そもそもプログラミング言語とは何でしょうか。
初めてプログラミングに挑戦する方はもちろん、すでにプログラミング経験がある方も、Javaを学習する前にまずプログラミング言語について少し認識を合わせておきたいと思います。

プログラミング言語とは、「コンピュータや機械を動かすための命令(コマンドといいます)群でコンピュータで何かを実行(処理)するための言語」です。

当たり前の話ですが、プログラミング言語は、通常、私たち人間がコミュニケーションのために使っている言語(日本語や英語など)とは異なります。
人間同士であれば、少しくらいの言い間違えや、曖昧な表現だとしても、相手が推測してくれ、理解をしてくれたり(誤解が起きることも多々ありますが・・)、会話の中で少しずつ理解し合うことができます。
しかし、それは、人間が大変高度な頭脳を持っているからできることであり、相手がコンピュータであるプログラミング言語の場合は、そうはいきません。
相手がコンピュータの場合、コマンドを少し間違えただけでも、何も動かなかったり、全く異なる動きをします。
魔法の呪文のように、何か少しでも言葉を言い間違えると何も起きないのと同じような感覚です。


communication

プログラミング言語として、既に定義されたコマンドを使用することで、初めてコンピュータが思いどおりに動くのです。
プログラミング言語を学習するにあたっては、その決まっている文法をまず学習することが必要です。これは、初めてプログラミング言語を学習するに当たっての事前の心構えと思ってください。
ちなみにJava言語は、大文字と小文字、全角と半角も厳しくチェックしますので、プログラムを書くときには、十分気をつけましょう。

4.Java言語の歴史

それでは、これからJava言語の学習を始めましょう。まずは、Java言語の歴史を学習します。
Java言語の歴史を知ることで、Java言語が、どのような目的で開発され、現在、どのように利用されているプログラミング言語であるかを知っておきましょう。

Javaは、1995年、Sun Microsystems社(サンマイクロシステムズ社)が提唱したプログラミング言語です。
開発の発端は、Oak(オーク)という言語です。1990年12月にSun Microsystems社が立ち上げた開発プロジェクトチームの James Gosling(ジェームス・ゴスリン)によって、Oakが開発されました。
Oakは、家電製品に組み込むシステムのための言語として開発されました。その後、インターネットが普及し始めたことから、ネットワーク上で利用されることを想定し、異なるデバイス(機械)上でプログラムが動くことが目標となり、開発が進みました。1995年、OakがJavaに改められ、正式に公開されました。

Javaは、ネットワークで多くのコンピュータが接続して利用するプログラムを作成することに向いていたことと、インターネットが普及し始めたタイミングが合ったことですぐに注目を浴び、Javaプログラミングが普及していきました。
Javaが出た当時は、まだWebブラウザ上での動きのない静的なコンテンツが普通で、インタラクティブ(相互のやりとり)が可能な動的なコンテンツができることは画期的でした。その後、Javaは様々な分野で利用されるようになりました。
2010年、Oracle社がSun Microsystems社を買収し、以降Javaの権利はすべてOracle社のものとなっています。

Javaの近年の利用について、次に説明します。

4.1.Webシステム

例えば、ショッピングサイトや検索サイト、ネット銀行、企業の基幹業務を支える業務系システムなど、Javaは幅広くWebシステムで利用されています。
以前は、実行の速度が遅かったり、動作が環境によって異なったり、色々と問題がありましたが、近年は、技術が向上し、そういった技術的な問題は少なくなってきています。

現在、Webシステムでは、サーバー側で動くJavaプログラムが多く使われています。Javaサーブレットや、JSP(ジェイ・エス・ピー)などの技術を使って、様々な処理をサーバー側で行っています。

4.2.組み込みシステム

組み込みシステムとは、家電製品や、携帯電話、スマートフォンなど、パソコンではない別の機器に搭載するシステムのことです。
現在では、スマートフォンに搭載するAndroidアプリが有名でしょう。

5.Java言語の特徴

それでは、Java言語の主な特徴を説明します。

5.1.マルチプラットフォーム対応

Javaの大きな特徴として、マルチプラットフォーム対応という点があります。マルチプラットフォームとは、プラットフォームに依存していないという意味です。
プラットフォームとは、ハードウェア(コンピュータなどの機器)やオペレーティングシステム(WindowsやMac、LinuxなどのOS)のことを言います。
通常、アプリケーションソフトは、プラットフォームに依存していて、全く同じ機能を持ったソフトでも、プラットフォームが違うと別のプログラムでソフトを作成しなければいけません。


platform

Java言語は、Java言語の歴史でも説明したとおり、家電製品に組み込むシステムの開発を目的に考えられています。
家電製品は、コンピュータ以上に様々なプラットフォームになりますので、マルチプラットフォーム対応である必要がありました。
Javaは、従来のプログラミング言語よりも移植性(他のプラットフォームでも応用できる)が高いということが大きな特徴であり、また魅力でもあります。


multi platform

さて、このようなJava言語の大きな特徴であるマルチプラットフォーム対応は、どのように実現されているのでしょうか。
Javaプログラムを実行するには、Java仮想マシン(JVM、またはJava Virtual Machineとも言います)で実行します。
このJava仮想マシンは、オペレーティングシステムとアプリケーションソフトの間で、プラットフォームの違いを吸収してくれています。
Java仮想マシンがインストールされている環境であれば、どのプラットフォームでも同じJavaプログラムを動作させることができます。


jvm1

Java仮想マシンには、「エミュレータ」という技術が使われています。
「エミュレータ」とは、あるコンピュータなどの機器用に作成されたソフトを別のコンピュータや機器で動かすことができるようにする技術です。
ゲームソフトなどを、専用のゲームマシンではなく、別のコンピュータや機器で動かしたりできるような違法なものも多くあります。合法的なもの、違法なもの合わせて、世の中には、多くのエミュレータが存在します。
Javaは、Java仮想マシンという「エミュレータ」を使って、Javaプログラムを色々なプラットフォームで動かします。

Write Once, Run Anywhere「一度書いたら、どこでも動く」

Java言語のキャッチコピーです。Javaプログラムは、「どこでも動く」が大きなウリとなっています。

5.2.Javaの実行形式

Javaは、プログラムの実行の仕方に特徴があります。

通常、プログラミング言語は、実行形式として、コンパイル形式とインタープリタ形式に分類されます。
コンパイルとは、プログラミング言語をコンピュータが実行できるマシン語に変換することです。
コンパイル形式のプログラミング言語は、マシン語に変換し、そのマシン語のソースをコンピュータが実行します。
インタープリタ形式のプログラミング言語は、プログラムを逐一コンパイルしながら実行します。

コンパイル形式のプログラミング言語は、コンパイルされたマシン語が、マシン(プラットフォーム)に依存するので、移植性がありません。
インタープリタ形式のプログラミング言語は、都度コンパイルしながら実行するので、実行環境(プラットフォーム)に依存はしませんが、処理速度が遅くなります。

Javaは、インタープリタ形式の言語に分類されますが、インタープリタ形式で実行する前にコンパイルを行い、「バイトコード」と言われる中間言語に変換し、そのバイトコードをJava仮想マシンでインタープリタ形式で実行します。
そのため、Javaはコンパイル形式とインタープリタ形式の中間とも言えます。
バイトコードは、マシン語に近い状態のコードなため、インタープリタ形式でも処理を軽く、速くできるようになりました。

コンパイル形式のプログラミング言語に比べると、実行時にバイトコードをマシン語に変換する必要があるので、処理が速くない傾向がありますが、最近では実行速度を向上するための機能が充実してきているため、一概にコンパイル形式のプログラミング言語より遅いということはなくなりました。

また、それぞれのコンピュータなどの機器に合わせたマシン語に完全にコンパイルしていないため、マシン(プラットフォーム)に依存せず、Java仮想マシンがある環境であれば、「どこでも動く」ことができます。


jvm2

5.3.オブジェクト指向プログラミング言語

Javaは、オブジェクト指向プログラミング言語です。

オブジェクト指向とは、システムの設計に関する考え方、プログラミング手法を表現したものです。
古くからあるプログラミング言語は、実行する順番に処理を記述していき、コンピュータは入力されたデータをそのプログラムで処理する形式でした。

オブジェクト指向では、処理を記述するというより、操作(処理)する対象としてのモノ(オブジェクト)にメッセージを送って操作(処理)するという発想に基づいています。
この操作(処理)対象としてのモノ(オブジェクト)の集まりが、お互いにメッセージを送りあって、全体の処理が行われるという考え方です。プログラムの塊であるオブジェクトを連携し、一つのシステムを動作させる仕組みです。


object oriented

オブジェクト指向を利用した開発は、「小さい部品を作り、組み合わせる」というような開発になりますので、作成した部品を再利用したり、システムの修正が必要となったときに、該当箇所の部品のみを修正したりと、開発効率やメンテナンス性の向上を図ることができます。


object oriented sairiyo


object oriented revise

オブジェクトは、データとそのデータを処理する機能から構成されています。Javaでは、オブジェクトはクラスと呼ばれる型から作られます。
クラスは、オブジェクトの雛形になります。クラスについては、「クラス」の章で詳しく説明します。

6.Java技術の種類

最後に、これから学習するJava言語をベースとするJavaプログラムの種類をいくつか簡単に説明します。

  1. Javaアプリケーション

    通常のJavaプログラムで、Java仮想マシンで実行します。全てのJava技術の基本となります。
  2. JDBC

    Javaによるデータベース連携の仕組みです。データベース関連の処理を行う場合に使用されます。
  3. サーブレット

    サーバー側で実行するJavaアプリケーションです。
    サーバー側で実行した結果をHTMLでクライアントに返します。Webシステムを構築する場合に必要な技術となります。
  4. JSP

    サーブレットのHTML(画面表示)部分に特化したプログラムです。
    JSPはJavaServerPagesの略称です。
    サーブレットと同様にWebシステムを構築する場合に必要な技術となります。
  5. Kotlin言語

    JetBrains社が開発した、Java仮想マシン上で動作するプログラミング言語です。
    Androidアプリ開発などにおいて利用されています。

Java言語についての説明は、以上です。

執筆・編集

Tech Fun Magazine編集部
Tech Funの現役のITエンジニアが、システム開発の基礎知識や実践的なノウハウを執筆・編集しています。
Tech Fun ITスクールの研修講師として活躍するメンバーもおり、プログラミング初心者がつまづきやすいポイントを丁寧に解説しています。

ARTICLE
記事一覧

Java基礎

Java12からJava17までに導入された機能の紹介

システム開発の基本

プログラミングとテストの要点

データベース環境構築

データベース環境構築(Windows版) テストデータ作成

データベース環境構築

データベース環境構築(Windows版) MariaDBの設定

データベース環境構築

データベース環境構築(Mac版) テストデータ作成

データベース環境構築

データベース環境構築(Mac版) MariaDBの設定

Java基礎

はじめてのJava

Java基礎

Javaのデバッグ方法

Java基礎

ポリモフィズム

記事一覧を見る