Hello Javaを構築

This commit is contained in:
ry.yamafuji 2025-10-11 11:25:16 +09:00
parent d9cc49761c
commit 68d4ccbc4c
6 changed files with 146 additions and 1 deletions

7
Dockerfile Normal file
View File

@ -0,0 +1,7 @@
# Dockerfile
FROM eclipse-temurin:21-jdk
WORKDIR /app
COPY src/. .
# 例: 単一ファイルをコンパイルして実行
# docker build -t myjava .
# docker run --rm myjava java Hello

View File

@ -1,3 +1,17 @@
# java-common-code # java-common-code
JAVA Basic Code JAVA Basic Code
## 実行方法
```sh
docker compose up -d
docker compose exec -it app bash
```
## コンパイルして実行する
```sh
javac Hello.java
java Hello
```

12
docker-compose.yaml Normal file
View File

@ -0,0 +1,12 @@
version: "3.9"
services:
app:
image: eclipse-temurin:21-jdk
working_dir: /app
volumes:
- ./src:/app # ← bind mountホストの ./src を /app に)
tty: true
stdin_open: true
command: bash
# # command: bash -lc "javac Hello.java && java Hello"

94
docs/Java.md Normal file
View File

@ -0,0 +1,94 @@
# 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を活用する場合

13
docs/Java_knowhow.md Normal file
View File

@ -0,0 +1,13 @@
## knowJava SE文法8〜21の主要構文差分を理解
## Stream / Lambda / Optional
## Record / Virtual ThreadJava 21
## Spring BootでREST API構築
## Maven/Gradle構成理解
## JVMチューニング & GC理解
## Docker + Javaランタイムの軽量化jlink, GraalVM

5
src/Hello.java Normal file
View File

@ -0,0 +1,5 @@
public class Hello {
public static void main(String[] args) {
System.out.println("Hello Java!");
}
}