資格

Java Bronze資格対策|言語の特徴

palm

こんにちは!Palmです。

このブログは、Java Bronze資格の学習を通じてJavaの基本概念を理解し、試験対策を行うことを目的としています。

コーディングちゃん
コーディングちゃん

このブログに向いている人

  • Javaを初めて学ぶ
  • 基本を復習したい

Java Bronze資格とは

Java Bronze資格(正式名称は「Oracle Certified Java Programmer, Bronze SE」)は、Oracleが提供するJavaプログラミングに関する初級資格です。

この資格は、Javaの基本的な知識とスキルを証明するものであり、これからJavaプログラミングを学び始める人や、基本をしっかり押さえたい人に適しています。

外部リンク
Java Bronze公式サイト
Java Bronze公式サイト

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)が判断します。プログラムから並行処理を自由に制御できるわけではないです。

  • マルチスレッドによる並行処理のサポート: Javaは標準でマルチスレッドプログラミングをサポートしており、開発者は簡単に並行処理を実装できます。
  • 並行処理を部分的に制御する: 開発者はスレッドの優先順位や同期を設定することで、並行処理の制御を行うことができます。

以下は、基本的なマルチスレッドプログラムの例です。

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でも動くプログラムを作れます。

最後まで読んでいただきありがとうございました!

スポンサーリンク
ABOUT ME
Palm
Palm
東京通信大学3年生
私はpalm(ぱるむ)です。お花や自然が大好きです。専門学校でWeb開発を学び、東京通信大学に編入しました。得意分野は、ウェブ開発(フロントエンド、バックエンド)や機械学習(自然言語、データ分析)です。趣味で色々デモ開発をしています。
記事URLをコピーしました