Javaとは何? 特徴や使うメリットを初心者向けに簡単に解説
2020年11月6日

 

Javaとは

JavaはC言語やC++を元として開発されたプログラミング言語で、サン・マイクロシステムズのジェームズ・ゴスリンさんによって開発されました。

構文は元となったC言語、C++に似ていますが、どちらよりも低レベルの機能は少なくなっています。

1995年に発表され、現在の最新バージョンは2020年9月にリリースされたJava 15と、2018年9月25日にリリースされ現在サポートされている長期サポート(LTS)版のJava 11です。

 

アプリケーション開発者が一度書いたらどこでも実行できるようにすることを目的とした言語で、“Write once, run anywhere(一度プログラムを書いてしまえば、どのコンピューターでも動く)”というスローガンが掲げられています。

GitHubによると、2019年の時点ではクライアント/サーバー型のWEBアプリケーションで使用されているもっとも人気のあるプログラミング言語の1つであり、900万人の開発者がいるとのことです。

また、Googleが開発に用いている“Google三大言語(Java、C++、Python)”の1つとしても有名です。

 

Javaの特徴

Javaの一番の特徴は、“Write once, run anywhere”というスローガンのとおり、あらゆるコンピューターで動作するという点で、これはJavaが“JVM(Java Virtual Machine:Java仮想マシン)”で動いていることが理由です。

JVMは名前の通りJavaのために擬似的に作り出されたマシンのことで、Javaはこのマシン上で動作します。

そのため、Javaの実行環境が導入されていれば特定のハードウェアやオペレーティングシステムの機能に依存せず、あらゆるコンピューター環境上で共通した動作を行うことができるのです。

 

Javaの人気

Javaは非常に人気があるプログラミング言語の1つで、ソフトウェア開発のプラットフォーム“GitHub”が発表した年次レポート“Octoverse(オクトバース)”の人気プログラミング言語ランキング(2019年版)では3位を獲得しています。

また、ソフトウェア品質の評価と追跡を手掛けるTIOBE Softwareが発表した2020年5月の“TIOBEプログラミングコミュニティーインデックス”においても2位を獲得しています。

 

人気の理由は、前述したあらゆるコンピューターで動作するという特徴や優秀な処理速度、セキュリティコントロール能力といった性能の高さです。

学習難度こそ高いですが、基本的にどのような環境でも使えて、かつ性能も高いため、世界的に人気なプログラミング言語となっています。

 

Javaのメリット・デメリット

 

メリット

Javaを選択するメリットとしては高性能な言語であることが挙げられます。

JVMが入っているパソコンならばほぼ同じコードで動くためプラットフォームに依存することがありません。

また、コンパイラ言語であるため、RubyやPythonといった言語に比べて処理速度が優れています。

オブジェクト指向であるため、モデル化したプログラムの作成やセキュリティコントロールも容易です。

 

デメリット

Javaのデメリットはやはり学習コストの高さです。

言語の仕組みを理解することが難しいという点はもちろん、“デザインパターン”と呼ばれる“プログラミングをする上での定石”などを学習して、汎用的な設計方法を身に付けておく必要もあります。

セキュリティの確保や安定動作といったJavaの利点を生かすには、非常に広い分野の勉強が必要となるでしょう。

 

また、プログラミング以外の作業が大変で、環境によっては動作しないという部分もデメリットです。

Javaの最大の特徴であるJVMですが、JVMが入っていないパソコンでは当然ですがJavaは動きません。

一度環境を整えれば性能の高さを発揮できますが、インフラ準備などのハードルはPHPなどのサーバーサイドプログラムと比べると高くなります。

 

Javaの使用用途

 

WEBアプリケーションおよびサービス

WEB上で動作するアプリケーションやサービスはPHPをはじめとしたWEB系言語で作られていますが、Javaで作成することも可能です。

WEBサイトの場合は、サーバー側で処理を行うバックエンドと呼ばれるプログラムにJavaが採用されることがあり、実例として楽天のWEBサイトのバックエンド部分はJavaが使われています。

その他、TwitterやEVERNOTEなどでもJavaは使用されています。

 

スマホアプリ

Googleが提供するAndroidがJavaで動作していることから、ほとんどのAndroidアプリはJavaで開発されています。

最近ではJava以外の言語でもアプリの開発ができるようになっており、例えばニュースアプリではスマホのネイティブな機能に関連する部分をJava、情報を表示する部分をHTMLで開発するように、別の言語と合わせて開発を行うケースもあります。

 

組み込みシステム

Javaの始まりは次世代(1990年12月の立ち上げ当時)の家電製品に内蔵するマイクロコントローラ向けのプログラミング言語開発だったため、家電製品などの組み込みシステムにももちろん使用可能です。

ブルーレイディスクプレーヤーやカーナビゲーションシステム、洗濯機や冷蔵庫、テレビなど多くの家電製品で採用されています。

セキュリティ面の強さや多くのハードに対応できる可能性から、さまざまな物がインターネットに接続され、情報交換することにより相互に制御する仕組みである“IoT(Internet of Things/物のインターネット)”にも適しています。

 

Javaの記述に関する知識

 

書き方

Javaはオブジェクト指向言語で、クラス(class)を使ってプログラミングを行います。

オブジェクト指向プログラミングでは、プログラムの機能や役割を区別し、それぞれを部品として組み合わせることで1つのプログラムを作ります。

クラスはオブジェクトの設計図で、オブジェクトのプロパティ(オブジェクトが持つデータ)やメソッド(オブジェクトが持つ機能)を記述するオブジェクトのひな形です。

そして、クラスが実体化して動いている、あるいは動かせるようになったものをインスタンスと呼び、インスタンスを生成する操作をインスタンス化と呼びます※。

クラスの記述だけではプログラムの中でオブジェクトを利用することはできないため、インスタンス化が必要となってくるわけです。

 

※インスタンスおよびインスタンス化は、オブジェクトおよびオブジェクト化と呼ばれることもあります。

 

実行手順

Javaでプログラムを実行する際の流れは“プログラム(ソースコード)の記述”、“ソースコードのコンパイル”、“クラスファイル実行”の3つに大別できます。

 

まずはJavaでプログラムを記述し(拡張子は“.java”)、次にソースコードをコンパイルしてJVMが実行できる形式に変換します。

コンパイルが完了すると、同じディレクトリにプログラムと同じ名前のクラスファイル(拡張子は“.class”)が作成されます。

最後にクラスファイルを実行することで、プログラムが実行されます。

 

基本構文

前述した通り、Javaプログラムの構文はC言語やC++に似ており、いくつかの構文ルールの違いを除くと、C言語とほぼ同様のシンプルな手続き型プログラミングのスタイルでプログラミング可能です。

 

main関数

Javaプログラムは、main関数から開始されるため、必ず必要になる関数です。

“Hello world!”の文字列を出力するサンプルプログラムを作成する場合は、サンプル2のような形になります。

 

====================サンプル1====================

public class Main {

    public static void main(String[] args) {

        (実行したい処理)

    }

}

================================================

 

====================サンプル2====================

public class Main {

    public static void main(String[] args) {

        System.out.println("Hello, World!");

    }

}

================================================

 

if

if文は、“もし値がXならば、Yの処理を行う”というような条件実行の構文です。

条件式と値の大小関係や等しいかどうかから処理を変える場合に使われます。

 

====================サンプル====================

if (条件) {

              (条件を満たす場合に行われる処理)

}

================================================

 

for

for文は、条件が真の間だけ与えられた文の実行を繰り返す処理(ループ処理)を行いたい時に使う構文です。

 

====================サンプル====================

for( 初期化式; 条件式; 変化式 ){

  (条件が真の時に繰り返される処理)

}

================================================

 

上記のサンプルにおける“初期化式”は、for文の最初に一度だけ実行されるもので、for文で使用する変数の宣言と初期化に使用されます。

“条件式”はループを開始するたびに評価される式で、条件が真の時に“{”から“}”の中にあるブロックの処理が行われます。

なので、条件式を設定することで、ループ処理を行う回数も指定できます。

最後の“変化式”は、ループ処理が終わるたびに実行される式で、条件式で使用する変数の値を変化させるために使用されます。

例として、初期化式を“int i = 1;”、条件式を“i < 10;”、変化式を“i++”に設定すると、iの値が10になる(処理が中断される)まで、同じ処理が繰り返し実行されます。

 

Javaを効率よく学習する方法

先ほども少し触れましたが、JavaはC言語に並んで学習から習得までに時間がかかるプログラミング言語として知られています。

理由としては、単純にプログラミング言語の中でも学習難易度が高いだけでなく、実際に活用していくためにハードウェアやネットワークの知識も理解しなければならないという点が挙げられます。

また、言語の歴史が長いことから多数の書籍が出版されていますが、それがかえって自身のレベルや現行バージョンに適したものを見つけることを困難にしているという面もあります。

本項では、書籍以外の方法でJavaについて効率よく学習する方法を紹介します。

 

動画で学ぶ

資料に加えて音声による解説も加わるため、書籍を自分で読むよりもわかりやすく、雰囲気を掴み安い方法です。

Javaやプログラミング自体が初心者という人にオススメな方法といえます(とはいえ、初めて学ぶプログラミング言語がJavaということ自体あまりオススメできませんが……)。

 

ドットインストール

短い動画で学べる学習サイトで、レッスンは“はじめてのJava”(全10回)、“Java 8入門”(全43回)、“【旧版】Java入門”(全23回)の3つが公開されています。

“はじめてのJava”は、簡単なゲームを作りながら基礎文法の雰囲気を学ぶレッスンで、ブラウザ上に実行環境も用意されています。

また、他2つに比べてレッスン数が少ないものの、公開日が2019年9月5日と比較的新しいのもうれしいポイントです。

 

paizaラーニング

ドットインストールと同じく動画を使用して学ぶ学習サイトで、基礎から学べる“Java入門編”やServlet/JSPを使ったWEB開発について学べる“WEBアプリ開発入門 Servlet/JSP編”が公開されています。

こちらのレッスンは最近開設されたというわけでないですが、環境構築が不要な点はドットインストールと同じで、ブラウザ上で動画講座を見ながら演習問題を解いて学習を進めていくことができます。

また、paizaにはファンタジー系RPGのような世界観でプログラミング問題を解きながら物語を進めていくゲーム『コードクロニクル』があるので、ゲーム感覚で学べるというのも大きなポイントです。

 

マンガで学ぶ

動画のペースに追いつけないという人や書籍では集中が続かないという場合に選択肢に入る方法です。

書籍ほど堅苦しくなく、動画よりも自分のペースを維持しやすい勉強方法となります。

 

マンガPG

クロノス・クラウン合同会社の代表である柳井政和さんのマンガサイトで、Javaについてじっくりと時間を掛けてマンガで解説していく“マンガで分かるJava入門講座”を読むことができます。

Javaの基礎から順に解説が行われており、一通りのマンガを読めばJavaのオブジェクト指向の概念について学ぶことができます。

 

第2版完成が2015年8月18日、最終更新が2018年3月1日となっており、資料として少し古くなりつつありますので、タイトルの通り入門講座として一読し、その後は他の学習方法にスイッチしていく方法が確実です。

 

スライドで学ぶ

紙の本より直感的で自分のペースを維持できるため、短時間で多くの知識を学び、全体像を把握したいという人にオススメです。

復習しやすいことも強みですが、今回紹介する中ではより書籍での勉強に近い方法なので、ある程度の知識を備えてから着手することをオススメします。

 

Progate

イラスト中心のスライドで学ぶ学習サイトで、Javaのレッスンは5つの学習コースと知識を定着させるための道場コース2つで構成されています。

アプリも配信されているので、気軽に始めてみたいという人はこちらをダウンロードしてみるのもよいでしょう。

 

Javaに関係する資格

 

Oracle認定Javaプログラマ

“Oracle認定Javaプログラマ”は、Oracle社(旧Sun MicroSystems)によるベンダー資格(民間資格)民間資格制度で、試験区分はBronze(ブロンズ)、Silver(シルバー)、Gold(ゴールド)に分かれています。

 

Bronze区分はJava初学者向けの難易度となっていますが、日本国内でのみ有効で履歴書上の評価対象として扱うのは難しいレベルです。

Silver区分以降から海外でも有効となる他、Gold区分の受験にはSilver区分を合格している必要があるため、実務経験のあるエンジニアはSilver区分から受験するとよいでしょう。

 

資格に有効期限はありませんが、Javaのバージョンに合わせて試験もバージョンアップが行われており、基本的に最新バージョンの受験が人気です。

なお、Gold以上で古いバージョンの試験に合格している場合は、出題数が本試験より若干少ない移行試験の受験資格を得られます。

 

Javaプログラミング能力認定試験

サーティファイが運営する日本国内の民間資格で、Javaに関する基本知識とオブジェクト指向にもとづくアプレットやアプリケーションプログラムを作成できる能力を認定します。

区分は“Oracle認定Javaプログラマ”と同じく3つで、基本知識などを問う入門者向けの3級、小規模なプログラム(アプリケーション、アプレット)を適切に書けるレベルの2級、変更仕様に従ってプログラムの保守ができる能力などが必要となる1級に分かれています。

1級は提示された変更・追加点をプログラムに反映した上で変更仕様書を作成する実技試験が実施されますが、CUIベースでGUIを使用しないため、Java SE8とテキストエディタTeraPadで十分に試験の対応が可能な内容となっています。

 

“Oracle認定Javaプログラマ”と比較する場合、資格範囲が広くバージョンごとの試験があるなど、資格の信頼性では少し劣っているといえます。

しかし、“Javaプログラミング能力認定試験”は受験料が安くなっており、“Java SE Bronze”の受験料14,960円(税込)に対して、こちらは3級が5,200円(税込)、2級が6,400円(税込)、1級が7,800円(税込)で受験できます。

海外で活動する予定がなければ資格範囲に劣る部分も無視できるため、そこまでJavaにこだわるつもりがない人や資金的に制限がある人はこちらを選択して問題ないでしょう。

 

まとめ

Javaは学習コストの非常に高い言語ですし、プログラミング言語の仕事をしていく上で必ず覚えなければならないというわけではありません。

しかし、あらゆるコンピューター上で共通した動作が可能であるなど、得意な場面では非常に活躍する言語となっています。

まずは自分のやりたいことやキャリアプランを確認してJavaが必要になるかを見極め、そのうえで学習を進められそうか確かめながら段階を踏んで学んでいくことをオススメします。

< 前へ

次へ >