Java Bronze資格対策|言語の特徴
こんにちは!Palmです。
このブログは、Java Bronze資格の学習を通じてJavaの基本概念を理解し、試験対策を行うことを目的としています。
このブログに向いている人
- Javaを初めて学ぶ
- 基本を復習したい
Java Bronze資格とは
Java Bronze資格(正式名称は「Oracle Certified Java Programmer, Bronze SE」)は、Oracleが提供するJavaプログラミングに関する初級資格です。
この資格は、Javaの基本的な知識とスキルを証明するものであり、これからJavaプログラミングを学び始める人や、基本をしっかり押さえたい人に適しています。
Javaの基本的な概念
今日はJavaの基本を学習していこうかと思います!
Javaは1995年にSun Microsystemsによって開発され、現在はOracleが管理しています。Javaは、静的言語であり、マルチスレッドのサポートなどの特徴を持っています。
次に、静的言語と動的言語の違いについて学んでいきましょう。
静的言語と動的言語
プログラミング言語は、静的言語と動的言語の2つに分かれています。
これらの違いは、変数や式の型情報の扱い方にあります。
静的言語
静的言語は、「コンパイル時」に変数や式の型が決定されるプログラミング言語です。代表的な静的言語にはJava、C++、C#などがあります。
「静的言語」は変数や式が型情報を持っているんだね。
【特徴】
・型の明示的な宣言: 変数の型を明示的に宣言します。
・コンパイル時の型チェック: 型の整合性がコンパイル時にチェックされます。
Javaでは、以下のように変数の型を明示的に宣言します。
1int number = 10;
2String message = "Hello, World!";
式の型はコンパイル時に決定され、期待されている型と式の結果の型が合わない場合には、コンパイルエラーが発生します。
動的言語
動的言語は、「実行時」に変数や式の型が決定されるプログラミング言語です。代表的な動的言語にはPython、JavaScript、Rubyなどがあります。
「動的言語」は変数や式が型情報を持たず、変数の宣言時にもデータ型を指定しないんだね。
【特徴】
・型の宣言不要: 変数の宣言時にデータ型を指定しません。
・実行時の型チェック: 実行時に型が決定され、型の不整合がある場合は実行時にエラーが発生します。
Pythonでは、以下のように変数の型を宣言せずに使用します。
1number = 10
2message = "Hello, World!"
変数や式が情報を持たない代わりにデータ自身が型情報を持つため、実行時に型チェックされます。そのため、型の不整合があった場合には、実行時にエラーが発生します。
Javaは静的言語
前述の通り、Javaは「静的言語」です。Javaでは、変数や式が型を持ち、コンパイル時には厳密なチェックが行われます。これにより、プログラムの明確性と安全性が高まります。
以下にJavaの特徴をまとめました!!
マルチプロセスとマルチスレッドの違い
ソフトウェア全体の処理性能を向上させる技術を「並行処理」と呼びます。
並行処理の方法のは次の2つがあります。
マルチプロセス
マルチプロセスは、同じアプリケーションを複数のプロセスとして実行する手法です!
メリット
・プログラム異常時に他の処理に影響が出にくい
・プログラムがシンプルでわかりやすい
・各処理の終了時にリソースが確実に解放される
・リソース制限を受けにくい
デメリット
・リソースを多く必要とする
・プロセス生成時の処理に時間がかかる
・プロセス間のデータ連携が煩雑
・UNIX系OS以外では利用が難しい
マルチスレッド
マルチスレッドは、1つのアプリケーション内で複数のスレッドを実行する手法です!
メリット
・リソースを節約できる
・並行する処理数を素早く増やせる
・データ連携が簡単である
・さまざまなプラットフォームで実現しやすい
デメリット
・プログラムが複雑化しやすい
・プログラム異常時に、他の処理に影響が出る
・利用可能なメモリ量やCPU時間などのリソースの制限を受ける
プロセスとは、独立して実行されるプログラムの単位です。各プロセスは独自のメモリ空間を持ち、プロセス間のメモリは共有されません。
スレッドとは、プロセス内で実行される軽量な実行単位です。同じプロセス内の複数のスレッドはメモリ空間を共有します。
Javaの並行処理とJVMの役割
Javaはシングルプロセス・マルチスレッドで並行処理を実現しますが、どのスレッドを実現するかはJVM(Java Virtual Machine)が判断します。プログラムから並行処理を自由に制御できるわけではないです。
以下は、基本的なマルチスレッドプログラムの例です。
1class MyThread extends Thread {
2 public void run() {
3 System.out.println("Thread is running...");
4 }
5}
6
7public class Main {
8 public static void main(String[] args) {
9 MyThread thread = new MyThread();
10 thread.start();
11 }
12}
事前コンパイル方式とインタープリタ方式
プログラミング言語の実行方式には、大きく分けて事前コンパイル方式とインタープリタ方式の二つがあります。
Javaの特徴を表す言葉に「Write Once, Run Anywhere(一度書いたら、どこでも動く)」があります。
この特徴を実現しているのがJVM(Java Virtual Machine)という仮想的なコンピュータです。
事前コンパイル方式とは
事前コンパイル方式は、プログラムのソースコードを実行前に一度コンパイルして機械語に変換する方式です。代表的な言語にはCやC++があります。
事前に機械語に変換されているため、実行時には追加の翻訳が不要で、直接CPUが理解できる命令を実行するよ!実行速度が速い!!
インタープリタ方式とは
インタープリタ方式は、プログラムのソースコードを実行時に一行ずつ読み込み、その場で逐次実行する方式です。代表的な言語にはPython、Ruby、JavaScriptがあります。
実行時に一行ずつコードを解釈するため、エラーの発見と修正が簡単だよ!しかも、エラーメッセージも具体的でわかりやすいことが多い!!
Javaの特異性とJVM
Javaは、「Write Once, Run Anywhere」を実現するために、インタープリタ方式を採用しています。JavaプログラムはJVM(Java Virtual Machine)によって実行され、プラットフォームに依存しません。
Javaがインタープリタ方式を採用したのは以下の理由からです。
- 特定のプラットフォームやOSに依存しない
- ガベージコレクションによってメモリ管理が自動化できる
- セキュリティが向上する
インタープリタ方式の場合、OSがプログラムを直接実行するのではなく、JavaであればJVM、JavaScriptであればブラウザという具合に、コンパイルしながら仲介するアプリケーションが存在します。
まとめ
今回はJava言語の特徴について学習してみました!
- Javaは静的言語: 型を明示的に宣言し、実行前にチェックされます。
- Javaの並行処理: 一つのプログラム内で複数の処理を同時に実行できます。
- Javaの実行方式: JVMを利用して、どのOSでも動くプログラムを作れます。
最後まで読んでいただきありがとうございました!