Hello Javaを構築
This commit is contained in:
parent
d9cc49761c
commit
68d4ccbc4c
7
Dockerfile
Normal file
7
Dockerfile
Normal 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
|
||||||
16
README.md
16
README.md
@ -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
12
docker-compose.yaml
Normal 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
94
docs/Java.md
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
# 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を活用する場合
|
||||||
13
docs/Java_knowhow.md
Normal file
13
docs/Java_knowhow.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
## knowJava SE文法(8〜21の主要構文差分を理解)
|
||||||
|
|
||||||
|
## Stream / Lambda / Optional
|
||||||
|
|
||||||
|
## Record / Virtual Thread(Java 21)
|
||||||
|
|
||||||
|
## Spring BootでREST API構築
|
||||||
|
|
||||||
|
## Maven/Gradle構成理解
|
||||||
|
|
||||||
|
## JVMチューニング & GC理解
|
||||||
|
|
||||||
|
## Docker + Javaランタイムの軽量化(jlink, GraalVM)
|
||||||
5
src/Hello.java
Normal file
5
src/Hello.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
public class Hello {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("Hello Java!");
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user