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๊ฐ ์๋ ํ๊ฒฝ์์๋ ๋์ผํ๊ฒ ์ฌ์ฉ๊ฐ๋ฅํ ์ปจํ ์ด๋ ํ๊ฒฝ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค.
'1% > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
4. ์๋ฐ - ๋ฐ์ดํฐ / . / [ ] (1) | 2025.03.27 |
---|---|
3. Java - ํจ๋ฌ๋ค์ / ํด๋์ค(ํจ์) (0) | 2025.03.26 |
2. Java - ํน์ง / ์ธ์ฝ๋ฉ / ํ์ ๋ฐ ๋ฐ์ดํฐ [ 25 / 03 / 25 ] (0) | 2025.03.25 |