λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
JAVA/Java Programming

1μž₯ μžλ°” μ‹œμž‘ν•˜κΈ°

by soyλ―Έλ‹ˆ 2021. 9. 12.

1. μžλ°” νŠΉμ§•

1. 이식성이 높은 언어이닀.

  • μžλ°” μ‹€ν–‰ ν™˜κ²½(JRE)이 μ„€μΉ˜λ˜μ–΄ μžˆλŠ” λͺ¨λ“  μš΄μ˜μ²΄μ œμ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•˜λ‹€.

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

  • 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)μ΄λž€, ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” κΈ°λ²•μœΌλ‘œ λΆ€ν’ˆμ— ν•΄λ‹Ήν•˜λŠ” 객체듀을 λ¨Όμ € λ§Œλ“€κ³  이것듀을 ν•˜λ‚˜μ”© 쑰립 및 μ—°κ²°ν•΄μ„œ 전체 ν”„λ‘œκ·Έλž¨μ„ μ™„μ„±ν•˜λŠ” 기법이닀.
  • 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ 섀계도인 클래슀λ₯Ό λ¨Όμ € λ§Œλ“€κ³  객체와 객체λ₯Ό μ—°κ²°ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄ λ‚Έλ‹€. 아무리 μž‘μ€ ν”„λ‘œκ·Έλž¨μ΄μ–΄λ„ 객체λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©ν•œλ‹€.
  • μΊ‘μŠν™”, 상속, λ‹€ν˜•μ„±μ„ μ™„λ²½ν•˜κ²Œ μ§€μ›ν•œλ‹€.

3. ν•¨μˆ˜μ  μŠ€νƒ€μΌ 코딩을 μ§€μ›ν•œλ‹€.

  • λŒ€μš©λŸ‰ λ°μ΄ν„°μ˜ 병렬 μ²˜λ¦¬μ™€ 이벀트 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ— μ ν•©ν•˜λ‹€.
  • μžλ°” 8λΆ€ν„° λžŒλ‹€μ‹μ„ μ§€μ›ν•œλ‹€.
  • λžŒλ‹€μ‹μ„ μ‚¬μš©ν•˜λ©΄ μ»¬λ ‰μ…˜μ˜ μš”μ†Œλ₯Ό 필터링, 맀핑, 집계 μ²˜λ¦¬ν•˜λŠ”λ° μ‰¬μ›Œμ§€κ³  μ½”λ“œκ°€ 맀우 간결해진닀.

4. λ©”λͺ¨λ¦¬λ₯Ό μžλ™μœΌλ‘œ κ΄€λ¦¬ν•œλ‹€.

  • μžλ°”λŠ” κ°œλ°œμžκ°€ 직접 λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•  수 없도둝 μ„€κ³„λ˜μ–΄ 있고, λ©”λͺ¨λ¦¬λŠ” μžλ°”κ°€ 직접 κ΄€λ¦¬ν•œλ‹€.
  • 객체 생성 μ‹œ μžλ™μœΌλ‘œ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ μ°Ύμ•„μ„œ ν• λ‹Ήν•˜κ³  μ‚¬μš©μ΄ μ™„λ£Œλ˜λ©΄ Garbage Collector λ₯Ό μ‹€ν–‰μ‹œμΌœ μžλ™μœΌλ‘œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 객체λ₯Ό μ œκ±°μ‹œμΌœμ€€λ‹€.
  • λ”°λΌμ„œ, κ°œλ°œμžλŠ” λ©”λͺ¨λ¦¬ κ΄€λ¦¬μ˜ μˆ˜κ³ μŠ€λŸ¬μ›€μ„ 덜고 핡심 κΈ°λŠ₯ μ½”λ“œ μž‘μ„±μ— 집쀑할 수 μžˆλ‹€.

5. λ‹€μ–‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  수 μžˆλ‹€.

  • μžλ°”λŠ” λ‹€μ–‘ν•œ μš΄μ˜μ²΄μ œμ—μ„œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  수 μžˆλ‹€.
  • λ‹€μ–‘ν•œ μš΄μ˜μ²΄μ œμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” κ°œλ°œλ„κ΅¬μ™€ APIλ₯Ό λ¬Άμ–΄ μ—λ””μ…˜ ν˜•νƒœλ‘œ μ •μ˜ν•˜κ³  μžˆλ‹€.

6. λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€.

  • μžλ°”λŠ” μŠ€λ ˆλ“œ 생성 및 μ œμ–΄μ™€ κ΄€λ ¨λœ 라이브러리 API λ₯Ό μ œκ³΅ν•˜κ³  있기 λ•Œλ¬Έμ— μ‹€ν–‰λ˜λŠ” μš΄μ˜μ²΄μ œμ— 상관없이 λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€.

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

  • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 싀행될 λ•Œ λͺ¨λ“  객체가 μƒμ„±λ˜μ§€ μ•Šκ³  객체가 ν•„μš”ν•œ μ‹œμ μ— 클래슀λ₯Ό 동적 λ‘œλ”©ν•΄μ„œ 객체λ₯Ό μƒμ„±ν•œλ‹€.
  • μœ μ§€λ³΄μˆ˜ν•  λ•Œμ—λ„ ν•΄λ‹Ή 클래슀만 μˆ˜μ •ν•˜λ©΄ 되기 λ•Œλ¬Έμ— 전체 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ‹€μ‹œ 컴파일 ν•  ν•„μš”κ°€ μ—†λ‹€.

8. λ§‰κ°•ν•œ μ˜€ν”ˆμ†ŒμŠ€ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν’λΆ€ν•˜λ‹€.

  • μžλ°”λŠ” μ˜€ν”ˆμ†ŒμŠ€ 언어이기 λ•Œλ¬Έμ— 라이브러리 λ˜ν•œ μ˜€ν”ˆμ†ŒμŠ€κ°€ λ„˜μ³λ‚œλ‹€.

 

2. μžλ°” 가상 기계 (JVM)

  • μžλ°”λŠ” μ™„μ „ν•œ 기계어가 μ•„λ‹Œ 쀑간 λ‹¨κ³„μ˜ λ°”μ΄νŠΈ μ½”λ“œμ΄κΈ° λ•Œλ¬Έμ— 이λ₯Ό ν•΄μ„ν•˜κ³  μ‹€ν–‰ν•  수 μžˆλŠ” 운영체제 역할을 ν•˜λŠ” JVM이 ν•„μš”ν•˜λ‹€.
  • λ°”μ΄νŠΈ μ½”λ“œλŠ” λͺ¨λ“  JVM μ—μ„œ λ™μΌν•œ μ‹€ν–‰ κ²°κ³Όλ₯Ό 보μž₯ ν•œλ‹€. ( = λ°”μ΄νŠΈ μ½”λ“œλŠ” JVM에 독립적이닀.)
  • JVM은 μš΄μ˜μ²΄μ œμ— 쒅속적이닀. ( = JVM 은 μš΄μ˜μ²΄μ œμ— 맞게 μ„€μΉ˜λ˜μ–΄μ•Ό ν•œλ‹€.)

 

3. μžλ°” μ‹€ν–‰ ν™˜κ²½

  • JDK (μžλ°” 개발 도ꡬ) : JRE + μžλ°” 개발 도ꡬ (javac.exe 컴파일러 포함)
  • JRE (μžλ°” μ‹€ν–‰ ν™˜κ²½) : JVM + 라이브러리
  • ν”„λ‘œκ·Έλž¨ κ°œλ°œμ€ 된 μƒνƒœμ—μ„œ μ‹€ν–‰λ§Œ μ‹œν‚¬ 거라면 JRE만 μ‹€ν–‰ν•˜λ©΄ λœλ‹€.

 

4. μžλ°” ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 단계

  • .java (μžλ°” μ†ŒμŠ€ μ½”λ“œ) μž‘μ„±
  • 컴파일러 (javac.exe) μ‹€ν–‰
  • .class (λ°”μ΄νŠΈ μ½”λ“œ) 생성
  • jvm (java.exe) μ‹€ν–‰
  • jvm이 λ°”μ΄νŠΈ μ½”λ“œ νŒŒμΌμ„ λ©”λͺ¨λ¦¬μ— λ‘œλ“œν•˜κ³  κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­ν•œλ‹€.
  • main() λ©”μ†Œλ“œλ₯Ό μ°Ύμ•„ μ‹€ν–‰μ‹œν‚¨λ‹€.

 

5. μžλ°” ν”„λ‘œκ·Έλž¨ μ†ŒμŠ€

  • 클래슀 : ν•„λ“œ λ˜λŠ” λ©”μ†Œλ“œ(ν•¨μˆ˜)λ₯Ό ν¬ν•¨ν•˜λŠ” 블둝
  • λ©”μ†Œλ“œ : μ–΄λ–€ 일을 μ²˜λ¦¬ν•˜λŠ” 싀행문듀을 λͺ¨μ•„놓은 블둝
  • main() λ©”μ†Œλ“œ : public static void main(String[] args){} : μ‹€ν–‰ μ§„μž…μ , main() λ©”μ†Œλ“œ λ§ŒνΌμ€ μ—†μ–΄μ„œλŠ” μ•ˆλœλ‹€.

 

6. μ΄ν΄λ¦½μŠ€λž€? (Eclipse)

  • μžλ°” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜κΈ° μœ„ν•œ 톡합 개발 ν™˜κ²½(IDE) 을 μ œκ³΅ν•œλ‹€.
  • Workspace : μ΄ν΄λ¦½μŠ€μ—μ„œ μƒμ„±ν•œ ν”„λ‘œμ νŠΈκ°€ 기본적으둜 μ €μž₯λ˜λŠ” 디렉토리
  • .metadata : 이클립슀λ₯Ό μ‹€ν–‰ν•  λ•Œ μ μš©λ˜λŠ” 메타데이터λ₯Ό μ €μž₯ν•˜λŠ” 디렉토리, μ΄ν΄λ¦½μŠ€μ—μ„œ μ‚¬μš©ν•˜λ©΄μ„œ λ³€κ²½λ˜λŠ” 속성값듀은 .metadata에 기둝되기 λ•Œλ¬Έμ— λ™μΌν•œ workspaceμ—μ„œ 이클립슀λ₯Ό μž¬μ‹œμž‘ν•  경우 이전에 μž‘μ—…ν•œ ν™˜κ²½μœΌλ‘œ 볡원할 λͺ©μ μœΌλ‘œ μ‚¬μš©λœλ‹€. .metadataλ₯Ό κ°•μ œλ‘œ μ‚­μ œν•˜κ³  μž¬μ‹œμž‘ν•˜λ©΄ 이클립슀λ₯Ό 초기 μƒνƒœλ‘œ 되돌릴 수 μžˆλ‹€.

'JAVA > Java Programming' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JAVA] DAO, DTO, VO 정리  (0) 2023.09.16
5μž₯ μ°Έμ‘° νƒ€μž…  (0) 2021.09.13
4μž₯ 쑰건문과 반볡문  (0) 2021.09.12
3μž₯ μ—°μ‚°μž  (0) 2021.09.12
2μž₯ λ³€μˆ˜μ™€ νƒ€μž…  (0) 2021.09.12

λŒ“κΈ€