[JAVA] 01. μλ° νλ‘κ·Έλλ° κ°μ
- -
π I. μλ° κ°μ
μ΅κ·Ό μ»΄ν¨ν°λ μ°λ¦¬μκ² μΉμν PCλΆν°, μ€λ§νΈν°, νλΈλ¦Ώ λ±μΌλ‘ λ€μν΄μ‘μ΅λλ€. μ΄λ¬ν μ»΄ν¨ν° νλμ¨μ΄λ₯Ό μλμν€λ κ²μ μννΈμ¨μ΄(software) νΉμ νλ‘κ·Έλ¨(program)μ΄λΌκ³ λΆλ¦ λλ€. μ»΄ν¨ν°κ° μ€νν νλ‘κ·Έλ¨μ μμ±νλ μΈμ΄λ₯Ό νλ‘κ·Έλλ° μΈμ΄λΌκ³ ν©λλ€. νλ‘κ·Έλλ° μΈμ΄λ 0κ³Ό 1μΈ μ΄μ§μ λͺ λ Ήμ΄λ‘ ꡬμ±λ κΈ°κ³μ΄(machine language)λ‘λΆν° κ°κΈμ νννκΈ° μ¬μ΄ μμ§μ λλͺ¨λ κΈ°νΈλ₯Ό μ¬μ©ν μΈμ΄μΈ μ΄μ λΈλ¦¬μ΄(assembly language)λ‘ λ°μ νμ΅λλ€. CμΈμ΄μ κ°μ μ¬μ©μ μΉνμ μΈμ΄λ‘ μ§ννλ νλ‘κ·Έλλ° μΈμ΄λ νΈμμ±μ μΆκ΅¬νλ κ°μ²΄ μ§ν₯ μΈμ΄κΉμ§ λ°μ νμ΅λλ€.
μ°λ¦¬κ° μμΌλ‘ λ°°μΈ μλ°(JAVA)λ κ°μ²΄μ§ν₯μΈμ΄μ λνμ μΈ μΈμ΄μ λλ€.
π 1. μλ°μ μμ¬
1991λ , μ λ§μ΄ν¬λ‘μμ€ν μ€(SUN Microsystems)μ μ μμ€ κ³ μ¬λ§(James Gosling)μ μ€μ¬μΌλ‘ κ°μ μ νμ μ¬μ©ν νλ‘κ·Έλλ° μΈμ΄κ° κ°λ°λμμ΅λλ€. κΈ°μ‘΄ νλ‘κ·Έλλ° μΈμ΄μ λ¬Έμ μ μ 보μνλ νΉμ§μ κ°μ‘μ΅λλ€.
- λ€μ μ»΄νμΌνμ§ μμλ λ€λ₯Έ μμ€ν μμ μ¬μ©ν μ μλ νλ«νΌ(Platform)μ λ 립μ μΈ μΈμ΄μ λλ€.
- λ΄μ₯ν μμ€ν (Embedded System)μ μ ν©νκ² λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μ μ΅λλ€.
- C++ μΈμ΄λ₯Ό λͺ¨λΈλ‘ ν κ°μ²΄μ§ν₯μ νλ‘κ·Έλλ° μΈμ΄μ λλ€.
μ΄ μΈμ΄κ° λ°μ νμ¬ 1995λ SunWorld 95μμ μλ°(Java)λΌλ μ΄λ¦μΌλ‘ μλ‘μ΄ κΈ°μ μ λ°νλμκ³ , μΉ κΈ°λ° μμ© νλ‘κ·Έλ¨μμ λ§μ΄ μ¬μ©λκ² λμμ΅λλ€. 2009λ μλ μ€λΌν΄μ΄ μ λ§λν¬λ‘μμ€ν μ¦λ₯Ό μΈμνλ©΄μ μ€λΌν΄μμ μλ°λ₯Ό μ 곡νκ² λμμ΅λλ€.
π 2. μλ° κ°λ° λͺ©μ
- νλ«νΌ νΈνμ± λ¬Έμ μ ν΄κ²°
: μ¬μ»΄νμΌνμ§ μκ³ λ€λ₯Έ νλ«νΌμμ μ¬μ©κ°λ₯ν μΈμ΄κ° νμνμ΅λλ€. - νλ«νΌ λ
립μ μΈ μΈμ΄
: λͺ¨λ νλ«νΌμμ νΈνμ±μ κ°μ Έ, λ€νΈμν¬(μΉ)μ μ΅μ νν μΈμ΄κ° νμνμ΅λλ€. - λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μ κ³ λ€μν νλ«νΌμ κ°λ κ°μ μ νμ μ μ©
: μ μ λ©λͺ¨λ¦¬λ‘ μ¬μ©κ°λ₯ν λ΄μ₯ν μμ€ν μ μλ§μ μΈμ΄κ° νμνμ΅λλ€.
π II. μλ° νλ‘κ·Έλ¨μ μ€ν λ°©μ
π 1. κΈ°μ‘΄ μΈμ΄μ νλ«νΌ μ’ μμ±
κ°λ°μλ νλ‘κ·Έλλ° μΈμ΄ λ¬Έλ²μ λ§μΆμ΄ νλ‘κ·Έλ¨μ κΈ°μ΄ μ€κ³λμ κ°μ μμ€μ½λ(Source Code)λ₯Ό μμ±ν©λλ€. JAVA μΈμ΄λ§μ νΉμ§μ μν΄ νλ‘κ·Έλλ° μΈμ΄μ κΈ°μ΄μΈ CμΈμ΄λ‘ μμ±λ μμ€μ½λκ° μ€ννμΌμ΄ λλ κ³Όμ μ 보μ¬λλ¦¬κ² μ΅λλ€.
- κ°λ°μλ CμΈμ΄ λ¬Έλ²μ λ§μΆμ΄ νλ‘κ·Έλ¨ μμ€μ½λλ₯Ό μμ±ν©λλ€. μμ±λλ μμ€μ½λλ μ¬λμ΄ μμ보기 μ¬μ΄ κ³ κΈμΈμ΄λ‘ μμ±λ©λλ€.
- μ»΄ν¨ν°λ 0κ³Ό 1μΈ μ΄μ§μλ‘ λ λͺ λ Ήμ΄λ§ μμλ€μ μ μμ΅λλ€. CμΈμ΄λ‘ μμ±λ μμ€μ½λλ μ»΄νμΌλ¬(Compiler)λΌλ λ²μκΈ°μ μνμ¬ ν΄λΉνλ νλ«νΌμ΄ μ΄ν΄ν μ μλ κΈ°κ³μ΄ μ½λλ‘ λ³νλ©λλ€. μ΄λ κ² λ³νλ μ½λ νμΌμ μ€λΈμ νΈ νμΌμ΄λΌκ³ ν©λλ€.
- νλμ μμ±λ νλ‘κ·Έλ¨μ μν΄μλ μνμ νμν λͺ¨λ μ€λΈμ νΈ νμΌμ λͺ¨μμΌν©λλ€. μ΄ κ³Όμ μ λ§μ»€(Linker)μ μν΄ μ΄λ£¨μ΄μ§κ³ , λ§μ»€κ° λ§λ€μ΄μ€ νμΌμ μ€ννμΌμ΄λΌκ³ ν©λλ€.
2λ² κ³Όμ μμ μ»΄νμΌλ¬λ νλ‘κ·Έλ¨μ΄ μ€νλ λμμ μ»΄ν¨ν° CPUλ μ΄μ체μ μ μ’ μμ μΌλ‘ μμ€μ½λλ₯Ό λ²μν΄μ€λ€κ³ νμμ΅λλ€. λλ¬Έμ κΈ°μ‘΄μ μΈμ΄λ‘ μμ±λ νλ‘κ·Έλ¨μ νλ«νΌ μ’ μμ μ΄λΌλ λ¬Έμ λ₯Ό κ°μ§κ² λμμ΅λλ€.
π 2. μλ°μ νλ«νΌ λ 립μ±
μλ°(JAVA)λ λ€λ₯Έ μΈμ΄λ€κ³Ό λ€λ₯΄κ² μλ° κ°μ κΈ°κ³(JVM, Java Virtual Machine) λ§ μμλ€μ μ μλ λ°μ΄νΈ μ½λ(Byte Code)λ‘ μμ€μ½λλ₯Ό λ³νν©λλ€. μ΄ νμΌμ μ»΄ν¨ν°μ CPUμμ μ§μ μ€νλλ κ²μ΄ μλ JVMμ΄ μΈν°νλ¦¬ν° λ°©μμΌλ‘ μ€νμν¬ μ μμ΅λλ€. νλ‘κ·Έλ¨μ μ€νμν€κ³ μ νλ©΄ JVMμ΄ λ°μ΄νΈ μ½λλ₯Ό κ° μ΄μ체μ μ μλ§μ κΈ°κ³μ΄ μ½λλ‘ λ³νμν΅λλ€. μ΄λ₯Ό ν νμ¬ JVMμ΄ μ€μΉλ λͺ¨λ μ»΄ν¨ν°μμλ νλ«νΌ λ 립μ μΌλ‘ μ½λλ₯Ό μμ±ν μ μλλ‘ ν©λλ€.
* WORA (Write Once Run Anywhere)
- ν λ² μμ±λ μ½λλ λͺ¨λ νλ«νΌμμ λ°λ‘ μ€νλ¨
- κΈ°μ‘΄ μΈμ΄μ νλ«νΌ μ’ μμ±μ 극볡νμ¬, μ΄μ체μ λ νλμ¨μ΄μ κ΄κ³μμ΄ μλ° νλ‘κ·Έλ¨μ μ€νμν¬ μ μμ
- μλ°μμ€(.java)λ₯Ό μ»΄νμΌ ν λͺ©μ μ½λ(.class)λ₯Ό λ°μ΄νΈ μ½λ(byte code)λΌκ³ νλ©°
JVMμκ² ν΄μλμ΄ μ€νλλ―λ‘ μλ° μΈμ΄λ‘ μμ±λ μ½λλ€μ΄ νλ«νΌ λ 립μ±μ΄ κ°μ§κ² ν¨
* μλ° κ°μ κΈ°κ³(JVM, Java Virtual Machine)
- μλ° μ΄ν리μΌμ΄μ μ΄ μ€νλλ 곡κ°
- μλ° μ»΄νμΌλ¬κ° μμ±ν λ°μ΄νΈ μ½λλ₯Ό νμ¬ μ»΄ν¨ν°κ° μΈμν μ μλ λͺ λ ΉμΌλ‘ λ³ννμ¬ μ€νμν΅λλ€.
π 3. μλ°μ κ°λ° λ° μ€ν
* κ°λ°
- μλ° νλ‘κ·Έλ¨μ μ¬λ¬ μλ° μμ€μ½λ(.java)λ‘ λλμ΄ κ°λ°ν©λλ€.
- λ°μ΄νΈ μ½λλ₯Ό(.class)λ₯Ό νλμ μ€ν νμΌλ‘ λ¬Άλ λ§ν¬ κ³Όμ μ΄ μμ΅λλ€. μ΄ νΉμ§μΌλ‘ μΈνμ¬ μλ° νλ‘κ·Έλ¨μ μ μ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νμ¬ νλ‘κ·Έλ¨μ΄ λμνλλ‘ ν μ μμ΅λλ€.
* μ€ν
- main() λ©μλλ₯Ό κ°μ§ ν΄λμ€λΆν° μ€νμ΄ μμλ©λλ€.
- JAVAλ λ§ν¬ κ³Όμ μ΄ μλ λμ μ JVMμ΄ νμν λλ§λ€ λ€λ₯Έ λ°μ΄νΈ μ½λλ₯Ό λ‘λ©ν©λλ€.
π III. μλ° νλ«νΌ
π 1. μλ° API(Application Programming Interace)
μλ° API(Application Programming Interace)λ JDKμ ν¬ν¨λμ΄ μ£Όμ κΈ°λ₯μ 미리 ꡬνν΄λμ λΌμ΄λΈλ¬λ¦¬μ λλ€. κ°λ°μλ APIλ₯Ό μ΄μ©νμ¬ λ μ½κ³ λΉ λ₯΄κ² νλ‘κ·Έλ¨μ κ°λ°ν μ μμ΅λλ€.
π 2. μλ° νλ«νΌ
μλ° νλ«νΌ(Java Platform)μ νλ‘κ·Έλ¨μ΄ μ€νλλ νλμ¨μ΄μ μννΈμ¨μ΄ νκ²½μ λ§ν©λλ€. μλ° νλ«νΌμ JRE(Java Runtime Environment) λλ JDK(Java Development Kit)λ§ μ€μΉνμ¬λ ꡬμΆν μ μμ΅λλ€. JREλ μλ° μμ© νλ‘κ·Έλ¨μ΄ μ€νλ λ νμν μννΈμ¨μ΄λ€μΈ JVMκ³Ό μλ° APIκ° ν¬ν¨λμ΄ μΌλ° μ¬μ©μλ JREλ§ μμ΄λ μλ° νλ‘κ·Έλ¨μ μ€νμν¬ μ μμ΅λλ€. JDKλ μλ° κ°λ°μλ₯Ό μν μμ μ© μννΈμ¨μ΄λ‘ κ°λ°λꡬμ JREλ‘ κ΅¬μ±λμ΄ μμ΅λλ€.
π 3. μλ° λ°°ν¬ν
μλ°λ κ°λ° νκ²½μ λ°λΌ λ€μν λ°°ν¬νμ΄ μ 곡λ©λλ€.
- Java EE(Enterprise Editon) : κΈ°μ μ© λ°°ν¬ν, κΈ°μ μ© μμ© νλ‘κ·Έλ¨, μΉ μλ² μμ©νλ‘κ·Έλ¨ λ±μ νμν κ°λ° λꡬ λ° λΌμ΄λΈλ¬λ¦¬ μ 곡
- Java ME(Micro Editon) : λͺ¨λ°μΌμ© λ°°ν¬ν, μλ² λλ μ₯μΉμμ μ€νλλ μμ© νλ‘κ·Έλ¨ κ°λ°μ μ¬μ©
- Java SE(Standard Editon) : μλ° νμ€ λ°°ν¬ν
π 4. μλ° νλ‘κ·Έλ¨μ μ’ λ₯
- μλ° μμ© νλ‘κ·Έλ¨ (Java Application)
: λ 립μ μΌλ‘ μ€νλ μ μλ μΌλ° μμ© νλ‘κ·Έλ¨μ λ§ν©λλ€. - μλ° μ νλ¦Ώ (Java Applet)
: μΉ μλ²μμ μΉ ν΄λΌμ΄μΈνΈλ‘ μ μμ€λμ΄ μΉ λΈλΌμ°μ μμμ μ€ν΄μ€λλ νλ‘κ·Έλ¨ - μλ° μλΈλ¦Ώ (Java Servlet)
: μΉ μλ²μμ μ€νλλ μλ²μ© μλ° νλ‘κ·Έλ¨ - JSP (Java Server Page)
: HTML μμ μλ° μ½λλ₯Ό ν¬ν¨, μλΈλ¦ΏμΌλ‘ λ³νλμ΄ μ€νλ¨ - μλλ‘μ΄λ(Android) SDK
π 5. μλ°μ νΉμ§
μμΌλ‘ μ°λ¦¬κ° λ°°μλ³Ό μλ°μ ν° νΉμ§λ€μ λλ€.
- νλ«νΌ λ 립μ
- κ°μ²΄μ§ν₯
- ν΄λμ€λ‘ μΊ‘μν
- μ΄μ체μ μ λμμμ΄ μ체μ μΌλ‘ λ©ν°μ€λ λ μ§μ
- κ°λΉμ§ 컬λ μ
: νλ‘κ·Έλ¨ λ΄μμ μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬λ JVMμ΄ μλμΌλ‘ νμν©λλ€. - μμ νκ³ νλ‘κ·Έλ¨ μμ±μ΄ μ¬μ
: νμ 체νΉμ΄ μ격νκ³ λͺ μμ μΈ ν¬μΈν°μ κ°λ μ΄ μμ΅λλ€.
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] 05. ν΄λμ€μ λ©€λ² (0) | 2022.09.29 |
---|---|
[Java] 04. ν΄λμ€μ κ°μ²΄ (0) | 2022.09.28 |
[JAVA] # ν¬μΈν° VS μ°Έμ‘° μλ£ν (1) | 2022.09.23 |
[JAVA] 03. μλ° νλ‘κ·Έλ¨μ μλ£ν (1) | 2022.09.22 |
[JAVA] 02. μλ° νλ‘κ·Έλ¨μ κΈ°λ³Έ ꡬ쑰 (1) | 2022.09.22 |
μμ€ν κ³΅κ° κ°μ¬ν©λλ€