入門者のためのJava用語解説!横文字・専門用語の壁を乗り越えよう

Javaの学習を始めたけど、専門用語が多い・・・
用語の解説を読んでいたら、解説の中に知らない用語が出てくる・・・
意味を調べるだけで時間が過ぎていく・・・

こんにちは。Javaを使い始めて8年、テックライター兼エンジニアの平山です。

プログラミングの学習を始めると、多くの人が引っかかるポイントの一つに専門用語の多さがあるのではないでしょうか?

コンパイルを調べたら、中間言語、仮想マシーンなど新しい謎ワードが出てきて、それを更に調べて・・・
と、用語の検索沼にハマったことがある人は少なくないでしょう。

特にJavaは歴史が長いせいか専門用語が多く、初心者の心を折るケースが多いように感じます。

ただ、専門用語がわからなくて挫折してしまうのはあまりにももったいない。

そこで、この記事ではJavaを学習し始めた人が出会うであろう専門用語を限界まで噛み砕いて説明していきます。噛み砕いているとはいえ、しっかりと背景にあるものは説明しますので、読んでは見たけど結局よくわからなかった、ということも少ないはず。

早速行ってみましょう!

ハードウェア・OS関連用語

まずはJavaを支えるハードウェアやOS周辺の用語をみていきます。

ちなみに、Javaそのものについては以下の記事で詳しく解説していますので、興味のある方は是非ご覧ください。

パス・環境変数

初心者がJavaをインストールする際に一番に引っかかるのが、パス通し・環境変数の設定でしょう。普通にパソコンをいじっているだけでは、なかなか出会うことのない部分ですからね。

これらの作業はなにをやっているのかというと、ターミナル・コマンドプロンプトから、Javaを簡単に実行するための設定をしています。

以下Windowsを例に考えてみましょう。

Windowsでプログラムを実行したい場合、そのプログラムのEXEファイルがあるフォルダまで移動して、EXEファイルをダブルクリックする、という方法がありますね。

C:\Program Files\hogehoge にあるhoge.exeを実行するには、C:\Program Files\hogehoge のフォルダを開いて、hoge.exeをダブルクリックすればいいわけです。

コマンドプロンプトでプログラムを実行する場合も同じで、コマンドプロンプトに以下のコマンドを打ち込めばhoge.exeを実行することができます。

これと同じように、Javaも実行ファイルがおいてある場所までのルート(これをファイルパスといいます)を毎回入力して実行してもいいわけです。

ですが、毎回C:\Program Files~と書くのは非常に面倒ですよね。java、と入力したときはパソコンがC:\Program Files~においてあるjava.exeだな、と解釈してくれるようになると非常に便利でしょう。

それを実現する仕組みが環境変数なんです。

環境変数に実行ファイルの場所を記入することで、次回以降はいちいちファイルパスを書かないでもファイルを実行できるようになるわけです。

なお、この環境変数にパスを書き加える作業をパスを通すといいます。あわせて覚えておくといいですね。ちなみにMacやLinuxのターミナルでも方法は異なりますが、同じ理屈でパスを通す事ができます。

ターミナルやコマンドプロンプトで、javac hogehoge.javaと入れるだけでコンパイルができるのはパスが通っているおかげなわけです。

具体的なパスの通し方はこちらの記事をご覧ください。

Javaインストールで初心者がつまずかないための完全攻略ガイド
更新日 : 2019年6月13日

プラットフォーム非依存

Javaの特徴を説明するときに出てくるのがこちらの用語です。

まずはプラットフォームは何かというところから。プラットフォームはザックリいえばOSのことを指していると思っていただいてOKです。

要するにパソコンでいえば、WindowsやmacOS、Linux、UNIXなど。スマホで言えばAndroid、iOSなど。

プラットフォームが異なると、同じプログラムを動かすことは基本的にできません。

最近はクロスプラットフォームという、OSを問わずに同じアプリがリリースされるケースも多いのものです。ですが、複数OSで動作する、ということはOS間の差異を吸収する仕組みを使っているか、OSごとに別のプログラムを使って同じように動かしているかのどちらかになります。

こうしたプラットフォーム間の差異を吸収し、どんなプラットフォームでも動くことを目指したのがJavaという言語なのです。

プラットフォームに依存しないから、プラットフォーム非依存というわけですね。

コンパイル

PythonやRubyなどの言語経験者には馴染みのないものがコンパイルです。

プログラムは人間が読み書きできるソースコードの形でまず作られます。このソースコードをコンピュータが実行可能な形式にする行為をコンパイルといいます。このコンピュータが実行可能な形式を機械語(バイナリコード)と呼びます。

人間がわかる言語(ソースコード)からコンピュータがわかる言語(機械語)に翻訳すると例えられますね。

先に紹介したPythonやRubyはコード実行時に逐次コードを翻訳していきます。こちらはインタプリタ形式と呼ばれます。

先に機械語に翻訳しておくか、実際必要になったときに翻訳するかの違い、と考えておけばいいでしょう。

Javaの場合、実は機械語ではなく、次で説明する中間言語を生成するための作業です。

中間言語とJava仮想マシン

上で解説したように、コンパイルは一般的にソースコードを機械語に翻訳する作業です。

ですが、機械語に翻訳するためには、プラットフォームに合わせた機械語にしなければなりません。Windowsが実行できるアプリとiOSが実行できるアプリは基本的に異なりますよね。

細かい話をしだすと、CPUの命令セットアーキテクチャやらローダーやABIなど複雑な魔境に踏み込まなくてはいけないのですが、そこらへんはざっくり無視しましょう。

何がいいたいかというと、Windows向けにコンパイルされたものはWindowsでしか実行できないし、iOS向けにコンパイルされたものはiOSでしか動かせない、ということです。

ところがこれは、Javaの理念であるプラットフォーム非依存に反してしまいますね。

では、この問題をどう解決するかというと、プラットフォームによらない、Javaのプログラムを動かすことのできる仮想のマシン(コンピュータ)をプラットフォーム上で動作させて、その仮想マシン上でJavaのプログラムを実行する、という形で解決しています。

この仮想のマシンをJava仮想マシン(Java Virtual Machine/JVM)といい、JVMが実行できるコードを中間言語といいます。

以上の特性だけだったらJavaの内側で完結する話なのですが、最近おもしろいことにJVM上で動くJava以外の言語、というものが作られてきました。具体的にはKotlinとScalaですね。Kotlinについては次の章でも紹介していますので、興味がありましたら是非ご覧ください。

中間言語とJava仮想マシンについて、より深い説明はこちらの記事をどうぞ。

Javaでよく出てくる用語

この章ではJavaに関連してよく見かける用語を解説していきます。

JDK

JDKはJavaの環境を構築する際、ほとんどの場合でインストールされるものです。

ただ、教科書に従ってインストールしたはいいけど、今ひとつこれが何なのかよくわからない・・・というケースも結構見かけます。

JDKはJava Development Kitの略で、直訳するとJava開発キットとなります。つまり、Javaを開発するためのいろいろなキットが含まれているものがJDKなんですね。

JDKと似た感じのものにJREがありますが、こちらはJavaのアプリケーションを実行するためのもの。Javaを開発する側にとってはひとまずあまり関係の無いものです。

JDKとJREの違いについてはこちらの記事が詳しいです。

なお、JDKは様々な事情によって、発行元が大きく分けて2つあります。OracleのJavaJDKとOpenJDKですね。

2018年より前はJDKといえばOracleの頒布しているJavaJDKのことを指すことがほとんどでした。ところが、2019年1月から、Oracle JDKは有償カスタマーのみにすべてのサポートが利用できる形に移行しました。

そのため、企業でJavaを使い続ける場合、Oracleにお金を払って有償のサポートを得るか、無料のJDKを使うかの選択が必要になったのです。

2019年の2月に、個人ユーザーは2020年末まで無償でJava8を使えることが発表されたりと状況はかなり流動的です。

初心者にとっては面倒くさい状況ですが、とりあえず、OracleのJDK(Java8)が20年末まで無償で使えるので、そちらで学習を進めるのが無難と言えるでしょうか。

J2SE/J2EE/Java SE/Java EE

似たような名前なんだけど、微妙に違う。初心者を混乱させるJavaの悪い点の一つがこの表記かもしれません。歴史が長いぶんだけ、様々な派生バージョンが生まれてしまうのは致し方ないことかもしれませんが・・・

さて、用語の解説ですが、この項目のタイトルになっているものは全部Javaのエディションを表す用語です。Window10 にもHome、Proなどがありますが、あのようなものと捉えていただいて構いません。左2つのJ2から始まるのが古いバージョンで、現在は使われていません。右2つのJavaから始まるのが新しいバージョンです。

Javaはバージョン5頃までJava 2という表記をしていました。それを略して、J2〇〇というエディションがあったわけです。

2019年現在、この表記は廃止され、Java 〇〇という表記で統一されました。

SEはスタンダード・エディション(Java Platform, Standard Edition)の略で、名前の通りJavaの基本的な要素をまとめてあるエディションです。とりあえずこれがあればJavaが使える、というイメージですね。

一方のEEはエンタープライズ・エディション(Java Platform, Enterprise Edition)の略で、エンタープライズは企業用という意味合いが込められています。こちらにはサーバサイドの拡張が図られており、SE + Web開発機能というイメージのエディションになっています。

企業内で使われるシステムや商用システムといった、大規模な現場でJavaを扱う際はEEに出会うことも多いでしょう。

SEとEEの違いについてはこちらで詳しく説明していますので、気になる方はご覧ください。

Kotlin

Javaを学習し始めると、ちょこちょこと目にするようになるのがこちらのKotlin(コトリン)

名前がなんとなく可愛らしいですが、これ、Javaの兄弟のようなプログラミング言語なんです。

どこらへんが兄弟かというと、KotlinのコードはJVM上で動かすことができるんです。JVM上で動くため、非常に多くのプラットフォームで使うことができ、Javaよりも先進的な機能を盛り込み、速度もJavaとほとんど変わらないといい事ずくめ。

また、Kotlinを開発している企業はJetBrainsというチェコの会社なのですが、ここは知る人ぞ知るIDE、IntelliJ IDEAやAndroid Studioの開発元でもあります。

このため、Androidの開発とは非常に相性がよく、昨今注目の言語です。Androidでアプリ開発をしたい方は要チェックですね。

Eclipse

Javaの開発といえばEclipse、といっていいほどに業界を席巻している統合開発環境がEclipse(エクリプス)です。

最近は上で紹介したJetBrainsのIntelliJ IDEAも勢いを増していますが、まだまだ今までに築き上げた地位は崩れることがないでしょう。

統合開発環境(Integrated Development Environment/IDE)とはコードを編集するためのエディタに加えて、コードを実行するためのコンパイラや環境、デバッグ機能などをひとまとめにしたツールです。

テキストエディタでJavaソースコードをかいて、ターミナルでコンパイル、実行をした経験のある方ならわかると思いますが、この工程って結構面倒なんです。

学習段階ならまだどうにかなりますが、実際になにか開発しようと思ったら、正直やってられません。

この開発に関わる手間を大幅に軽減してくれるのがIDEであり、JavaのIDEの代表選手がEclipse、というわけです。

Eclipseは採用している企業も多く、開発現場では普通に使えることが要求されます。また、慣れるまでに結構学習コストがかかりますので、本気でJavaを習得するつもりなら、最初からEclipseをつかって学習を進めるのがいいでしょうね。

Eclipseの基本的な使い方についてはこちらの記事をご覧ください。

オブジェクト指向プログラミング

Javaについて調べていると、ほぼ必ず遭遇する表現が、Javaはオブジェクト指向プログラミング言語である、という表現です。

で、オブジェクト指向が気になって調べてみると、継承だ、カプセル化だ、ポリモーフィズムだとよくわからない用語のオンパレードで、最終的になんだかよくわからなかった、というのがよくあるパターンですね。

正直言って、プログラミングをこれから学び始めようという人に、オブジェクト指向を完全に理解してもらうのは不可能といっていいレベルです。オブジェクト指向プログラミングはプログラミングに対する考え方であり、プログラミングに対する実体験が伴わないと、おそらく理解できないからです。

一応初心者むけにオブジェクト指向をわかりやすく解説した記事もあります。

ですが、まずはいろいろとプログラムを組んでみて、ある程度スキルが上がった段階でオブジェクト指向を本格的な本で学んでみることを個人的にはオススメします。本当に初心者の方は気にせず基本的な文法習得とプログラミングの実習をがんばりましょう。オブジェクト指向を使わなければ作れないプログラム、というのは基本的に存在しませんので。

組み込みシステム

組込みシステムはJavaで盛んな分野の一つです。組込みシステムとは古くはガラケーなどの携帯電話、DVD・BDプレイヤー、カーナビなどの車載機器、複合機といったOA機器、産業機械など、さまざまな機械に組み込まれるために作られたシステムです。

Javaを組込みシステムに使うメリットはなんといっても、プラットフォーム非依存からくる移植性の高さでしょう。

例としてカーナビについて考えてみると、カーナビは見た目や操作性といったユーザーインターフェイス(UI)の部分は一度組んでしまえばそうそう変更する必要は無いでしょう。

バージョンごとにコロコロと操作方法が変わった日には、ユーザーから反感を買うことは必至でしょうから。

一方で、内部のハードウェアはバージョンやランクに応じて変えていきたいのがメーカー側の希望のはずです。より安い部品で同じ性能が出せるなら、交換したいはずですよね。

そこで、Javaの移植性の高さが効いてきます。特定のハードに依存しないJavaのソフトウェアは、JVMが動く部品上であれば問題なく移植できるので、ハードウェアの変更に非常に強いわけです。

このような点から、昨今の家電にはJavaが組み込まれていることが多いようです。

商用システム

こちらもJavaの得意分野で、求人的にも一番需要の多いゾーンでしょう。Javaは言語としての堅牢性、ユーザー数の多さ、プラットフォーム非依存などの特性から、特に商用分野での利用が非常に多いです。

たとえば、みずほ銀行がシステム言語にJavaを採用した話は有名です。みずほ銀行に限らず、楽天銀行や三菱UFJ銀行などの銀行系、手堅い業務が必要な官公庁、技術者の多さからとりあえず採用されるようなケースも含めて、非常に多くのシステムでJavaは使われています。

使われている分野が広いため、人は常時足りていないようです。エンジニア不足で求人に将来性を感じている方にとっては非常に魅力的なポイントと言えるでしょう。

基本文法について

Javaの基本文法については既存記事で様々な形で紹介されていますのでこちらを参照ください。

変数

【一目でわかるJava】変数の宣言と使い方
更新日 : 2017年8月9日

【Java】整数型(int,long,byte,short)一覧まとめ!最大値も丸わかり
更新日 : 2019年4月8日

演算子

【Javaの演算子】種類や使い方を網羅しました!
更新日 : 2018年10月4日

条件分岐


【Java入門】switch-case文の使い方総まとめ
更新日 : 2019年4月19日

【Java入門】switch-case文の使い方
更新日 : 2017年6月7日

ループ


【3分でわかるJava】while文とdo-while文の使い方
更新日 : 2018年10月25日

【Java入門】for文、拡張for文、forEachの使い方
更新日 : 2019年6月25日

配列

【プロが解説】Java配列の基礎はこれで完璧!便利な使い方も多数紹介
更新日 : 2019年6月26日

コメント

【Java入門】コメントの種類と書き方(Javadocに関する規約も解説)
更新日 : 2018年10月19日

文字コード

【Java入門】文字コードの確認・変換・指定する方法を解説!
更新日 : 2019年3月28日

まとめ

いかがでしたか?今回はJavaに関連する用語を様々な角度から解説してきました。

Javaはプロユースな側面が結構強く、現場で使っている人向け、わかってる人向けの情報が好まれる傾向があります。そのため、まったくの初心者むけに用語を解説する機会が意外と少なかったりします。

今回の記事がJavaでプログラミングの世界に入門した方の足がかりと慣れば嬉しいです。

お相手はJavaが使えればどんな言語でもいける、が信条の平山でした。

Javaカリキュラム無料公開中!

この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。

Java入門からアプリ開発まで未経験者が知っておくべき基礎を総ざらい
更新日 : 2019年5月22日

最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java2
LINEで送る
Pocket

書いた人

平山 晃

平山 晃

フリーのエンジニア・ライター。
プログラミング、ライティング、マーケティングなど、あらゆる手段を駆使して、
ハッピーなフルリモートワーカーを目指し中。

最近興味がある分野は深層強化学習。
積みゲー、積ん読がどんどん増加しているのがここ数年の悩み。
実は侍エンジニア塾の卒業生だったりします。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説