94 lines
2.8 KiB
Markdown
94 lines
2.8 KiB
Markdown
# Javaとは
|
||
|
||
Javaは「Write once, run anywhere(1度書けばどこでも動く)」を理念として
|
||
1995年にSun Microsystems(現Oracle)から登場しました。
|
||
C/C++の強力さと安全性・移植性を両立させることを狙った汎用オブジェクト指向言語です。
|
||
|
||
* 開発元: Oracle(元Sun)
|
||
* ランタイム: JVM(Java 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 "JDK(Java Development Kit)\n← 開発者用" as JDK {
|
||
rectangle "JRE(Java Runtime Environment)\n← 実行環境" as JRE {
|
||
rectangle "JVM(Java 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を活用する場合 |