1. Java๋ž€? [ 25 / 03 / 24 ]

2025. 3. 24. 23:03ใ†1%/Java

๐Ÿ”น  ๊ฐœ๋ฐœ์— ์•ž์„œ ์ฝ”๋“œ๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ Statements(๋ฌธ) / Expression(์‹)  ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

โœ…  Statements : ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

โœ…  Expression : ๊ฒฐ๊ณผ

 

[ ์ž๋ฐ”์˜ ํŠน์ง• 1 ]

๐Ÿ”น ํ”Œ๋žซํผ ๋…๋ฆฝ์ 

1. ๋ฌธ(Statements)์œผ๋กœ ๊ตฌ์กฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹(Expression)์„ ํ†ตํ•ด ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.

2. ์ปดํŒŒ์ผํ•œ๋‹ค. ( ์ž๊ธฐ์—๊ฒŒ ๋งž๋Š” ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ Java = JVM์ด ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜)

3. ์‹คํ–‰ ( Java๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด๋ฉด ๋œ๋‹ค )

๊ทธ๋ ‡๊ธฐ์— ์ž๋ฐ”๋Š” 'ํ”Œ๋žซํผ ๋…๋ฆฝ์ '์ด๋‹ค

 

- ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์˜ˆ์‹œ

public static void main(String[] args) {

    int num1 = 10;

    int num2 = num1+10;
    System.out.println("num1 = "+num1);
    System.out.println("num1 = "+num2);
}
LINENUMBER 7 L0
BIPUSH 10  //10์„
ISTORE 1   //1๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ๋„ฃ๋Š”๋‹ค.
L1
LINENUMBER 9 L1  
ILOAD 1    //1๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์„ ๋ถˆ๋Ÿฌ๋‚ด๊ณ 
BIPUSH 10  //10์„
IADD       //๋”ํ•œ๋‹ค
ISTORE 2   //2๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ๋„ฃ๋Š”๋‹ค.
L2
LINENUMBER 10 L2
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;   
ILOAD 1
INVOKEDYNAMIC makeConcatWithConstants(I)Ljava/lang/String; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
// arguments:                       //invoke = java์—์„œ ์‹คํ–‰์œผ๋กœ ๋ณด๋ฉด๋œ๋‹ค.
      "num1 = \u0001"               //๊ด„ํ˜ธ ์—ด/๋‹ซ๊ณ ๊ฐ€ ์žˆ๋‹ค.
              ]
INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
        L3
LINENUMBER 11 L3
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
ILOAD 2
INVOKEDYNAMIC makeConcatWithConstants(I)Ljava/lang/String; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
// arguments:
      "num1 = \u0001"
              ]
INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
        L4
LINENUMBER 12 L4
        RETURN

- ์ด๊ฒƒ์ด JVM Assembly Code ( ๋ฐ”์ดํŠธ ์ฝ”๋“œ )์ด๋‹ค. ๋˜ํ•œ, ๋ณ€์ˆ˜์˜ ์œ„์น˜( ์ขŒ, ์šฐ)์— ๋”ฐ๋ผ ์˜๋ฏธ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. 

- ์ž๋ฐ”์—์„œ ์‹คํ–‰์ด๋ผ๋Š” ์˜๋ฏธ์˜ invoke๋Š” ๊ด„ํ˜ธ๋ฅผ ์—ด/๋‹ซ๊ณ ๊ฐ€ ์žˆ๋‹ค. ๊ด„ํ˜ธ๋ฅผ ์—ด๊ณ  ๋‹ค๋Š”๋‹ค๋Š”๊ฑด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

someMethod(); // ๊ด„ํ˜ธ๋ฅผ ์—ด๊ณ  ๋‹ซ๊ณ , ์ธ์ˆ˜ ์—†์ด ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
someMethod(10, "Hello"); // ๊ด„ํ˜ธ๋ฅผ ์—ด๊ณ  ๋‹ซ๊ณ , ์ธ์ˆ˜๋ฅผ ํฌํ•จํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

 

[ ์ž๋ฐ”์˜ ํŠน์ง• 2 ]

- ์ž๋ฐ”๋Š” ์Šค์Šค๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ๋ฅผ ํ•œ๋‹ค.

- JVM์ด GC๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ์ถ”์ ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•œ๋‹ค. (๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ•˜์ง€ ์•Š์Œ)

https://bboris.tistory.com/manage/newpost

 

๐Ÿ”น  ์ž๋ฐ”์—์„œ ํ”ผํ•ด๊ฐˆ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ

๐Ÿ”น  JDK 17๋ฒ„์ „์—์„œ๋Š” ํ•œ๊ธ€์˜ ๊นจ์ง์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. But, 19๋ฒ„์ „์€ ํ•œ๊ธ€์ด ๊นจ์ง

โœ… JDK17๋ฒ„์ „์ด์ „ OS ๊ธฐ๋ณธ์ธ์ฝ”๋”ฉwindow : MS949, Linux/macOs : UTF-8

โœ… JDK 18๋ฒ„์ „์ดํ›„ ๊ธฐ๋ณธ์ธ์ฝ”๋”ฉ ; UTF-8๋กœ ๊ณ ์ •

 

 

[ ํƒ€์ž… ] 

๐Ÿ”น ํƒ€์ž…์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

โœ…  GPT ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ : ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์™€ ๊ทธ ๋ฐ์ดํ„ฐ์— ์ ์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์„ ์ •์˜ํ•˜๋Š” ๊ฐœ๋…

์ฆ‰, ์–ด๋–ค ๊ฐ’์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋˜๊ณ , ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ

 

๐Ÿ”น  ๊ทธ๋ ‡๋‹ค๋ฉด, ํƒ€์ž…์ด ๋น„๊ต์  ์ž์œ ๋กœ์šด js์™€ python์€?

โœ…  js : ๋™์ ํƒ€์ž… + ์•ฝํƒ€์ž… → ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜์ด ๋งŽ๋‹ค (์ˆซ์ž ↔ ๋ฌธ์ž์—ด ๋“ฑ)

โœ…  python : ๋™์  ํƒ€์ž… + ๊ฐ•ํƒ€์ž… → ์ž๋™ ๋ณ€ํ™˜์ด ๊ฑฐ์˜์—†๊ณ , ํƒ€์ž…์ด ๋‹ค๋ฅด๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

 

[ build ]

๐Ÿ”น ํ”„๋กœ์ ํŠธ ์™„์„ฑ๋ณธ์„ ๋งŒ๋“ ๋‹ค๋Š” ์˜๋ฏธ

โœ… build๋ฅผ ํ•˜๊ฒŒ๋˜๋ฉด build / libs๋ผ๋Š” ํด๋”๊ฐ€ ์ƒ๊ธฐ๊ณ  ํ”„๋กœ์ ํŠธ๋ช….jar ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด jarํŒŒ์ผ์„ ์ตœ๊ทผ์—๋Š” Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JDK๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.