[JAVA] 1. μžλ°”

2022. 3. 30. 16:42ㆍJAVA/μžλ°”μ˜ 정석

728x90

μ½”λ”©ν…ŒμŠ€νŠΈ 문제λ₯Ό ν’€λ©΄μ„œ λ‚œ μžλ°”μ˜ '자'도 λͺ¨λ₯Έλ‹€κ³  생각이 λ“€μ—ˆκ³ , κ³΅λΆ€μ˜ ν•„μš”μ„±μ„ λŠκΌˆλ‹€..

그리고 μ‹ μž…μΌμˆ˜λ‘ κΈ°λ³ΈκΈ°κ°€ νƒ„νƒ„ν•œκ²Œ μ’‹μ§€μ•Šμ„κΉŒ μ‹Άμ–΄μ„œ λ‹€μ‹œν•œλ²ˆ λ³΅μŠ΅λ„ ν•˜κ³ , λ‚΄κ°€ μ•Œμ§€λ§Œ μ œλŒ€λ‘œ μ‚¬μš©ν•˜μ§€ λͺ»ν•˜λŠ” Streamκ³Ό λžŒλ‹€, 지넀릭 λ“± 도 μ œλŒ€λ‘œ μ•ŒκΈ° μœ„ν•΄μ„œ 일단 μ‹œμž‘ν•΄λ³΄λ €κ³  ν•œλ‹€. 

 

ν‡΄κ·Όν•˜κ³  ν•˜λ €λ‹ˆκΉŒ μ‹œκ°„μ€ κ½€λ‚˜ 걸릴것 같은데 포기만 μ•ˆν•˜λ©΄ λœλ‹€κ³  μƒκ°ν•œλ‹€..! 

μ•„λ¬΄νŠΌ μžλ°” 곡뢀 μ‹œμž‘ πŸ˜‚

 

 

1️⃣ μžλ°”λž€? Java Programming Language 

λ‚˜λ¦„ 컴곡을 μ‘Έμ—…ν•˜κ³ μ„œ μžλ°”λž€? 이러고 μžˆμœΌλ‹ˆκΉŒ μ†”μ§νžˆ λΆ€λ„λŸ½λ‹€..

ν•˜μ§€λ§Œ 이왕 μ‹œμž‘ν•œκ±° μžλ°”λž€?λΆ€ν„° μ‹œμž‘ν•˜λ©΄ μ–΄λ– ν•œκ°€? 

λ°°μ›€μ—λŠ” λΆ€λ„λŸ¬μ›€μ΄ μ—†λ‹€ν–ˆλ‹€. 

 

μžλ°”λž€ 썬 마이크둜 μ‹œμŠ€ν…œμ¦ˆμ—μ„œ κ°œλ°œν•˜μ—¬ 1996λ…„ 1월에 κ³΅μ‹μ μœΌλ‘œ λ°œν‘œν•œ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° 언어이닀. 

μžλ°”μ˜ κ°€μž₯ μ€‘μš”ν•œ νŠΉμ§•μ€ μš΄μ˜μ²΄μ œμ— λ…λ¦½μ μ΄λΌλŠ” 것이닀.

μžλ°”λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ€ 운영체제의 μ’…λ₯˜μ— 관계없이 싀행이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— μš΄μ˜μ²΄μ œμ— 따라 ν”„λ‘œκ·Έλž¨μ„ μ „ν˜€ λ³€κ²½ν•˜μ§€ μ•Šκ³ λ„ 싀행이 κ°€λŠ₯ν•˜λ‹€. 

 

μ΄λŸ¬ν•œ μž₯점으둜 인해 μžλ°”λŠ” λ‹€μ–‘ν•œ κΈ°μ’…μ˜ 컴퓨터와 μš΄μ˜μ²΄μ œκ°€ κ³΅μ‘΄ν•˜λŠ” 인터넷 ν™˜κ²½μ— μ ν•©ν•œ μ–Έμ–΄λ‘œμ¨ μΈν„°λ„·μ˜ λ°œμ „κ³Ό ν•¨κ»˜ λ§Žμ€ μ‚¬μš©μžμΈ΅μ„ 확보할 수 μžˆμ—ˆλ‹€. 

 

 

2️⃣ μžλ°”μ–Έμ–΄μ˜ νŠΉμ§• 

 

- μš΄μ˜μ²΄μ œμ— 독립적이닀. 

μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μ€ μš΄μ˜μ²΄μ œλ‚˜ ν•˜λ“œμ›¨μ–΄κ°€ μ•„λ‹Œ JVMν•˜κ³ λ§Œ ν†΅μ‹ ν•˜κ³  JVM이 μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μœΌλ‘œλΆ€ν„° 전달받은 λͺ…령을 ν•΄λ‹Ή μš΄μ˜μ²΄μ œκ°€ 이해할 수 μžˆλ„λ‘ λ³€ν™˜ν•˜μ—¬ μ „λ‹¬ν•œλ‹€. 

 

- 객체지ν–₯언어이닀. 

상속, μΊ‘μŠν™”, λ‹€ν˜•μ„±μ΄ 잘 적용된 μˆœμˆ˜ν•œ 객체지ν–₯ 언어이닀. 

 

- 비ꡐ적 배우기 쉽닀.

 

- μžλ™ λ©”λͺ¨λ¦¬ 관리 Garbage Collection 

μžλ°”λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©΄ 가비지 컬렉터가 μžλ™μ μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό 관리해주기 λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ©”λͺ¨λ¦¬λ₯Ό λ”°λ‘œ κ΄€λ¦¬ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

 

- λ„€νŠΈμ›Œν¬μ™€ λΆ„μ‚°μ²˜λ¦¬λ₯Ό μ§€μ›ν•œλ‹€. 

 

- λ©€ν‹°μ“°λ ˆλ“œλ₯Ό μ§€μ›ν•œλ‹€.

 

- 동적 λ‘œλ”©μ„ μ§€μ›ν•œλ‹€. 

μžλ°”λŠ” 동적 λ‘œλ”©μ„ μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— μ‹€ν–‰ μ‹œμ— λͺ¨λ“  ν΄λž˜μŠ€κ°€ λ‘œλ”©λ˜μ§€ μ•Šκ³  ν•„μš”ν•œ μ‹œμ μ— 클래슀λ₯Ό λ‘œλ”©ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. 

 

 

3️⃣ JVM(Java Virtual Machine)

JVM은 Java Virtual Machine으둜 μžλ°”λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ 가상기계라고 ν•  수 μžˆλ‹€.

μžλ°”λ‘œ μž‘μ„±λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λͺ¨λ‘ 이 가상 컴퓨터(JVM)μ—μ„œλ§Œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹€ν–‰λ˜κΈ° μœ„ν•΄μ„œλŠ” JVM이 λ°˜λ“œμ‹œ ν•„μš”ν•˜λ‹€. 

 

Java μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ JVMν•˜κ³ λ§Œ μƒν˜Έμž‘μš©ν•˜κΈ° λ•Œλ¬Έμ— OS와 ν•˜λ“œμ›¨μ–΄μ— 독립적이라 λ‹€λ₯Έ OSμ—μ„œλ„ ν”„λ‘œκ·Έλž¨μ˜ 변경없이 싀행이 κ°€λŠ₯ν•˜λ‹€.

근데 JVM이 OS에 쒅속적이기 λ•Œλ¬Έμ— ν•΄λ‹Ή OSμ—μ„œ μ‹€ν–‰κ°€λŠ₯ν•œ JVM이 ν•„μš”ν•˜λ‹€. 

 

 

 

4️⃣ JDK (Java Development Kit) 

μžλ°”λ‘œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¨Όμ € JDKλ₯Ό μ„€μΉ˜ν•΄μ•„ν•œλ‹€. 

JDK둜 μ„€μΉ˜ν•˜λ©΄, μžλ°”κ°€μƒλ¨Έμ‹  JVMκ³Ό μžλ°” 클래슀 λΌμ΄λΈŒλŸ¬λ¦¬μ™Έμ— μžλ°”λ₯Ό κ°œλ°œν•˜λŠ”λ° ν•„μš”ν•œ ν”„λ‘œκ·Έλž¨λ“€μ΄ μ„€μΉ˜λœλ‹€. 

 

JDK μ„€μΉ˜κ°€ λλ‚˜λ©΄ μ„€μΉ˜λœ λ””λ ‰ν† λ¦¬μ˜ bin 디렉토리λ₯Ό path에 μΆ”κ°€ν•΄μ€˜μ•Όν•œλ‹€. 

이 λ””λ ‰ν† λ¦¬μ—λŠ” μžλ°”λ‘œ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ”λ° ν•„μš”ν•œ μ‹€ν–‰νŒŒμΌλ“€μ΄ λ“€μ–΄μžˆλ‹€. 

 

pathλŠ” OSκ°€ 파일의 μœ„μΉ˜λ₯Ό νŒŒμ•…ν•˜λŠ”λ° μ‚¬μš©ν•˜λŠ” 경둜둜 path에 디렉토리λ₯Ό λ“±λ‘ν•˜λ©΄ ν•΄λ‹Ή 디렉토리에 ν¬ν•¨λœ νŒŒμΌμ„ 파일 κ²½λ‘œμ—†μ΄ 파일 μ΄λ¦„λ§ŒμœΌλ‘œλ„ μ‚¬μš©ν•  수 있게 ν•œλ‹€. 

 

bin 디렉토리에 μžˆλŠ” μ‹€ν–‰νŒŒμΌ 

-> javac.exe : μžλ°” 컴파일러, μžλ°” μ†ŒμŠ€μ½”λ“œλ₯Ό λ°”μ΄νŠΈμ½”λ“œλ‘œ μ»΄νŒŒμΌν•œλ‹€. 

java.exe : μžλ°” 인터프리터, μ»΄νŒŒμΌλŸ¬κ°€ μƒμ„±ν•œ λ°”μ΄νŠΈμ½”λ“œλ₯Ό ν•΄μ„ν•˜κ³  μ‹€ν–‰ν•œλ‹€.

javap.exe : μ—­μ–΄μ…ˆλΈ”λŸ¬, 컴파일된 ν΄λž˜μŠ€νŒŒμΌμ„ μ›λž˜μ˜ μ†ŒμŠ€λ‘œ λ³€ν™˜ν•œλ‹€. 

jar.exe : μ••μΆ• ν”„λ‘œκ·Έλž¨, 클래슀파일과 ν”„λ‘œκ·Έλž¨μ˜ 싀행에 κ΄€λ ¨λœ νŒŒμΌμ„ ν•˜λ‚˜μ˜ jar파일둜 μ••μΆ•ν•˜κ±°λ‚˜ μ••μΆ•ν•΄μ œν•œλ‹€. 

 

 

5️⃣ μžλ°”λ‘œ ν”„λ‘œκ·Έλž¨ μž‘μ„±ν•˜κΈ° 

 

Hello.java -> javac.exe 컴파일 -> Hello.class 생성 -> java.exe μ‹€ν–‰ -> "Hello World" 좜λ ₯ 

 

μžλ°” 컴파일러 javac.exeλ₯Ό μ‚¬μš©ν•΄μ„œ μ†ŒμŠ€νŒŒμΌ Hello.java둜 λΆ€ν„° 클래슀파일 Hello.classλ₯Ό μƒμ„±ν•΄μ•Όν•œλ‹€. 

κ·Έ λ‹€μŒμ— μžλ°” 인터프리터 java.exe둜 μ‹€ν–‰ν•œλ‹€. 

 

 

 

728x90

'JAVA > μžλ°”μ˜ 정석' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JAVA] 7. 반볡문  (0) 2022.04.06
[JAVA] 6. 쑰건문  (0) 2022.04.05
[JAVA] 4. μ—°μ‚°μžoperator  (0) 2022.04.04
[JAVA] 3. 진법  (0) 2022.04.01
[JAVA] 2. λ³€μˆ˜ (Variable)  (0) 2022.03.31