μλ°νλ‘κ·Έλ¨ - μλ°μ κΈ°μ΄μ§μ
β
μλ νμΈμ. μμνμ λλ€.
μλ°λ?
μλ°(Java)λ CμΈμ΄μ κ°μ²΄ μ§ν₯μ κΈ°λ₯μ μΆκ°νμ¬ λ§λ C++κ³Ό λ¬λ¦¬, μ²μλΆν° κ°μ²΄ μ§ν₯ μΈμ΄λ‘ κ°λ°λ νλ‘κ·Έλλ° μΈμ΄μ λλ€. μλ°λ κ°μλ¨Έμ (JVM, Hava Virtual Machine)μ μ¬μ©νμ¬ μ΄μ체μ μλ λ 립μ μΌλ‘ λμν μ μμ΅λλ€.
β
λ°λΌμ, μλ°λ μ΄λ μ΄μ체μ μμλ κ°μ ννλ‘ μ€νλ μ μμ΅λλ€. λ°λ‘ μ΄λ¬ν μ μ΄ μλ§μ κ°λ°μλ‘ νμ¬κΈ μλ°λ₯Ό μ¬μ©νκ² νλ μλλ ₯μ΄ λκ³ μμ΅λλ€. νμ¬ μλ°λ μ μΈκ³μμ κ°μ₯ λ§μ΄ μ¬μ©νλ νλ‘κ·Έλλ° μΈμ΄ μ€ νλμ λλ€.
μλ°μ μμ¬
μ²μμ μλ°λ κ°μ μ ν λ΄μμ λμνλ μλ² λλ νλ‘κ·Έλ¨μ μν μΈμ΄λ‘ μ¬ λ§μ΄ν¬λ‘μμ€ν μ¦(Sun Microsystems)μ¬μ μ μμ€ κ³ μ¬λ§(James Gosling) νμ μν΄ κ°λ°λμμ΅λλ€.
β
1991λ μ μ€ν¬(Oak)λΌλ μ΄λ¦μΌλ‘ μμνμ¬ 1996λ μ λ°νλ 1.0.2λ²μ λΆν° μλ°(Java)λΌλ μ΄λ¦μ μ¬μ©νκ² λ©λλ€. 1998λ μ λ°νλ J2SE 1.2μμλ μΉμμλ μλ°λ₯Ό λ릴 μ μκ² ν΄μ£Όλ μλ° μ νλ¦Ώ(Java Applet)μ΄ μΆκ°λλ©°, μλ°μ μΈκΈ°λ κΈμμΉνκ² λ©λλ€.
β
κ·Έ ν λ²μ μ΄ μ λ°μ΄νΈ λ λλ§λ€ λ€μν κΈ°λ₯μ΄ μ§μλλ©° μλ°λ κΎΈμ€ν μΈκΈ°λ₯Ό λλ¦¬κ² λ©λλ€. μ΄ν 2009λ μ μ¬ λ§μ΄ν¬λ‘μμ€ν μ¦μ¬κ° μ€λΌν΄κ³Ό μΈμ ν©λ³λ¨μ λ°λΌ μλ° λν μ€λΌν΄λ‘ μμ κΆμ΄ λμ΄κ°λλ€.
μλ°μ νΉμ§
μλ° μΈμ΄κ° κ°μ§λ μ₯μ
β
- μλ°λ μ΄μ체μ μλ λ 립μ μΌλ‘ μ€νν μ μμ΅λλ€.
- μλ°λ λΆνμν κΈ°λ₯μ κ³Όκ°ν μ κ±°νμ¬ λ€λ₯Έ μΈμ΄μ λΉν΄ λ°°μ°κΈ°κ° μ½μ΅λλ€.
- μλ°λ μλ λ©λͺ¨λ¦¬ κ΄λ¦¬ λ±μ μ§μνμ¬ λ€λ₯Έ μΈμ΄μ λΉν΄ μμ μ±μ΄ λμ΅λλ€.
- μλ°λ μ°μ°μ μ€λ²λ‘λ©μ κΈμ§νκ³ μ λ€λ¦μ λμ ν¨μΌλ‘μ¨ μ½λμ κ°λ μ±μ λμμ΅λλ€.
- μλ°μ κ΄ν μλ§μ μ°Έκ³ μλ£λ₯Ό μ°Ύμ μ μμ΅λλ€.
β
μλ° μΈμ΄κ° κ°μ§λ λ¨μ
β
- μλ°λ μ€νμ μν΄ μλ° κ°μ λ¨Έμ μ κ±°μ³μΌνλ―λ‘ λ€λ₯Έ μΈμ΄μ λΉν΄ μ€ν μλκ° λ립λλ€.
- μλ°λ μμΈ μ²λ¦¬κ° μ λμ΄μμ§λ§ κ°λ°μκ° μΌμΌμ΄ μ²λ¦¬λ₯Ό μ§μ ν΄μ€μΌ νλ€λ λΆνΈν¨μ΄ μμ΅λλ€.
- μλ°λ λ€λ₯Έ μΈμ΄μ λΉν΄ μμ±ν΄μΌνλ μ½λμ κΈΈμ΄κ° κΈ΄ νΈμ λλ€.
μλ°νλ‘κ·Έλ¨μ μ€νκ³Όμ
μλ° μ»΄νμΌλ¬(Java Compiler)
μλ° μ»΄νμΌλ¬λ μλ°λ₯Ό κ°μ§κ³ μμ±ν μλ° μμ€μ½λλ₯Ό μλ° κ°μ λ¨Έμ μ΄ μ΄ν΄ν μ μλ μλ° λ°μ΄νΈμ½λλ‘ λ³νν©λλ€. μλ° μ»΄νμΌλ¬λ μλ°λ₯Ό μ€μΉνλ©΄ javac.exeλΌλ μ€ν νμΌ ννλ‘ μ€μΉλ©λλ€.
μλ° λ°μ΄νΈμ½λ(Java bytecode)
μλ° λ°μ΄νΈμ½λ(Java bytecode)λ μλ° κ°μ λ¨Έμ μ΄ μ΄ν΄ν μ μλ μΈμ΄λ‘ λ³νλ μλ° μμ€μ½λλ₯Ό μλ―Έν©λλ€. μλ° μ»΄νμΌλ¬μ μν΄ λ³νλλ μ½λμ λͺ λ Ήμ΄ ν¬κΈ°κ° 1λ°μ΄νΈλΌμ μλ° λ°μ΄νΈμ½λλΌκ³ λΆλ¦¬κ³ μμ΅λλ€.
β
μ΄λ¬ν μλ° λ°μ΄νΈμ½λμ νμ₯μλ .classμ λλ€.
β
μλ° λ°μ΄νΈμ½λλ μλ° κ°μ λ¨Έμ λ§ μ€μΉλμ΄ μμΌλ©΄ μ΄λ€ μ΄μ체μ μμλΌλ μ€νλ μ μμ΅λλ€.
μλ° κ°μ λ¨Έμ (JVM)
μλ° κ°μ λ¨Έμ (JVM, Java Virtual Machine)μ΄λ μλ° λ°μ΄νΈμ½λλ₯Ό μ€νμν€κΈ° μν κ°μμ κΈ°κ³λΌκ³ ν μ μμ΅λλ€. μλ°λ‘ μμ±λ λͺ¨λ νλ‘κ·Έλ¨μ μλ° κ°μ λ¨Έμ μμλ§ μ€νλ μ μμΌλ―λ‘ μλ° νλ‘κ·Έλ¨μ μ€ννκΈ° μν΄μλ λ°λμ μλ° κ°μ λ¨Έμ μ΄ μ€μΉλμ΄ μμ΄μΌ ν©λλ€.
β
λ°λΌμ μ€λΌν΄μ λλΆλΆμ μ£Όμ μ΄μ체μ λΏλ§ μλλΌ μΉ λΈλΌμ°μ , μ€λ§νΈν°, κ°μ κΈ°κΈ° λ±μμλ μλ° κ°μ λ¨Έμ μ μμ½κ² μ€μΉν μ μλλ‘ μ§μνκ³ μμ΅λλ€.
β
κ·Έλμ κ°λ°μλ ν λ²λ§ νλ‘κ·Έλ¨μ μμ±νλ©΄, λͺ¨λ μ΄μ체μ μμ κ°μ΄ μ¬μ©ν μ μλ μ₯μ μ΄ μμ΅λλ€. λ¨, μλ°νλ‘κ·Έλ¨κ³Όλ λ¬λ¦¬ μλ° κ°μ λ¨Έμ μ μ΄μ체μ μ μ’ μλλ―λ‘ κ° μ΄μ체μ μ λ§λ μλ° κ°μ λ¨Έμ μ μ€μΉν΄μΌν©λλ€.
β
λν, μλ°νλ‘κ·Έλ¨μ μΌλ°νλ‘κ·Έλ¨λ³΄λ€ μλ° κ°μ λ¨Έμ μ΄λΌλ ν λ¨κ³λ₯Ό λ κ±°μ³μΌνλ―λ‘ μλμ μΌλ‘ μ€νμλκ° λ리λ€λ λ¨μ μ κ°μ§κ³ μμ΅λλ€.
μλ° κ°μ λ¨Έμ μ ꡬμ±
μλ° κ°μ λ¨Έμ μ λ€μκ³Ό κ°μ΄ ꡬμ±λ©λλ€.
β
- μλ° μΈν°ν리ν°(interpreter)
- ν΄λμ€ λ‘λ(class loader)
- JIT μ»΄νμΌλ¬(Just-In-Time compiler)
- κ°λΉμ§ 컬λ ν°(garbage collector)
β
μλ° μ»΄νμΌλ¬μ μν΄ λ³νλ μλ° λ°μ΄νΈμ½λλ₯Ό μ½κ³ ν΄μνλ μν μ νλ κ²μ΄ μλ° μΈν°ν리ν°μ λλ€.
β
μλ°λ λμ μΌλ‘ ν΄λμ€λ₯Ό μ½μ΄μ€λ―λ‘ νλ‘κ·Έλ¨μ΄ μ€ν μ€μΈ λ°νμμμμΌ λͺ¨λ μ½λκ° μλ° κ°μ λ¨Έμ κ³Ό μ°κ²°λ©λλ€. μ΄λ κ² λμ μΌλ‘ ν΄λμ€λ₯Ό λ‘λ©ν΄μ£Όλ μν μ νλ κ²μ΄ λ°λ‘ ν΄λμ€ λ‘λμ λλ€.
β
JIT μ»΄νμΌλ¬λ νλ‘κ·Έλ¨μ΄ μ€ν μ€μΈ λ°νμμ μ€μ κΈ°κ³μ΄λ‘ λ³νν΄μ£Όλ μ»΄νμΌλ¬λ₯Ό μλ―Έν©λλ€. λμ λ²μ(dynamic translation)μ΄λΌκ³ λ λΆλ¦¬λ μ΄ κΈ°λ²μ νλ‘κ·Έλ¨μ μ€ν μλλ₯Ό ν₯μμν€κΈ° μν΄ κ°λ°λμμ΅λλ€. μ¦, JIT μ»΄νμΌλ¬λ μλ° μ»΄νμΌλ¬κ° μμ±ν μλ° λ°μ΄νΈμ½λλ₯Ό λ°νμμ λ°λ‘ κΈ°κ³μ΄λ‘ λ³ννλ λ° μ¬μ©ν©λλ€.
β
μλ° κ°μ λ¨Έμ μ κ°λΉμ§ 컬λ ν°λ₯Ό μ΄μ©νμ¬ λλ μ¬μ©νμ§μλ λ©λͺ¨λ¦¬λ₯Ό μλμΌλ‘ νμν΄μ€λλ€. λ°λΌμ κ°λ°μκ° λ°λ‘ λ©λͺ¨λ¦¬λ₯Ό κ΄λ¦¬νμ§μμλ λλ―λ‘ λμ± μμ½κ² νλ‘κ·Έλλ°μ ν μ μλλ‘ λμμ€λλ€.
κ°λ¨ν μλ°νλ‘κ·Έλ¨
μλ°νλ‘κ·Έλ¨μ ν κ° μ΄μμ ν΄λμ€(class)λ‘ κ΅¬μ±λ©λλ€. μ΄λ¬ν ν΄λμ€λ ν κ° μ΄μμ νλ(field)λ λ©μλ(method)λ‘ κ΅¬μ±λ©λλ€.
β
κ°λ¨ν μλ°νλ‘κ·Έλ¨μ κΈ°λ³Έ ꡬ쑰λ λ€μκ³Ό κ°μ΅λλ€.
class ν΄λμ€ μ΄λ¦ {
νλμ μ μΈ
νλμ μ μΈ
...
λ©μλμ μ μΈ
λ©μλμ μ μΈ
...
}
class Test {
int field1;
String field2;
public void method1() {
Systme.out.println("μλ° νλ‘κ·Έλλ°!!");
}
}
μ€νκ²°κ³Ό
μλ° νλ‘κ·Έλλ°!!
main() λ©μλ
μλ°νλ‘κ·Έλ¨μ΄ μ€νλλ©΄ 맨 λ¨Όμ main() λ©μλλ₯Ό μ°Ύμ κ·Έ μμ λͺ¨λ λͺ λ Ήλ¬Έμ μ°¨λ‘λλ‘ μ€νν©λλ€. λ°λΌμ νλμ μλ°νλ‘κ·Έλ¨μλ main() λ©μλλ₯Ό κ°μ§λ ν΄λμ€κ° λ°λμ νλλ μ‘΄μ¬ν΄μΌν©λλ€.
β
μλ°μμ main() λ©μλλ λ€μκ³Ό κ°μ΄ μ μΈν©λλ€.
public static void main(String[] args) {
...
}
μμμμ²λΌ main() λ©μλλ λ°λμ public static voidλ‘ μ μΈλμ΄μΌ ν©λλ€.
λͺ λ Ήλ¬Έ(statement)
μλ°νλ‘κ·Έλ¨μ λμμ λͺ μνκ³ , μ΄λ¬ν λμμ μ»΄ν¨ν°μ μλ €μ£Όλ λ° μ¬μ©λλ λ¬Έμ₯μ λͺ λ Ήλ¬Έμ΄λΌκ³ ν©λλ€. μλ°μ λͺ¨λ λͺ λ Ήλ¬Έμ λ°λμ μΈλ―Έμ½λ‘ (;)μΌλ‘ λλμΌ ν©λλ€.
μ£Όμ(comment)
μ£Όμμ΄λ μ½λμ λν μ΄ν΄λ₯Ό λλ μ€λͺ μ μ κ±°λ λλ²κΉ μ μν΄ μμ±νλ μΌμ’ μ λ©λͺ¨μ λλ€. μλ° μ»΄νμΌλ¬λ μ£Όμμ 무μνκ³ μ»΄νμΌνλ―λ‘ μ€μ μ€νκ²°κ³Όμλ μλ¬΄λ° μν₯μ μ£Όμ§μμ΅λλ€.
β
μλ°μμ μ£Όμμ μμ±νλ λ¬Έλ²μ λ€μκ³Ό κ°μ΄ λκ°μ§ λ°©λ²μ΄ μμΌλ©°, κ·Έ μ°¨μ΄λ μ ν μμ΅λλ€.
β
μλ°μ ν μ€ μ£Όμμ μμμμΉμ //μ μ¬μ©νκ³ μ¬λ¬ μ€ μ£Όμμ /*λ‘ μμν΄μ λ°λμ */λ‘ λλμΌν©λλ€.
1. //ν μ€ μ£Όμ
2. /*μ¬λ¬
μ€
μ£Όμ */
λ€μ μμ λ μλ°μμ μ¬λ¬ μ€ μ£Όμ μμ λ λ€λ₯Έ ν μ€ μ£Όμμ μ€μ²©ν΄μ μ½μ νλ μμ μ λλ€.
/* μ¬λ¬ μ€
//μ΄λ κ² λ μ£Ό μ£Όμ μμ λ λ€λ₯Έ ν μ€ μ£Όμμ μ½μ
ν μ μμ΅λλ€.
μ£Όμμ
λλ€. */
μμ μμ μ²λΌ μλ°μμλ μ¬λ¬ μ€ μ£Όμ μμ λ λ€λ₯Έ ν μ€ μ£Όμμ μ½μ ν μ μμ΅λλ€. νμ§λ§ λ€μ μμ μ²λΌ μ¬λ¬ μ€ μ£Όμμμ λ λ€λ₯Έ μ¬λ¬ μ€ μ£Όμμ μ€μ²©ν΄μ μ½μ ν μλ μμ΅λλ€.
[1] /* μ¬λ¬ μ€
[2] /* λ λ€λ₯Έ μ¬λ¬ μ€ μ£Όμμ
λλ€. */
[3] μ£Όμμ
λλ€. */
μμ μμ μ²λΌ μ¬λ¬ μ€ μ£Όμ μμ λ λ€λ₯Έ μ¬λ¬ μ€ μ£Όμμ μ½μ νλ©΄ [2]λ² λΌμΈμμ μ½μ ν μ£Όμμ μ’ λ£ κΈ°νΈ(*/)λ₯Ό [1]λ² λΌμΈμμ μμν 첫 λ²μ§Έ μ£Όμμ΄ μμ μ μ’ λ£ κΈ°νΈ(*/)λ‘ μλͺ» μΈμνκ² λ©λλ€.
β
λ°λΌμ μ μμ μ [3]λ² λΌμΈμ μ£ΌμμΌλ‘ μΈμλμ§ λͺ»νκ³ , μ»΄νμΌ μ μ€λ₯κ° λ°μνκ² λλ―λ‘ μλ°μμ μ¬λ¬ μ€ μ£Όμμ μ λλ‘ μ€μ²©ν΄μ μ¬μ©ν΄μλ μλ©λλ€.
μ€λ ν¬μ€ν μμλ μλ°νλ‘κ·Έλ¨μ κΈ°μ΄μ§μμ λν λ΄μ©μ λ€λ€μ΅λλ€. μλ°νλ‘κ·Έλ¨μ System.out.println()μ λ€μ ν¬μ€ν μμ μμΈν λ€λ€λ³΄λλ‘ νκ³ , JAVA8μ λ³κ²½μ¬ν λν λ€λ€λ³΄κ² μ΅λλ€.
β
μλ°νλ‘κ·Έλ¨μ μ¬μ©νμ¬ μ 곡λλΉ, μ·¨μ , μ§ν λ±μ λͺ©μ κ³Ό λλΆμ΄ λ€μν νλ‘κ·Έλλ° μΈμ΄λ‘ μ 곡λλΉ, μ·¨μ , μκ²©μ¦ μ·¨λ, μ§ν λ±μ λͺ©μ μ κ°μ§κ³ κ³μ λΆμ΄λΌλ©΄ μλμ λ€μ΄λ² νΌμ ν΅ν΄ κ°λ¨νκ²λΌλ λ¨κ²¨μ£Όμλ©΄ μ κ° μ§μ λΉ λ₯΄κ³ μ νν λ΅λ³μ ν΄λλ¦¬κ² μ΅λλ€.
β
κ°μ¬ν©λλ€ :)
β
βΌ μλ°νλ‘κ·Έλ¨μ λν κΆκΈν μ λ¨κΈ°κΈ° βΌ
http://it-kgedu1.kr/support/edu_consult.php
'ICT > νλ‘κ·Έλλ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ°νμ JAVAνλ‘κ·Έλλ° κ΅μ‘κ³Όμ (feat. KGμμ΄ν°λ± ν¬) (0) | 2022.11.25 |
---|---|
CμΈμ΄ ν¨μ - printf ν¨μ, scanf ν¨μ (0) | 2022.06.07 |
CμΈμ΄ νλ‘κ·Έλ¨ - CμΈμ΄μ κΈ°μ΄λ₯Ό μμ보μ (0) | 2022.06.07 |
νμ΄μ¬ κΈ°μ΄κ³΅λΆ - 체κ³μ μΈ κ³΅λΆ κ³νμΈμ°κΈ° (0) | 2022.06.06 |
μλλ‘μ΄λ νλ‘κ·Έλλ° - μλ°νμ© (0) | 2021.10.09 |