๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL/Java

๐Ÿ“š 12/27(์ˆ˜) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java-Spring 4์ผ์ฐจ TIL - java ์ปดํŒŒ์ผ ๊ณผ์ •, ์ฃผ์„ ์ฒ˜๋ฆฌ

๐Ÿ“ ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

  • ์ž๋ฐ” ์ปดํŒŒ์ผ ๊ณผ์ •
  • ์ฃผ์„ ์ฒ˜๋ฆฌ

 

 

 

 

๐Ÿ“ ์ž๋ฐ” ์ปดํŒŒ์ผ ๊ณผ์ •

<๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•œ ์ปดํŒŒ์ผ ๊ณผ์ •>

 

<์ž์„ธํ•œ ์ปดํŒŒ์ผ ๊ณผ์ •>

 

 

  1. ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด (. java) ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.
  2. ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ(javac)๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•œ๋‹ค. ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํŒŒ์ผ(. class)์ด ์ƒ์„ฑ๋œ๋‹ค.
    • ์†Œ์Šค ์ฝ”๋“œ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ฝ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
    • ์ปดํŒŒ์ผ ๊ณผ์ •์„ ํ†ตํ•ด ์ตœ์ ํ™”๋ฅผ ์‹œ์ผœ ์ข€ ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๊ณ , ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋„ ๊ฒ€์ถœํ•ด ์ค€๋‹ค.
    • ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JDK(์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๊ฐ€ ํ•„์ˆ˜๋กœ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  3. ์ปดํŒŒ์ผ๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ JVM์˜ ํด๋ž˜์Šค๋กœ๋”(class loader)์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
    • ํด๋ž˜์Šค ๋กœ๋”๋Š” (.class)๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋‹ด๋Š” ์šด๋ฐ˜๊ธฐ์ด๋‹ค.
  4. ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ ๋™์ ๋กœ๋”ฉ(Dynamic Loading)์„ ํ†ตํ•ด ํ•„์š”ํ•œ ํด๋ž˜์Šค๋“ค์„ ๋กœ๋”ฉ ๋ฐ ๋งํฌํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ(Runtime Data Area), ์ฆ‰ JVM์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.
    • ๋กœ๋“œ > ๊ฒ€์ฆ > ์ค€๋น„  > ๋ถ„์„ > ์ดˆ๊ธฐํ™”(static ํ•„๋“œ์˜ ๋ณ€์ˆ˜)
  5. ์‹คํ–‰์—”์ง„(Execution Engine)์€ JVM์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋“ค์„ ๋ช…๋ น์–ด ๋‹จ์œ„๋กœ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€์„œ ์‹คํ–‰ํ•œ๋‹ค.
  6. JVM ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋‚˜ JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•ด ์ค€๋‹ค.
    • ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” (.class)์ฝ”๋“œ ํ•ด์„๊ธฐ์ด๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ์ฝ์€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•ด์ค€๋‹ค.
    • JIT์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋น ๋ฅธ (.class)์ฝ”๋“œ ํ•ด์„๊ธฐ์ด๋‹ค. ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ํšจ์œจ์„ ๋†’์—ฌ์ฃผ๋Š” ์„œํฌํ„ฐ ํ•ด์„๊ธฐ์ด๋‹ค.

<JVM, JIT&nbsp; ์ฝ”๋“œ ๋ฒˆ์—ญ ๊ณผ์ •>

  • JVM(Java Virtual Machine): ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ . ๋ฐ”์ดํŠธ ์ฝ”๋“œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ์–ด์„œ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜ํ•˜๋‚˜์˜ ์‹คํ–‰์€ ๋น ๋ฅด๋‚˜, ์ „์ฒด์ ์ธ ์‹คํ–‰ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
  • JIT(Just-In-Time compilation): JIT๋Š” JVM์— ์†ํ•œ๋‹ค. JVM ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๋ฐฉ์‹์ด๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋กœ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ•˜๋‚˜์”ฉ ์ธํ„ฐํ”„๋ฆฌํŒ…ํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์ „์ฒด๊ฐ€ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด์ ์ธ ์‹คํ–‰์†๋„๋Š” ์ธํ„ฐํ”„๋ฆฌํŒ… ๋ฐฉ์‹๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

   7. ์šด์˜์ฒด์ œ(Operating System)์— ๋„๋‹ฌํ•œ๋‹ค.

  • ์ž๋ฐ”๋Š” OS์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ , Java ํŒŒ์ผ ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ์ž๋ฐ”๊ฐ€ ์„ค์น˜๋œ ๋ชจ๋“  OS์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋Š” ํŠน์ • OS์— ๋งž์ถ”์–ด ๊ฐœ๋ฐœ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

   8. ํ•˜๋“œ์›จ์–ด

 

 

 

 

๐Ÿ“ ์ฃผ์„(comment)์˜ ์ข…๋ฅ˜

  • ํ•œ ์ค„ ์ฃผ์„
    • //  ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๊ธฐํ˜ธ ์ดํ›„์˜ ๋ชจ๋“  ํ…์ŠคํŠธ๋Š” ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„
    • /* ๋กœ ์‹œ์ž‘ํ•˜๊ณ  */ ๋กœ ๋๋‚œ๋‹ค. ์ด ์‚ฌ์ด์˜ ๋ชจ๋“  ํ…์ŠคํŠธ๋Š” ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • ์ฃผ์„์€ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์œ„ํ•ด ์ ์€ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”๋Š” ์ฃผ์„์ด ์žˆ๋Š” ๊ณณ์„ ๋ฌด์‹œํ•œ๋‹ค.
  • ํ•œ ๋ฒˆ์— ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ ค๋ฉด ์„ ํƒํ•œ ํ›„,  ctrl + / ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค.
 public class CommentJava {
/*
์ฃผ์„์˜ ์ข…๋ฅ˜
*/
public static void main(String[] args) {
System.out.println("hello java1"); //hello java1์„ ์ถœ๋ ฅํ•œ๋‹ค. (ํ•œ ์ค„ ์ฃผ์„ - ๋ถ€ ๋ถ„ ์ ์šฉ)
//System.out.println("hello java2"); ํ•œ ์ค„ ์ฃผ์„ - ๋ผ์ธ ์ „์ฒด ์ ์šฉ
/* ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„ System.out.println("hello java3"); System.out.println("hello java4");
*/
} }

 <์ปดํŒŒ์ผ์„ ํ•˜๋ฉด ์ฃผ์„์ด ๋‹ค ์‚ฌ๋ผ์ง€๊ณ , ๋””์ปดํŒŒ์ผ ๋œ ๋‚ด์—ญ์—๋„ ์ฃผ์„์€ ์—†๋‹ค.>