๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Back-end ๋ฐ๋ธŒ์ฝ”์Šค/week 01 - 02 TIL (java, DB)

[TIL] 221017 - Java ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•

by young-ji 2022. 10. 18.

ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์œ„ํ•œ JAVA (1) - Java ์ด์•ผ๊ธฐ

 

1. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  1. JDK ์„ค์น˜
    • JVM ํ•„์š” → ์ž๋ฐ”๋ฅผ ์‹คํ–‰ ์‹œํ‚ค๊ธฐ์œ„ํ•œ ํ™˜๊ฒฝ : JRE
    • JRE(์‹คํ–‰ํ™˜๊ฒฝ) + ๊ฐœ๋ฐœtool ⇒ ๊ฐœ๋ฐœํ™˜๊ฒฝ : JDK (java ๋ช…๋ น: ์‹คํ–‰๋ช…๋ น + javac ๋ช…๋ น : ๋นŒ๋“œ ๋ช…๋ น)
  2. path ์„ค์ •
JVM์ด๋ž€?
java virtual machine์˜ ์ค„์ž„๋ง๋กœ ์ž๋ฐ”๊ฐ€ OS์— ์ข…์† ๋ฐ›์ง€ ์•Š๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ€์ƒ ์ปดํ“จํ„ฐ์ด๋‹ค. ์ฆ‰, ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ด๋‹ค.์ž๋ฐ”์†Œ์Šค๋กœ ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ๋ฐ”์ด์–ด๋ฆฌ ํŒŒ์ผ์ธ .class ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๊ณ  GC๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•œ๋‹ค.

reference. https://coding-factory.tistory.com/m/828

 

commandline ๋ช…๋ น์–ด

  • vi  HellowWorld.java : java ํŒŒ์ผ ์ƒ์„ฑ
  • cat  HellowWorld.java : java ํŒŒ์ผ ๋ณด๊ธฐ
  • javac  HelloWorld.java : ์ปดํŒŒ์ผ → class ํŒŒ์ผ(์‹คํ–‰๋˜๊ธฐ ์œ„ํ•œ byte ํŒŒ์ผ) ์ƒ์„ฑ
  • java  HellowWorld : ์‹คํ–‰

 

vscode  ->  java extesion pack ์„ค์น˜

 

2. ๋นŒ๋“œ tool

์ž๋™์œผ๋กœ ๋นŒ๋“œ, ์‹คํ–‰ํ•ด์ฃผ๋Š” tool

Build tool : Ant, Maven, Gradle

  • Gradle ์„ค์น˜

build script DSL → ๋นŒ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ• ์ง€, ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ์ง€์ • → ์ตœ๊ทผ์— kotlin์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ คํ•˜์ง€๋งŒ ๊ธฐ์กด Groovy๊ฐ€ ์•„์ง ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

๋นŒ๋“œ ๋„๊ตฌ ์‚ฌ์šฉ ์ด์œ ?
๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ์‹ค์šฉ์ ์ด์ง€ ์•Š๋‹ค. ๋ฌด์—‡์„ ๋นŒ๋“œํ• ์ง€, ์–ด๋–ค ์ˆœ์„œ๋กœ ํ• ์ง€, ์–ด๋–ค ์˜์กด์„ฑ์ด ์žˆ๋Š” ์ง€ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ผ๊ด€๋˜๊ฒŒํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ, ํ…Œ์ŠคํŠธ ๋นŒ๋“œ, ๋ฐฐํฌ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

commandline ๋ช…๋ น์–ด

  1. gradle init ์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
  2. gradle tasks : ํ…Œ์Šคํฌ ๋ชฉ๋ก ํ™•์ธ
  3. gradle build : ๋นŒ๋“œ
  4. gradle run : ์‹คํ–‰

 

3. IDE ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ

๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” java IDE : Eclipse, Interllij

JetBrains์˜ Interllij

Spring์„ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•ด์„  Ultimate ๋ฒ„์ „ ์‚ฌ์šฉ

 

์œ ์šฉํ•œ ๋‹จ์ถ•ํ‚ค

: Option + Enter : ๋น ๋ฅธ ์ˆ˜์ •

: Command + 1 : ํด๋”์ฐฝ์œผ๋กœ ์ปค์„œ ์ด๋™

: Command + N : ์ƒˆํŒŒ์ผ ์ƒ์„ฑ

: Shift + Shift : ํŒŒ์ผ ์ด๋ฆ„ ๊ฒ€์ƒ‰

: Option + Up/Down : ๋‹จ๊ณ„๋ณ„ ๋ธ”๋Ÿญ ์ง€์ •

: Command + Option + L : ์ฝ”๋“œ ๋ฆฌํฌ๋ฉ”ํŒ…

: Ctrl + T : ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง ๋ฉ”๋‰ด

: Command + Shift + A : ๋ช…๋ น์–ด ๊ฒ€์ƒ‰

 

 

4. ์ดˆ๋ณด๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๋ฉด ์ข‹์€ ์ •๋ณด

์ผ๋ฐ˜์ ์ธ ์ž๋ฐ” ์ฝ”๋”ฉ ๋ฃฐ

  • ํด๋ž˜์Šค๋ช…์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘
  • ๋ฉ”์†Œ๋“œ๋‚˜ ๋ณ€์ˆ˜๋ช…์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘
  • ์–ธ๋”๋ฐ”๊ฐ€์•„๋‹Œ ์นด๋ฉœ์ผ€์ด์Šค

 

Reference

  • Java์—์„œ๋Š” alloc/free ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ผ์ผํžˆ ์‹ ๊ฒฝ์“ฐ์ง€์•Š์•„๋„๋œ๋‹ค.(O)
  • Java๋ฅผ ํ•˜๋ฉด ํฌ์ธํ„ฐ๋ฅผ ๋ชฐ๋ผ๋„๋œ๋‹ค. (X)
  • Java์—์„œ๋Š” ํฌ์ธํ„ฐ ๋Œ€์‹  ๋ž˜ํผ๋Ÿฐ์Šค๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • Java ์—์„œ๋Š” 8๊ฐœ์˜ Primitive๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“ ๊ฒƒ์ด ๋ž˜ํผ๋Ÿฐ์Šค ๊ฐ’์ด๋‹ค.
    • boolean, byte, int, short, long, float, double, char
    • array๋Š” reference๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
  • Call by value / Call by reference

(์ถ”ํ›„ ์ถ”๊ฐ€ ์˜ˆ์ •)

 

 

Constant Pool

  • String์„ ํŠน๋ณ„ํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•œ๋‹ค. / constant pool์„ ์ด์šฉํ•œ๋‹ค.
    • string์— ๋Œ€ํ•ด์„œ += ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž
  • StringBuffer๋ฅผ ์‚ฌ์šฉํ•˜์ž
  • StringBuffer ์™€ StringBuilder์˜ ์ฐจ์ด

(์ถ”ํ›„ ์ถ”๊ฐ€ ์˜ˆ์ •)

 

Object

  • ๋ชจ๋“  ๊ฐ์ฒด์˜ ์ตœ์ƒ์œ„ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
  • ์ฆ‰, ๋ชจ๋“  ๊ฐ์ฒด์—๋Š” Object์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ• ์ˆ˜์žˆ๋‹ค.
  • Object์— ์–ด๋–ค ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋Š” ์ง€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€
    • toString() / equal() / hashCode() ๋“ฑ

 

Git

  • .gitignore ์ž˜ ํ™œ์šฉํ•˜๊ธฐ

ํฌํ•จ๋˜์ง€ ์•Š์•„์•ผํ•˜๋Š” ํŒŒ์ผ

: ๋นŒ๋“œ๊ฒฐ๊ณผ(buildํด๋”), ๋ฐ”์ด๋„ˆ๋ฆฌ, ์ œ๋„ˆ๋ ˆ์ดํŠธ ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ๋“ค(gradle - gradle wrapper ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑ๊ฐ€๋Šฅ), ๋กœ์ปฌ์„ค์ •, ํ‚ค/๋ณด์•ˆ ๊ด€๋ จ

: *.class , *.jar, build/

http://gitignore.io/

๋Œ“๊ธ€