Java
Javaとは、Sun Microsystems社が作ったプログラミング言語の名称である。オラクル社に買収されたが、現在も最新版を維持している。最新バージョンは、2020年3月にリリースされたJava 14です。また、サポートされているバージョンは、2018年9月25日にリリースされたロングタームサポート(LTS)の最新バージョンであるJava 11のみで、オラクルは「レガシー」のJava 8 LTSに対して、最後の無料の「パブリックアップデート」をリリースした。次に予定されているLTSバージョンは、2021年9月に予定されているJava 17(LTS)です。
Javaは、まだ開発中の頃はOakと呼ばれていましたが、オブジェクト指向であり、プログラムが仕事をするために一緒に働くオブジェクトをベースにしていることを意味します。JavaのコードはC、C++、C#のように見えますが、これらの言語で書かれたコードは、ほとんどの場合、そのままではJavaでは動作しません。
Javaは、世界で最も人気のあるモバイルオペレーティングシステムであるAndroidを含む多くの異なるオペレーティングシステム上で動作します(Android上ではJavaが使用され続けていますが、そのメーカーであるGoogleでさえもJavaを好まなくなりました。)これにより、Javaはプラットフォームに依存しなくなります。これは、Javaコンパイラがマシンコードではなく、Javaバイトコードにコードを変換することによって行われます。これは、プログラムが実行されると、Java仮想マシンがバイトコードを解釈してマシンコードに変換することを意味します。
ジャワの概念
Javaは5つの主要な目標を達成するために開発されました。これらは以下の通りです。
- Javaは学びやすく、オブジェクト指向であり、分散型である必要があります。
- Javaは安全で丈夫なものでなければなりません。
- Javaは、どのコンピュータアーキテクチャやプラットフォームにも依存すべきではありません。
- Javaがうまく機能するはずです。
- Javaは、それ用に書かれたインタプリタを持っていて、並列性をサポートし、動的型付けを使用できるようにしなければなりません。
ジャワプラットフォーム
Javaプラットフォームとは、Sun Microsystems社のソフトウェア製品群を指す。プラットフォームは、Javaプログラムの開発と実行に使用されます。プラットフォームには実行エンジン(Java仮想マシンと呼ばれる)が含まれており、Javaプログラムが異なるコンピュータシステム上で同じことを行うことを可能にします。
このように、あるプラットフォームでソフトウェアを開発し、他のプラットフォームで実行することができる能力を「クロスプラットフォーム能力」と呼びます。
ジャワプログラム例
Hello World」のJavaプログラムの例。
Javaプログラムの種類
Javaプログラムには様々な種類があり、動作が異なります。
- Java Applet - Javaで書かれた小さなプログラムで、ウェブサイトからダウンロードしてクライアントコンピュータのウェブブラウザ内で実行されます。
- アプリケーション - クライアントコンピュータ上で実行されます。オンラインの場合は、実行する前にダウンロードする必要があります。
- JAR ファイル (Java アーカイブ) - Java ファイルを 1 つのファイルにまとめてパッケージ化するために使用されます (ほぼ正確には .zip ファイルのようなもの)。
- Servlet - ウェブサーバー上で動作し、ウェブページを生成するのに役立ちます。
- Swingアプリケーション - GUI(ウィンドウ、ボタン、メニューなど)を持つアプリケーションを構築するために使用されます。
- EJB - ウェブサーバー上で動作し、大規模で複雑なウェブサイトの開発に使用されます。
メリット
Javaは第一言語として学生にプログラミングの方法を教えるために使われるのが一般的ですが、今でもプロの方にも使われています。
- Javaは各変数を初期化する必要があります。C言語のような古い言語では、変数が初期化されていない状態になることを許容しているものもあります。
- Javaでは、各メソッドが戻り値の型を宣言する必要があります。これはバグを防ぐためでもあります。
- Javaには、クラスやメソッドの大規模なセットが付属しており、「一から」同じくらいのコードを開発しなくても使えるJavaのAPIです。
- C言語とは異なり、Javaのプリミティブ型であるintなどは、ビット数が常に同じサイズであるため、クロスプラットフォームでの互換性を実現するのに役立ちます。
- Javaは以前はCよりも遅いと思われていましたが、近年ではコンピュータが高速化しているため、その点が重要視されなくなってきています。
- Javaには例外処理があり、プログラマーが入出力エラーなどのエラー条件を処理する必要があります。
- あるJavaプラットフォーム上でコンパイルされたコードは、ソースコードやバイトコードを変更することなく、Javaをサポートする他のプラットフォーム上で実行することができます。これは、Windowsコンピュータ用のJavaプログラムを作成して、それをLinuxコンピュータやMacコンピュータで実行させることができることを意味します。
批判
Javaも批判されています。その批判の一部をご紹介します。
- ジェネリックは、既存のコードを実行し続けられるように Java に追加されました。これは型消去を使って行われました。これは、コンパイル時にジェネリック引数の実際の型が削除されることを意味します。これにより、Javaインタプリタが予期しない動作をすることがあります。
- Javaには、Cのような言語が多用している符号なし整数型がありません。これは、C言語とJavaプログラム間で数値データを直接やりとりすることができないことを意味します。暗号もある程度このような型に依存しているため、Javaで暗号を使用するアプリケーションを書くことが難しくなっています。
- IEEEは浮動小数点演算の標準規格であるIEE 754を定義しています。Javaはこの規格の機能の一部しかサポートしていません。
質問と回答
Q:サンマイクロシステムズが作ったプログラミング言語の名前は何ですか?
A:サン・マイクロシステムズ社が作ったプログラミング言語は、Javaと呼ばれています。
Q:現在、Javaをサポートし、最新の状態に保っているのはどこですか?
A:現在、Javaをサポートし、最新の状態に保っているのは、オラクル社です。
Q: Javaの現在の長期サポート(LTS)バージョンは何ですか?
A: 現在のJavaの長期サポート(LTS)バージョンは、バージョン17、11、および8です。
Q:Javaの最新バージョンはいつリリースされましたか?
A:Javaの最新版であるバージョン19は、2022年9月にリリースされました。
Q:Oracle以外にJavaをサポートしている会社はありますか?
A: はい、Eclipse AdoptiumもJavaを少なくともバージョン8は2026年5月まで、バージョン17は2027年9月までサポートしています。
Q: Javaは、どのような種類のコードを使用しますか?
A:Javaはオブジェクト指向のコードを使用します。これは、プログラムが仕事をするために一緒に働くオブジェクトに基づいていることを意味します。C、C++、C#に似ていますが、これらの言語で書かれたコードは、ほとんどの場合、変更しないと動きません。
Q:Javaはどのようにしてプラットフォームに依存しないようにしているのですか?
A:Javaは、コンパイラがコードを機械語ではなくバイトコードと呼ばれる特殊な形式に変換することで、それ自体をプラットフォーム非依存にしています。つまり、プログラムが実行されると、バイトコードは仮想マシンと呼ばれる特別なプログラムによって解釈され、機械語に変換されるので、Androidのような異なるOS上でも実行できるようになります。