目次
Javaの概要
Javaは、1995年にSun Microsystems社が「一度書けば、どこでも動く(Write Once, Run Anywhere)」を目標に開発・公開したオブジェクト指向のプログラミング言語です。
現在はOracle社が管理しています。
Javaの特徴
特に5つ挙げるとすれば
オブジェクト指向 | クラスとオブジェクトを中心にプログラムを組み立てます |
プラットフォーム非依存 | JavaプログラムはJVM(Java Virtual Machine)上で動くため、Windows・Mac・LinuxなどOSを問わず動作します |
豊富な標準ライブラリ | ネットワーク、ファイル操作、GUI、データベースなど多くの機能が標準で利用可能です |
安定性・保守性 | 型安全・例外処理・ガーベジコレクションによるメモリ管理等の機能があります |
セキュリティ重視 | JVM上で動くため直接OSを操作しにくく、安全性が高いです |
どこで使われているか
・Webアプリケーション(例:企業向け業務システム、ECサイト)
・Androidアプリ
・サーバーサイド開発(Spring Frameworkなど)
・組み込みシステム
・金融・業務システム
・ゲームのMinecraftでも使用されています。
Javaの仕様は誰が決定するのか
Java Community Process(JCP)で仕様を決定します。
メンバーは、Oracle社だけでなく、IBMやGoogleも入っています。
以下は、Java Community Process(JCP)とメンバーのリンクです。
https://www.jcp.org/en/home/index
https://www.jcp.org/en/participation/members
Javaのソフトを動かす/作るには?
Javaのソフトを動かすには?
Javaの実行環境であるJRE(Java Runtime Environment)が必要です。
JREは、以下のサイトで無料で入手できます。※Java 8まで
https://www.java.com/ja/
Java 11以降はJDKにJREが含まれるため、JDKをインストールするのが一般的です。
Javaのソフトを開発するには?
JDK(Java Development Kit)が必要です。
JDKには、JRE+Javaプログラムを開発するためのライブラリが入っています。
JDKには種類があります。
JDK | 特徴 | 無償利用 | 備考 |
---|---|---|---|
Oracle JDK | Oracle社公式。商用サポートあり。 | 商用は有償(Oracle OpenJDKであれば無償) | Java 11以降、有償ライセンス変更で話題に |
OpenJDK | オープンソース版Java(GPLライセンス) | 無償 | 各ベンダーがビルド版を配布 |
Eclipse Temurin(Adoptium) | Eclipse財団提供の安定ビルド | 無償 | 以前のAdoptOpenJDK |
Amazon Corretto | AWS提供の長期サポート版 | 無償 | 商用利用可、長期LTS |
Red Hat OpenJDK | Red Hat配布版 | 無償(RHEL契約者向けはサポート付き) | 主にLinux向け |
Zulu(Azul Systems) | 長期LTSや特殊アーキテクチャ対応あり | 無償/有償 | IoT向けなど幅広い |
Liberica JDK(BellSoft) | JavaFX同梱版もあり | 無償/有償 | ARM対応も強い |
エディション(用途)で見た場合
エディション | 用途 | 備考 |
---|---|---|
Java SE(Standard Edition) | 一般的なデスクトップ・サーバー開発 | 最も利用されている |
Java EE / Jakarta EE(Enterprise Edition) | 大規模業務システム・Webアプリ | アプリサーバ(Tomcat, WildFlyなど)で利用 |
Java ME(Micro Edition) | 組み込み機器・モバイル端末 | 現在はあまり主流ではない |
Javaの長期サポート
JDK(Java)のバージョンには、LTSと書いてあるものもあります。
LTSとは、Long Term Supportの略で長期サポートという意味です。
長期サポートでない場合は、non-LTS版となります。
Oracle JDK 11は、LTS版です。
Javaの開発で使用されるツール
統合開発環境(IDE)
Java開発ではIDE(Integrated Development Environment)を使うことが多く、コード補完・デバッグ・ビルド・テストなどを一括管理できます。
IDE | 特徴 | 利用シーン |
---|---|---|
IntelliJ IDEA | 高機能。Spring開発に強い。有償版と無償版あり | 企業・プロ開発 |
Eclipse | 無償・オープンソース。プラグインが豊富 | 大規模システム、教育現場 |
NetBeans | Oracle公式。Java EE対応。設定が簡単 | 中小規模開発 |
VS Code + Java拡張 | 軽量エディタにJava開発機能を追加 | 学習・軽量開発 |
ビルド & 依存管理ツール
ツール | 特徴 |
---|---|
Apache Maven | XML(pom.xml)で構成管理。歴史が長く標準的 |
Gradle | GroovyやKotlin DSLで記述。Mavenより柔軟で高速 |
Apache Ant | 初期のビルドツール。現在はMavenやGradleに置き換えられがち |
テストフレームワーク
ツール | 特徴 |
---|---|
JUnit | 単体テストの定番 |
TestNG | 並列実行や高度なテスト構成が可能 |
Mockito | モックオブジェクト生成 |
Javaの動作の仕組み
プログラムを実行するまでの流れ
1.Javaのコードは、拡張子が.javaのファイルに記述されます。
2.コンパイラがJavaのコードをコンパイルすると、バイトコードになり、拡張子が.classのファイルが生成されます。バイトコードは中間コードとも呼ばれます。
3.ソフトウェアとして使用するときに、JVM(Java仮想マシン)がバイトコードをCPUが実行するマシン語(ネイティブコード)に変換してプログラムを実行します。
4.WindowsやLinuxなどのOS毎の違いを吸収してくれるのでプログラムを作成する側がOSの違いを意識しなくてよくなります。
Javaの機能:ガベージコレクション(GC)とは
ガベージコレクションは、使用されなくなったメモリ領域のデータを自動で削除し再び使用できるようにする機能です。
ガベージ(Garbage)はゴミ箱という意味です。
プログラマーはメモリ領域を解放する処理の記述をしなくて良くなります。
CやC++では、プログラマーがメモリ領域を解放する処理の記述が必要です。
メモリ領域が解放されずメモリが大量に使用されててしまう現象はメモリーリーク(memory leak)と呼ばれます。
Javaのサンプルコード
実行すると「hello world」と表示されます。
package test1;
public class Test1 {
public static void main(String[] args) {
System.out.println("Hello World"); // Hello Worldと出力される
}
}
6行目で文字列のHello Worldを出力します。
関連の記事