2025-10-11 11:25:16 +09:00

94 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Javaとは
Javaは「Write once, run anywhere1度書けばどこでも動く」を理念として
1995年にSun Microsystems現Oracleから登場しました。
C/C++の強力さと安全性・移植性を両立させることを狙った汎用オブジェクト指向言語です。
* 開発元: Oracle元Sun
* ランタイム: JVMJava Virtual Machine
* GUI: Swing / JavaFX
* Web: Spring Boot / Jakarta EE
## 実行モデル
.javaソースを javacでコンパイル
→.class バイトコード生成
.class を JVM が実行JITコンパイルでマシンコード化
```
[ソースコード] → javac → [バイトコード] → JVM → [実行]
```
これにより、Windows / macOS / Linux どこでも同じ .class を動かせます。
## 基本構文
```java
public class Main {
public static void main(String[] args) {
System.out.println("Hello Java!");
}
}
```
## Javaバージョン進化の要点
2025年時点での主流は Java 17 または 21。
| バージョン | 主な特徴 |
| ---------- | ----------------------------------- |
| Java 8 | Stream API, Lambda, Date/Time |
| Java 11 | LTS, 新HTTP Client |
| Java 17 | LTS, sealed class, record |
| Java 21 | LTS, virtual thread軽量スレッド |
## 主要フレームワーク(現代開発)
| 分野 | フレームワーク | 備考 |
| --------- | ------------------- | -------------------------------- |
| Webアプリ | **Spring Boot** | ほぼデファクト。DI, REST, DB統合 |
| DB ORM | Hibernate / JPA | Springと併用多い |
| テスト | JUnit5 | C#のxUnit/nUnitに近い |
| ビルド | Maven / Gradle | 依存管理・パッケージ構築 |
| クラウド | Micronaut / Quarkus | 軽量Javaランタイム対応 |
## JDKの全体図
```plantuml
@startuml
title JDK / JRE / JVM の入れ子構造
skinparam shadowing false
skinparam defaultFontName Noto Sans
skinparam packageStyle rectangle
skinparam rectangleStyle rounded
rectangle "JDKJava Development Kit\n← 開発者用" as JDK {
rectangle "JREJava Runtime Environment\n← 実行環境" as JRE {
rectangle "JVMJava Virtual Machine\n← バーチャルマシン" as JVM
}
}
@enduml
```
## 実際に動かしてみる
### Linux
```sh
mkdir -p ~/java-play && cd ~/java-play
docker run --rm -it -v "$PWD":/workspace -w /workspace eclipse-temurin:21-jdk bash
```
### Windows
```bat
mkdir java-play; cd java-play
docker run --rm -it -v "${PWD}:/workspace" -w /workspace eclipse-temurin:21-jdk bas
```
### Dockerfileを活用する場合