μλ° (Java Programming Language)
μλ°λ?
- μ¬ λ§μ΄ν¬λ‘μμ€ν μ¦μμ κ°λ° ν 1996λ 1μ 곡μ λ°ν
- μ΄μ체μ λ
립μ
- μΈν°λ· νκ²½μμ μΈκΈ° (λ€μν OSκ° κ³΅μ‘΄νκΈ° λλ¬Έ)
- κ°μ²΄μ§ν₯κ³Ό c++κ³Ό κ°μ λ€λ₯Έ μΈμ΄μ μ₯μ μ μ±ν
- μ½κ³ κ°κ²°ν νν
- 2010λ μ€λΌν΄μ¬κ° μΈμ
μλ°μ μμ¬
- 1991λ
μ€ν¬
(Oak)
μμ κ³ μ- μλ μ€ν¬λ κ°μ μ νκ³Ό κ°μ μν κΈ°κΈ°κ° λͺ©μ
- μ΄μ체μ λ 립μ
- κ°λ° λ°©ν₯μ λ°κΎΌ ν
ν« μλ°(Hot java)
μΆμ ν 1996λ 1μμ μλ° μ μ λ°ν - μ νλ¦Ώ μ΄ν μλΈλ¦Ώκ³Ό JSP, μλλ‘μ΄λμμλ μλ° μ±ν
μλ° μΈμ΄μ νΉμ§
- μ΄μ 체μ μ λ
립μ
- νλ‘κ·Έλ¨μ μ΄μ체μ μ λ 립μ
- μ΄λ₯Ό ν΄μνλ JVMμ μ΄μ체μ μ μ’
μμ
- μ¬λ¬ μ΄μ체μ μ μλ‘ λ€λ₯Έ λ²μ μ JVM μ 곡
- κ°μ²΄μ§ν₯μΈμ΄
- μμν κ°μ²΄μ§ν₯μΈμ΄
- μμ, μΊ‘μν, λ€νμ±μ΄ μ μ©
- λΉκ΅μ λ°°μ°κΈ° μ¬μ
- C++μμ μ°μ°μμ κΈ°λ³Έ ꡬ문
- μ€λͺ° ν‘
(small talk)
μμ κ°μ²΄μ§ν₯ - κ°κ²°νκ³ λͺ λ£ν κ°μ²΄μ§ν₯μ μ€κ³
- μλ λ©λͺ¨λ¦¬ κ΄λ¦¬
(Garbage Collection)
- κ°λΉμ§ 컬λ ν°κ° μλμΌλ‘ λ©λͺ¨λ¦¬ κ΄λ¦¬
- λΉν¨μ¨μ μΈ λ©΄λ μμ§λ§ νλ‘κ·Έλλ¨Έλ νλ‘κ·Έλλ°μ λ μ§μ€
- λ€νΈμν¬μ λΆμ°μ²λ¦¬ μ§μ
- λ€μν λ€νΈμν¬ νλ‘κ·Έλλ° λΌμ΄λΈλ¬λ¦¬
(Java API)
μ§μ
- λ€μν λ€νΈμν¬ νλ‘κ·Έλλ° λΌμ΄λΈλ¬λ¦¬
- λ©ν° μ€λ λ μ§μ
- μλ°λ μμ€ν
κ³Όλ κ΄κ³μλ λ©ν° μ€λ λ νλ‘κ·Έλ¨ κ΅¬ν κ°λ₯
- κ΄λ ¨λ λΌμ΄λΈλ¬λ¦¬ μ 곡
(Java API)
- κ΄λ ¨λ λΌμ΄λΈλ¬λ¦¬ μ 곡
- μλ° μΈν°ν리ν°κ° μ¬λ¬ μ°λ λμ μ€μΌμ€λ§ λ΄λΉ
- μλ°λ μμ€ν
κ³Όλ κ΄κ³μλ λ©ν° μ€λ λ νλ‘κ·Έλ¨ κ΅¬ν κ°λ₯
- λμ λ‘λ©
(Dynamic Loading)
μ§μ- μ€ν μμ λͺ¨λ ν΄λμ€κ° λ‘λ© X
- νμν μμ μ ν΄λμ€λ₯Ό λ‘λ©
- μΌλΆ ν΄λμ€ λ³κ²½ μ or μ ν리μΌμ΄μ μ λ³κ²½ μ λΉκ΅μ μ μ μμ μΌλ‘ μ²λ¦¬
- μ€ν μμ λͺ¨λ ν΄λμ€κ° λ‘λ© X
JVM (Java Virtual Machine)
μλ°λ₯Ό μ€ννκΈ° μν κ°μ κΈ°κ³
κ°μ κΈ°κ³λ μννΈμ¨μ΄λ‘ ꡬνλ νλμ¨μ΄ (μλμ° λ―Έλμ΄ νλ μ΄μ΄, μμ°ν), μ»΄ν¨ν° μμ μ»΄ν¨ν°
- μλ°λ‘ μμ±λ μ ν리μΌμ΄μ
μ λͺ¨λ JVMμμλ§ μ€ν
- μ€νμ μν΄ λ°λμ JVMμ΄ νμ
μΌλ° μ ν리μΌμ΄μ κ³Ό λΉκ΅
- μΌλ° μ΄ν리μΌμ΄μ
- μΌλ° μ΄ν리μΌμ΄μ <-> OS <-> μ»΄ν¨ν°
- λ€μν OSμ© JVM
JAVA μ΄ν리μΌμ΄μ <-> Windowsμ© JVM _<-> OS(Window) <-> μ»΄ν¨ν°_
JAVA μ΄ν리μΌμ΄μ <-> Macintoshμ© JVM _<-> OS(Macintosh) <-> μ»΄ν¨ν°_
JAVA μ΄ν리μΌμ΄μ <-> Linuxμ© JVM _<-> OS(Linux) <-> μ»΄ν¨ν°_
- μ€ν μ ν΄μμ΄ νμν΄ μλκ° λλ¦° μ μ JIT μ»΄νμΌλ¬ & μ΅μ ν κΈ°μ λ‘ κ²©μ°¨λ₯Ό μ€μ
- μΌλ° μ΄ν리μΌμ΄μ μ OS μ’ μμ
- μλ° μ΄ν리μΌμ΄μ
μ JVMμ΄ OS μ’
μμ
- μλ° μ΄ν리μΌμ΄μ
μ OSμ νλμ¨μ΄μ λ
립μ
- Write once, run anywhere.
- μλ° μ΄ν리μΌμ΄μ
μ OSμ νλμ¨μ΄μ λ
립μ
μλ° κ°λ° νκ²½ ꡬμΆνκΈ°
μλ° κ°λ°λꡬ(JDK) μ€μΉνκΈ°
JDKμ μλ° ν΄λμ€ λΌμ΄λΈλ¬λ¦¬, μλ°λ₯Ό κ°λ°νλλ° νμν νλ‘κ·Έλ¨λ€μ΄ μ€μΉ
JDK bin λλ ν°λ¦¬μ μ£Όμ μ€ννμΌ
- javac.exe
- μλ° μ»΄νμΌλ¬, μλ° μμ€μ½λλ₯Ό λ°μ΄νΈμ½λλ‘ μ»΄νμΌ
- java.exe
- μλ° μΈν°ν리ν°, μ»΄νμΌλ¬κ° μμ±ν λ°μ΄νΈμ½λ ν΄μ ν μ€ν
- javap.exe
- μμ΄μ λΈλ¬, μ»΄νμΌλ ν΄λμ€ νμΌμ μλμ μμ€λ‘ λ³ν
- javadoc.exe
- μλλ¬Έμ μμ±κΈ°
- μμ€ νμΌμμ μ£Όμ
(/** */)
μΌλ‘ API λ¬Έμμ κ°μ νμμ λ¬Έμ μλ μμ±
- jar.exe
- μμΆνλ‘κ·Έλ¨
- ν΄λμ€ νμΌ & νλ‘κ·Έλ¨μ μ€νμ κ΄λ ¨λ νμΌλ‘ μμΆ
JAVA API λ¬Έμ μ€μΉνκΈ°
- https://java.sun.com/ λ€μ΄ κ°λ₯
- μ¬μ μ²λΌ νμν λ μ°Ύμμ μ¬μ©ν κ²
μλ°λ‘ νλ‘κ·Έλ¨ μμ±νκΈ°
Hello.java
- ν΄λμ€μ μ΄λ¦κ³Ό .java νμΌμ μ΄λ¦μ΄ λμλ¬ΈμκΉμ§ μ νν κ°μμΌ ν¨
- μμ
- Hello.java -> (javac.exeκ° μ»΄νμΌ) -> Hello.class -> (java.exeλ‘ μ€ν) -> νλ‘κ·Έλ¨
- μλ°μ λͺ¨λ μ½λλ λ°λμ ν΄λμ€ μμ
- ν΄λμ€λ€μ΄ λͺ¨μ¬ μ ν리μΌμ΄μ
- ν€μλ class λ€μ μ΄λ¦ μμ± ν κ΄νΈ μμ μ½λ
public static void main(String[] args)
λ main λ©μλ μ μΈλΆ- νμ λκ°μ΄ μ μ΄μ£Όμ΄μΌ ν¨
- νλμ Java μ ν리μΌμ΄μ μ main λ©μλκ° λ°λμ νμ
- νλμ μμ€ νμΌμ μ¬λ¬ κ°μ§ ν΄λμ€λ κ°λ₯
- public classμ μ΄λ¦κ³Ό μμ€ νμΌ μ΄λ¦μ΄ μΌμΉν΄μΌ λλ€.
- public classκ° μλ€λ©΄ μ΄λ€ ν΄λμ€λ OK
- μμ€μ λ¬λ¦¬ ν΄λμ€ νμΌμ classλ§λ€ νλμ© μμ±
μμ£Ό λ°μνλ μλ¬μ ν΄κ²° λ°©λ²
- cannot find symbol λλ cannot resolve symbol
- μ§μ λ λ³μλ λ©μλλ₯Ό μ°Ύμ μ μμ λ
- λμλ¬ΈμκΉμ§ κΌΌκΌΌνκ² νμΈ
- ';' expected
- μΈλ―Έμ½λ¦°μ΄ νμν κ³³μ μμ λ
- μλ°λ λͺ¨λ λ¬Έμ₯μ λμ μΈλ―Έμ½λ‘ νμ
- Exception in thread "main" java.lang.NoSuchMethodError: main
- main λ©μλλ₯Ό μ°Ύμ μ μμ λ
- ν΄λμ€μ main λ©μλκ° μ μλμ΄ μλμ§ νμΈ
- λ©μλμ μ μΈλΆ μ€ν νμΈ
- λμλ¬Έμ ν¬ν¨
- Exception in thread "main" java.lang.NoSuchClassError: Hello
- HelloλΌλ ν΄λμ€λ₯Ό μ°Ύμ μ μμ λ
- ν΄λμ€ Helloμ μ² μ νμΈ
- λμλ¬Έμ ν¬ν¨
- ν΄λμ€ ν¨μ€ μ€μ λ νμΈ
- illegal start of expression
- λ¬Έμ₯μ λ¬Έλ²μ μ€λ₯κ° μμ λ
- κ΄νΈ νμΈ
- μμμ΄λ if λ¬Έ, for λ¬Έ λ±μ λ¬Έλ²μ μ€λ₯ νμΈ
- μ κ·Ό μ μ΄μ ν€μλ νμΈ
- class, inteface, or enum expected
- class, inteface, or enumμ λν μ€λ₯
- κ΄νΈμ κ°μκ° μΌμΉνμ§ μμ λ
- μλ¬κ° λ°μνμ λ μ²λ¦¬ μμ
- μλ¬ λ©μμ§λ₯Ό μ½κ³ ν΄λΉ μ½λ μ΄ν΄λ³΄κΈ°
- μ΄μ μμ μ κ·Έ μ£Όλ³ μ½λλ
- κ·Έλλ ν΄κ²°μ΄ μ λλ©΄ κΈ°λ³Έμ μΈ λΆλΆλ€ νμΈ
- μμ¬μ΄ κ°λ λΆλΆμ μ£Όμ μ²λ¦¬ or ν μ€νΈ
- μλ¬ λ©μμ§λ₯Ό μ½κ³ ν΄λΉ μ½λ μ΄ν΄λ³΄κΈ°
μλ° νλ‘κ·Έλ¨μ μ€ν κ³Όμ
- νλ‘κ·Έλ¨μ μ€νμ νμν ν΄λμ€(*.class)λ₯Ό λ‘λ
- ν΄λμ€ νμΌ κ²μ¬
- νμΌ νμ, μ μ±μ½λ 체ν¬
- μ§μ λ ν΄λμ€μμ main λ©μλ νΈμΆ
μ£Όμ (comment)
- μ£ΌμμΌλ‘ νλ‘κ·Έλ¨ μ½λμ λν μ€λͺ
μ λ§λΆμ¬ λμ κ²
- μμ±μ, μμ± μΌμ, λ²μ , λ²μ μ λ°λ₯Έ λ³κ²½ μ΄λ ₯
- μ£Όμμ μ’
λ₯
- λ²μ μ£Όμ : '/*'μ '*/'μ μ¬μ΄
- ν μ€ μ£Όμ : '//'λΆν° λΌμΈ λ
- μ»΄νμΌλ¬λ μ£Όμμ 무μ
- μ£Όμμ΄ λ§λ€κ³ ν΄μ νλ‘κ·Έλ¨ μ±λ₯ μ ν X
- μ£Όμμ μ κ·Ήμ μΌλ‘ μ¬μ©ν κ²
- μ£Όμμ΄ μ€νλ € λ°©ν΄λ λ μ£Όμμ μμ λ°°κ²½μκ³Ό μ μ¬ν μ μ¬μ©
- μ£Όμμ μ κ·Ήμ μΌλ‘ μ¬μ©ν κ²
- μ£Όμμ΄ λ§λ€κ³ ν΄μ νλ‘κ·Έλ¨ μ±λ₯ μ ν X
- ν°λ°μ΄ν μμ μμ λ μ£Όμμ΄ μλ λ¬Έμμ΄λ‘ μΈμ
'Java > Javaμ μ μ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Chapter 06 - κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° 1 (0) | 2022.04.20 |
---|---|
Chapter 05 - λ°°μ΄ (0) | 2022.04.19 |
Chapter 04 - 쑰건문과 λ°λ³΅λ¬Έ (0) | 2022.04.15 |
Chapter 03 - μ°μ°μ (0) | 2022.04.10 |
Chapter 02 - λ³μ (0) | 2022.03.21 |