๐ฉ๐ป๐ป JVM - JRE - JDK
JVM
: Java Virtual Machine
Java ByteCode๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฐ๊พธ์ด์ฃผ๋ ์ญํ ์ ํจ.
JRE
: Java Runtime Environment
JRE์๋ JVM๊ณผ JVM์ด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ํฌํจ
JDK
: Java Development Kit
Java ์ฝ๋๋ฅผ Java Bytecode๋ก ๋ง๋๋ ๊ณผ์ (์ปดํ์ผ) ๋ค์ ํด์ฃผ๋ ๋๊ตฌ๋ฅผ ํฌํจํ ๊ฒ
Java ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ
**Java Bytecode๋ฅผ ๋ง๋๋๋ฐ ๊ผญ Java๋ฅผ ์ธ ํ์๋ ์๋ค. (ex. Kotlin)
Mac - JDK ํฐ๋ฏธ๋๋ก ๋ฒ์ ๋ณ๊ฒฝํ๊ธฐ
๐ณ Docker
Docker
:์ปจํ ์ด๋ ๊ฐ๋ ์ ํ์ฉํ ๊ฐ์ํ ๊ธฐ์ ์ ์ผ์ข
OS ์์ ์ปจํ ์ด๋๋ฅผ ์ฌ๋ ค ์ดํ๋ฆฌ์ผ์ด์ ์ ํ์ฉ
๋ด๊ฐ ๋ง๋ฌ๋ ์๋ฌ
Docker ์ค์น ํ๋ฉด์ ๋ง๋ฌ๋ ์๋ฌ
:Docker๋ฅผ ๋ถ๋ช ํ ๊น๊ณ , ์คํ๊น์ง ๋๋๋ฐ ํฐ๋ฏธ๋์์ Docker ๋ช ๋ น์ด๋ฅผ ๋ชป ์์๋ค์๋ค.
zsh: command not found: docker
ํด๊ฒฐ ๋ฐฉ์
vi ~/.zshrc
// iํค๋ฅผ ๋๋ฅด๋ฉด ํธ์ง ๋ชจ๋๊ฐ ๋์ด ํธ์ง์ด ์งํ๋๋ค. ํธ์ง์ ๋ง์น ํ esc๋๋ฅด๊ณ :wq!์ ์ ๋ ฅํด์ฃผ๋ฉด ํธ์ ๊ธฐ๋ฅผ ๋น ์ ธ๋์ฌ ์ ์๋ค.
alias docker="/Applications/Docker.app/Contents/Resources/bin/docker"
source ~/.zshrc
๐ Spring Boot
Spring Boot
(Web) Application FrameWork
HTTP ์์ฒญ ๋ฑ์ ๋ฐ์ผ๋ฉด ์์ฒญ์ ๋ฐ๋ฅธ ์๋ต์ ๋๋ ค์ฃผ๋ Web Application์ ๋ง๋๋ FrameWork
**FrameWork : ํน์ ํ ๋ชฉ์ ์ ์ํ ๋๊ตฌ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ์
๐ ๏ธ Java์ Build Automation Tool
Java๋ก ์ด๋ฃจ์ด์ง ํ๋ก์ ํธ๋ '*.java' ํ์ผ์ ์ ์๋ Java Source ์ฝ๋๋ก ๊ตฌ์ฑ๋๋ค.
Java Compiler๋ Java Bytecode ๋ณํ -> Java Bytecode ์คํ -> ์คํ ๊ฐ๋ฅํ ํ์ผ๋ก ์ ์(ํจํค์ง) -> ๋ ๋ณต์ก
๊ทธ๋์ Maven ๊ณผ Gradle๋ก ์ฌ์ฉ
Maven
- Java๋ฅผ ์ํ Build Automation Tool
- ๋ฏธ๋ฆฌ ์์ฑ๋ xml ํ์ผ์ ์ด์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ๊ฑฐ๋ ํ๋ก์ ํธ๋ฅผ ๋น๋ํด์ค๋ค. ์๋ฐ ์์ค๋ฅผ ์ปดํ์ผํ๊ณ ํจํค์งํด์ deploy๊น์ง ์๋ํ ํด์ค๋ค๋ ๊ฒ์ด๋ค.
- Project Object Model (POM)
- xml์ ํํ๋ก ํ๋ก์ ํธ๋ฅผ ์ ์
- pom.xml์ ๋ถ์ํด ํ๋ก์ ํธ ๋น๋
- <dependency></dependency> ์ค์
- ํ๋ก์ ํธ๊ฐ ์์กดํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ๋ณด
- ์์ ๋ค์ด๊ฐ๋ ๋ํ ํ๊ทธ 4๊ฐ์ง
- <groupId> : ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ทธ๋ฃน ์์ด๋
- <artifactId> : ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํฐํฉํธ ์์ด๋
- <version> : ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์
- <scope> : ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋ก์ ํธ ๋ด์์ ์ฌ์ฉ๋๋ ๋ฒ์
Gradle
- Java๋ฅผ ์ํ Build Automation Tool
- Ant์ Maven๊ณผ ๊ฐ์ ์ด์ ์ธ๋ ๋น๋ ๋๊ตฌ์ ๋จ์ ์ ๋ณด์ํ๊ณ ์ฅ์ ์ ์ทจํฉํ์ฌ ๋ง๋ ์คํ์์ค๋ก ๊ณต๊ฐ๋ ๋น๋ ๋๊ตฌ์ด๋ค.
- build.gradle
- ๊ทธ๋ฃจ๋น(Groovy)๋ผ๋ ์ธ์ด๋ก ํ๋ก์ ํธ ์ ์
- sub-project ๋ฑ์ ํฌํจ์ํค๋ ์ฉ๋์ setting.gradle๋ ์๋ค.
- kotlin์ ์ฌ์ฉํ์ฌ ์ ์ํ ์ ์๋ค. (build.gradle.kts)
๐ป ์ผ๋ฐ์ ์ธ ์น ์๋ฒ์ ๋ฐฐํฌ๊ตฌ์กฐ
Hardware -> Web server -> Web Application Server or FileSystem
But
Hardware -> Spring Boot ๊ฐ๋ฅ!์ด๋ ๊ฒ ์๋ฒ ๊ตฌ์ฑ์ ๋ค์ํ ๋ฐฉ๋ฒ์ด ๊ฐ๋ฅํ๊ณ , Spring Boot ์ฌ์ฉ ์ ๊ฐ๋จ!
Java์ Jar
: Spring Boot ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ฉด jar ํ์ผ์ด ๋์จ๋ค.
jar
: Java ARchive
Java๋ก ์์ฑ ํ ์ปดํ์ผ๋ Java Bytecode์ ์คํ์ ์ํด ํ์ํ ๋ค์ํ ์์์ ๋ฐฐํฌ๋ฅผ ์ํด์ฌ ๋ชจ์๋์ ํ์ผ์ ํํ, ์ฝ๊ฒ ๋งํด ๋ค๋ฅธ ํํ์ ์์ถ ํ์ผ
๐ Web Application์ ๊ตฌ์กฐ
Presentation Layout : ์ฌ์ฉ์์ ์ง์ ์ ์ผ๋ก ๋ง๋ฟ๋ ๋ถ๋ถ
Logic Layout : ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ถ๋ถ
Data Layout : ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ๋ถ๋ถ
๐ Spring Boot์ ์์ ๊ตฌ์กฐ
๐ซ Java์ Interface
ํจ์ ์ธ์์ ๋ฐํ ๊ฐ์ interface๋ฅผ ํ์ฉํ์
Inputstream์ ๊ตฌํ์ฒด๋ ๋ง์ง๋ง ๋ค Inputstream์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค -> Inoputstream์ ํ์๋ก ํ๋ ๊ธฐ๋ฅ์๋ ๊ตฌ๋ถ์์ด ์ฌ์ฉํ ์ ์๋ค๋ ๋ป!
๐ Spring IoC Container์ DI
IoC: Inversion of control (์ ์ด ์ญ์ )
๊ฐ๋ฐ์๊ฐ Frame Work๋ฅผ ์ฌ์ฉํ๋๋ก ์ ์ด๊ฐ ์ญ์ ๋์๋ค๋ ๋ป
DI : ์์กด์ฑ ์ฃผ์ (Bean ์ฃผ์ )
-> Spring์์ ๊ตฌํ์ ์๊ตฌํ๋ ๋ถ๋ถ๋ค์ interface๋ก ์ ์, ์ดํ ์ฌ์ฉ์๊ฐ ์ ์ํ ๊ตฌํ์ฒด Bean์ ์ค์ ์๋น์ค์์ ์ฌ์ฉ
๐ซง Spring๊ณผ Spring Boot์ ์ฐจ์ด
Spring : ์คํ์ ์ํด Tomcat ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ํ์ํ๋ค.
Spring Boot : Tomcat ๊ฐ์ ์๋ฒ ํ๋ก๊ทธ๋จ์ด ๋ด์ฅ๋์ด, Jar์ ํํ๋ก ์คํ์ด ๊ฐ๋ฅํ๋ค.
'๊ฐ๋ฐ > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] REST, REST API, RESTful ? (0) | 2023.07.31 |
---|---|
[Spring] CRUD (0) | 2023.07.17 |
[Visual Studio Code] vs code ํฐ๋ฏธ๋๋ก C, C++ ์ปดํ์ผ&์คํํ๊ธฐ (0) | 2023.06.28 |
[์ปดํจํฐ๊ตฌ์กฐ] ์ปดํจํฐ ๊ตฌ์กฐ์ ํฐ ๊ทธ๋ฆผ (0) | 2023.06.25 |
[๋ช ํ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ] 7์ฅ - ์ ๋ค๋ฆญ๊ณผ ์ปฌ๋ ์ (0) | 2023.06.07 |