支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Javaランタイムのインストールにつ

はじめに

Javaは1990年代中頃にサン・マイクロシステムズによってリリースされ、その後2022年現在までに、バージョンアップの積み重ねやライブラリ、フレームワークが充実したことによって進化し続け、様々な分野で利用される言語となっています。Javaを幅広く使うことを可能にしているのは、その仕組みに理由があります。今回は、JRE(Java Runtime Environment)を含めたその仕組みについて紹介していきます。

Javaでプログラミングを行うに当たってその仕組みを深く理解しておく必要は少ないと言えますが、サーバーの構築・運用を行うサーバーエンジニアやインフラエンジニアは把握しておくことで効率的に開発でき、不具合等が発生した場合も素早い対処ができる可能性があるため、ぜひ頭に入れておくことをおすすめします。

なお、サン・マイクロシステムズによって開発されたJavaですが、同社は2009年にデータベースサービス等を提供しているオラクル社に買収されたため、2022年現在はオラクル社による管理となっております。また、今回は特に詳細を説明しませんが、名称にJavaと付く言語にもう一つ「JavaScript」というものがあります。JavaとJavaScriptは開発企業の成り立ちによる関連性はあるものの、言語の仕様自体にはこれといって関係はないことを覚えておいてください。

様々な分野で利用されるJava

Javaは、Webシステム、アプリ、デスクトップアプリ開発の他、業務システムの開発、大規模な金融システム、組み込み系システム、スマホアプリ、ゲームにまで利用されているプログラミング言語です。家庭用電化製品のどこかに、Javaのロゴマークのシールが貼られているのを見たことがある人もいるのではないでしょうか。Javaで開発されたゲームで特に有名なのは「Minecraft」です。「Minecraft」は統合版とJava版があり、Java版を利用することでアップデートが速くなったり、自分でカスタマイズ可能な「MOD」等、様々な機能が利用できたりというメリットがあります。スマホアプリに関しては、近年Javaの派生言語である「Kotlin(コトリン)」が利用される傾向にあり、Javaと同じくJVM(仮想マシン)上で動作します。ただし、KotlinはJavaとの互換性を持たないことにご注意ください。

Javaの特徴

Javaは数あるプログラミング言語の中でも、初心者が学ぶ言語としてはやや難しい方に分類されます。その原因としては「オブジェクト指向」という言語の特徴を利用するのに時間がかかることが挙げられます。オブジェクト指向とは、簡単に表すとプログラムのまとまりを一つのオブジェクトとして扱うこととなります。スマホを例にとると、電源を入れて起動させる、画面を表示させる、キーボードを表示させる、インターネットに接続させるといった様々な機能がありますが、これらの機能がそれぞれ独立した一つのオブジェクトとなります。

Javaではこのオブジェクトをクラスとして表します。クラスには通常のクラス、抽象クラスの2種類があり、また、インターフェースといったクラスに満たない実装が必須となるテンプレートのようなものがあり、それらにメソッドやプロパティといった要素を記述して形作っていきます。オブジェクト指向の言語は、機能をオブジェクト(クラス)に分けることで、改修が必要となった際に毎回システム全体の改修を行わず、必要なオブジェクトのみ手をつければ良いというメリットがあります。また、機能ごとに担当を分けて、プログラマーが同時開発を行うことも可能となります。さらに、何度も同じプログラミングをせず再利用可能という点もメリットの一つです。

もう一つの特徴は、Javaを学習した際のメリットにも繋がりますが、同じオブジェクト指向の言語の習得が必要となった際に応用が効き易いということが言えます。初めてJavaを学習する際に時間やコストが比較的多くかかるものの、一度習得してしまえば、同じオブジェクト指向言語であるC#、C++、JavaScript、Ruby、Python等の習得時間やコストを削減することが可能になります。

PHPやJavaScript等と並ぶ人気のプログラミング言語ということもJavaの特徴です。人気があり幅広く利用されているため、Javaが関係する開発、運用・保守の求人が多く、日本語の参考書やインターネット上の情報、またJavaを扱うプログラミング学習サイト、スクールも充実していて、学習や情報収集に困らないということが挙げられます。

最後に挙げる特徴は今回紹介するランタイム等に関係することですが、OS等のプラットフォームに依存せず動作可能という点です。Javaを動かしたいコンピュータごとにJVM等の必要なソフトウェアをインストールする必要はありますが、一度プログラミングしたものはOSごとに修正を加えることなく動作可能というメリットがあります。当初の開発元であるサン・マイクロシステムズは、このことを「Write once, run anywhere(一度書けば、どこでも実行可能)」という言葉で表しています。

また、良く触れられるJavaの特徴として「ガベージコレクション」もその一つに挙げられます。ガベージコレクションとは、不要となったリソースを自動削除してくれる機能です。なお、C言語、C++等はガベージコレクションがないので、自分で削除するためのプログラミングをしなければなりません。この機能のおかげで、Javaは専門的な知識を持っていなくてもリソース削減が容易にでき、結果としてコスト削減に繋げられる言語と言えます。

Javaを習得するためには

前述したようにJavaの参考書はたくさんあるため、書籍を使っての独学が苦手ではない方は、数ある中から自分に見合ったものも見つけた上で学習できます。オンライン学習サイトでもJavaを扱っているところが多いので、動画で勉強したいという方はこちらの利用を検討してみてください。また、独学で勉強し続けるのが難しい、質問できないのが不安という方は、プログラミングスクールの利用を検討しましょう。活用方法によって一概には言えないものの、費用は「書籍>オンライン学習サイト>プログラミングスクール」の順で高くなります。なお、すでにプログラマー・エンジニアとして働いていたり、何か自分で構築したものがあったりすれば明確な目標を持てますが、転職する際のスキルとしてJavaを学習してみようと思った、なんとなくJavaに興味を持った、という場合は継続が難しい可能性もあるため、資格取得を目標に勉強してみるのも良いのではないでしょうか。

Javaの資格は2022年で、Oracle社が認定している「Javaプログラマ(OCJ-P)」と、株式会社サーティファイの認定する「Javaプログラミング能力認定」があります。Oracle社の資格は、元々サン・マイクロシステムズが認定していたもの(SCJ-P)を引き継いでおり、管理元の認定する資格でもあるため、どちらかというと「Javaプログラマ」の方が一般的です。なお、「Javaプログラマ」の試験はBronze・Silver・Goldと3段階に分けられていて、Bronzeが一番易しい内容となります。またSilverとGoldは、国際試験となっています。「Javaプログラミング能力認定」も3〜1級と3段階の試験があり、1級は実技試験となっています。どちらの資格試験も参考書や問題集があるのでご安心ください。

Javaの開発に当たって必要なものは?

では、今回のメインとなるランタイムを含めた、Java開発で必要となるソフトウェア(コンポーネント)について詳しく紹介していきます。これらが連携して初めてJavaプログラムの実行が可能となるので、今後Javaでの開発を行うのであれば概要を抑えておくことをおすすめします。

Java 開発キット (JDK)

「開発キット」という名称からもわかるように、Javaでの開発に必要となるソフトウェアが一式パッケージのように包括しているのがJDKです。そのため、次に紹介するJRE(Javaランタイム環境)やJava 仮想マシン (JVM)や、コンパイラやデバッガがまとめてダウンロード・インストール可能です。過去のもの含めた様々なバージョンが提供されているので、開発するシステムや環境に見合ったものを選択して利用する必要があります。なお、バージョン8までは無償提供されていましたが、9以降は有償でライセンス料が掛かることに注意してください。Javaに関してはこれまでにも無償化、有償化が繰り返されてきた状況があるので、都度、最新情報を確認した上で利用することをおすすめします。

JRE(Javaランタイム環境)

Javaで記述したプログラムを様々なOS上で正しく実行するためのソフトウェアであり、JREがあるおかげでJavaはOSごとにコードを改変することなく実行が可能となります。車でいうエンジンのような役割を果たしているので、システム開発の現場では、Javaに限らず、記述したプログラムを実行するプログラムのことを総じて「ランタイム」と呼ぶことも珍しくありません。しかしJavaの場合、実際にコードの実行を担うのは次に紹介するJVMであり、JREはJavaのコードとライブラリを結合し、それらをJVMで実行するためにコピーの生成をします。なお、JREはJVKの中に含まれていて、JVMやクラスライブラリ、サポートファイルがJREの中に含まれているという関係性があります。

Javaにおけるランタイムの仕組みを紐解いていくと「ClassLoader」「バイトコードベリファイア」「インタプリタ」という3つのコアコンポーネントから構成されています。「ClassLoader」には、Javaプログラム上で必要となるクラスライブラリをJVMに読み込ませる役割があります。Javaにはあらかじめたくさんのクラスライブラリが用意されており、それらによって効率的な開発を可能としているので、Java上の重要なコンポーネントと言えます。

「バイトコードベリファイア」は、コンパイル前のチェックツールです。人が記述したコードをコンピュータはそのまま解釈することができません。コンピュータが理解するためには機械語(バイトコード)に変換する必要があり、これを「コンパイル」と呼びます。コンパイルは「コンパイラ」という機能によって行われますが、バイトコードベリファイアは、記述内容の正確性やフォーマットをあらかじめチェックします。チェックした結果アクセス権に違反していたり、整合性が取れていなかったりという部分があった場合は読み込みを停止します。

「インタプリタ」は、JVMで実行可能なように「JVMインスタンス」やコピーを生成する部分です。以上がコアコンポーネントとなりますが、Javaのランタイムにはこれら以外にもたくさんのソフトウェアが含まれています。2次元グラフィックに関連する「Java 2D」、柔軟でユーザーフレンドリーなGUIを提供する「Swing」、ボタン、ウィンドウ、スクロールバーといったUIオブジェクトの作成が可能なGUIを提供する「Abstract Window Toolkit」、そしてソフトウェアの更新を簡素化する各種デプロイソリューション、バージョニング、管理、モニタリングをサポートする各種Javaパッケージ、統合ライブラリ等です。

Java 仮想マシン (JVM)

Javaで記述されたプログラムを、様々なOSで実行可能なように1行ずつ解釈して実行するために必要なソフトウェアで、JRE内に含まれます。そのため、「OSに依存しないJava」という特徴を最前線で実現しているのがこのJVMと言えます。Javaのアプリケーションを実行する際は、メモリ不足による異常終了が発生しないよう、あらかじめJVMへの適切なメモリ量の割り当てが必要となります。なお、JVMは、JavaだけではなくScalaやKotlinといったプログラミング言語の実行も可能としています。

Javaのランタイムをインストールする

JRE(Javaランタイム環境)のインストールは非常に簡単です。OSに依存しないJavaというだけあって、その手順にOSごとの大きな違いもないので初心者の方にも安心です。ただし、注意点が一点あります。それは、すでにランタイムをインストールしている場合でそのランタイムが古いバージョンであれば、事前にアンインストールする必要があるということです。Java開発は初めてなので入っているはずがないと思われるかもしれませんが、ランタイムは、Javaで開発されたアプリ等を使いたい場合にJavaが必要な旨のメッセージが表示され、その際にインストールしている可能性があります。

最新版の利用をすすめる理由としては、セキュリティの安全性が挙げられます。過去バージョンは、修正されていない脆弱性が残っている可能性があるので、極力最新版へのバージョンアップを行いましょう。もちろんJDKにも同じことが言えますが、開発しているシステムが動作しないバージョンをインストールしてしまっては本末転倒になってしまうので、バージョン管理については開発者、管理者にてあらかじめ慎重に協議する必要があります。バージョンに関しては、Javaの公式サイトの情報と、実際に自分のパソコンにインストールされているバージョンを見比べてみましょう。もしどうしても最新バージョンかがわからないのであれば、一旦アンインストールした上でインストールし直すことをおすすめします。

今回は利用者の多いWindowsにおけるアンインストール方法を簡単に紹介しておきます。Windowsでの方法は2つあり、一つはJavaに備わっているアンインストールツールを利用する方法、もう一つは、Windowsのアンインストール機能で手動で実施する方法です。アンインストールツールを利用する場合は、まずJavaの公式サイト上からダウンロードする必要があります。「java アンインストール ツール」等で検索してみてください。なお、Java公式サイトのURLは「www.java.com」から始まっています。ダウンロード後は画面に従って進めていくだけで1分とかからずアンインストールの実行が可能なので、何か特別な理由がない限りは、こちらの方法がおすすめです。

もし、手動でアンインストールする場合は、スタートメニューから「設定」をクリックし、「アプリ」内「アプリと機能」にてJavaを探し、見つけたら「アンインストール」ボタンをクリックして実行しましょう。こちらはWindows10に沿った手順となるので、OSのバージョンによっては多少メニュー名が異なる場合があることにご注意ください。

アンインストールの説明が長くなりましたが、最後にインストール方法の紹介です。インストールの際も公式ページからダウンロードが必要となるため、「Java ランタイム ダウンロード」等で検索し、「www.java.com」のURLのページからダウンロードを実施しましょう。なお、2022年10月時点では「for Windows」「for Mac」と別々に存在しているので、目的のOSのページが出てこない時はOS名も付加して検索してみましょう。ダウンロード後のインストール作業としては、インストーラーを起動し、画面通りに進めてインストールが完了するのを待つだけと非常に簡単です。特に迷うような選択項目もないのでご安心ください。

まとめ

Javaの開発環境を構築するに当たって、ランタイムは欠かせない要素ということがわかっていただけたことでしょう。ラインタイムは特に細かい設定が必要となることはなく、ダウンロード・インストールするだけで利用可能なので、新たに覚えることはほとんどありません。しかし、ランタイムという言葉はシステム開発におけるプログラムに対して使われる場合もあるので、概念やその仕組みを覚えておくと応用が効きます。またインフラエンジニア、サーバーエンジニアとして働きたい場合も仕組みを知っておくと便利なので、ぜひ今回の記事をきっかけに正しく理解しておきましょう。