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 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