μƒˆμ†Œμ‹

Java

[Java] 07-1 μžλ°”μ˜ νŒ¨ν‚€μ§€μ™€ λͺ¨λ“ˆ

  • -

πŸ“Œ . μžλ°”μ˜ νŒ¨ν‚€μ§€μ™€ λͺ¨λ“ˆ

 

 

 κ°œλ°œμž λ³„λ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ‹€λ³΄λ©΄ 클래슀 이름이 κ°™μ•„μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ½”λ“œλ₯Ό 합쳐 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€λ₯Έ 개발자 μ½”λ“œμ˜ 클래슀 이름을 λ°”κΏ”μ•Όν•©λ‹ˆλ‹€. μžλ°”μ—μ„œλŠ” 이λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄ νŒ¨ν‚€μ§€(package)λΌλŠ” κ°œλ…μ„ λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ„œλ‘œ κ΄€λ ¨μžˆλŠ” μ½”λ“œλ₯Ό λ¬Άμ–΄μ„œ κ΄€λ¦¬ν•˜λŠ” νŒ¨ν‚€μ§€μ™€ JDK9 μ—…λ°μ΄νŠΈ 이후 μ‚¬μš©λ˜λŠ” λͺ¨λ“ˆμ— λŒ€ν•΄μ„œ λ°°μš°λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. νŒ¨ν‚€μ§€ μ„ μ–Έ 방식도 λ°°μ›Œλ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. 07-2 ν¬μŠ€νŠΈμ—μ„œλŠ” μžλ°”μ—μ„œ 자주 μ‚¬μš©λ˜λŠ” νŒ¨ν‚€μ§€λ“€μ˜ 사둀듀을 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

πŸ“Œ I. μžλ°” νŒ¨ν‚€μ§€

πŸ“š 1. νŒ¨ν‚€μ§€μ˜ κ°œλ… 및 ν•„μš”μ„±

 

  • μ„œλ‘œ κ΄€λ ¨λœ μ½”λ“œ(ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€) νŒŒμΌμ„ 묢은 것
  • 클래슀 이름 μ•žμ— νŒ¨ν‚€μ§€ 이름을 λΆ™μ—¬ 같은 μ΄λ¦„μ˜ 클래슀 파일 μ‚¬μš© κ°€λŠ₯
  • 클래슀λ₯Ό κΈ°λŠ₯λ³„λ‘œ λ¬Άμ–΄ 놓아 관리 λ˜λŠ” 접근을 μš©μ΄ν•˜κ²Œ 함

 

각 개발자 λ³„λ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ‹€λ³΄λ©΄ 같은 μ΄λ¦„μ˜ classλ₯Ό μ„ μ–Έν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 경우 각 클래슀λ₯Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ packageκ°€ ν•„μš”ν•©λ‹ˆλ‹€.


πŸ“š 2. μžλ°” νŒ¨ν‚€μ§€

 

μžλ°” νŒ¨ν‚€μ§€λŠ” μ„œλ‘œ κ΄€λ ¨λœ ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ»΄νŒŒμΌν•œ 파일둜 묢어놓은 디렉터리라고 μƒκ°ν•˜λ©΄ μ’‹μŠ΅λ‹ˆλ‹€.

  • νŒ¨ν‚€μ§€λŠ” κ³„μΈ΅μ μœΌλ‘œ ꡬ성
  • 각 계측을 λ„νŠΈ ( . ) 둜 κ΅¬λΆ„ν•˜μ—¬ κ΄€λ ¨λœ 클래슀 관리λ₯Ό μš©μ΄ν•˜κ²Œ 함
  • 클래슀 경둜λͺ…은 νŒ¨ν‚€μ§€ 이름과 클래슀 μ΄λ¦„μœΌλ‘œ ꡬ성
  • νŒ¨ν‚€μ§€λ³„ μ ‘κ·Ό μ œν•œ κ°€λŠ₯
  • μ„œλ‘œ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— λ™μΌν•œ μ΄λ¦„μ˜ 클래슀 생성 κ°€λŠ₯


πŸ“š 3. μžλ°” ν‘œμ€€ νŒ¨ν‚€μ§€

 

  • μžλ°” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ λͺ¨μŒ
  • 같은 경둜 상에 μœ„μΉ˜
  • μžλ°” ν‘œμ€€ νŒ¨ν‚€μ§€λŠ” μžλ°” 개발 ν™˜κ²½μ˜ 일뢀
  • JDK9 μ΄ν›„λŠ” jmods에 λͺ¨λ“ˆλ‘œ λΆ„ν• λ˜μ–΄ 제곡 (JDK9 μ΄μ „μ—λŠ” jar)

 


πŸ“Œ II. μžλ°” λͺ¨λ“ˆ

πŸ“š 1. μžλ°”μ˜ λͺ¨λ“ˆ(module)

 

  • μ—¬λŸ¬ νŒ¨ν‚€μ§€μ™€ 이미지 λ“±μ˜ μžμ›μ„ λͺ¨μ•„놓은 μ»¨ν…Œμ΄λ„ˆ
  • JDK9 이후 λΆ€ν„° μžλ°”μ˜ API의 λͺ¨λ“  ν΄λž˜μŠ€λ“€μ„ νŒ¨ν‚€μ§€ κΈ°λ°˜μ—μ„œ λͺ¨λ“ˆ 기반으둜 λ°”κΏ”λ‘ 
  • μ‘μš© ν”„λ‘œκ·Έλž¨ μ—­μ‹œ μ—¬λŸ¬ 개의 λͺ¨λ“ˆλ‘œ λΆ„ν•  κ°€λŠ₯
  • ν΄λž˜μŠ€κ°€ λͺ¨μ—¬ νŒ¨ν‚€μ§€, νŒ¨ν‚€μ§€κ°€ λͺ¨μ—¬ λͺ¨λ“ˆμ„ ꡬ성

πŸ“š 2. λͺ¨λ“ˆμ˜ κ°œλ…

 

 

  • JDK 9 μ΄μ „μ—λŠ” λͺ¨λ“  νŒ¨ν‚€μ§€λ“€μ΄ ν•˜λ‚˜μ˜ 파일둜 제곡
    => μΌλΆ€λΆ„λ§Œ ν•„μš”ν•΄λ„ λͺ¨λ‘ λ©”λͺ¨λ¦¬μ— λ‹΄μ•„μ•Όν•΄μ„œ λ©”λͺ¨λ¦¬ λ‚­λΉ„κ°€ μ‹¬ν–ˆμŒ
  • JDK 9 μ—…λ°μ΄νŠΈλ‘œ 각 νŒ¨ν‚€μ§€λ“€μ„ μ—°κ΄€λœ κ²ƒλ“€λ‘œ λͺ¨λ“ˆλ‘œ λ¬Άμ–΄ ν•„μš”ν•œ κ²ƒλ§Œ μ‚¬μš©
  • λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•œ μž„λ² λ””λ“œ ν™˜κ²½μ— μ΅œμ ν™”λœ μžλ°”μ˜ νŠΉμ§•

πŸ“š 3. μžλ°” API의 λͺ¨λ“ˆ 파일과 ν΄λž˜μŠ€λ“€

 

  • μžλ°” μ„€μΉ˜ 경둜의 jmods 디렉터리에 λͺ¨λ“ˆ 파일(.jmod)κ°€ 쑴재
  • λͺ¨λ“ˆ νŒŒμΌμ—λŠ” μžλ°” API νŒ¨ν‚€μ§€λ“€μ΄ λ“€μ–΄μžˆμŒ
  • 이 파일의 κ²½λ‘œλ“€μ΄ λ„νŠΈ( . )λ₯Ό 톡해 ν‘œν˜„λ  수 μžˆλŠ” 것

πŸ“š 4. μžλ°” 버전별 μ‹€ν–‰ ν™˜κ²½ 비ꡐ

 

  • μžλ°” μ‹€ν–‰ ν™˜κ²½(run time environment)은 μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ”λ° ν•„μš”ν•œ 제반 ν™˜κ²½
  • μžλ°” API ν΄λž˜μŠ€μ™€ μžλ°” 가상 기계(JVM)으둜 ꡬ성

  • JAVA 9 μ΄μ „μ—λŠ” μžλ°” API의 λͺ¨λ“  ν΄λž˜μŠ€λ“€μ€ rt.jarμ΄λΌλŠ” ν•˜λ‚˜μ˜ λ‹¨μΌμ²΄λ‘œ ꡬ성
  • JVM은 ν•„μš”ν•œ 클래슀 νŒŒμΌμ„ rt.jar 전체λ₯Ό μ„€μΉ˜ν•΄μ„œ λ‘œλ”©ν•˜κ³  μ‹€ν–‰

  • JAVA 9 μ΄ν›„μžλ°” APIλ₯Ό λ§Žμ€ 수의 λͺ¨λ“ˆλ‘œ λΆ„ν• 
  • μ»΄νŒŒμΌμ‹œ ν•„μš”ν•œ λͺ¨λ“ˆλ§Œ μ‘°λ¦½ν•˜μ—¬ ꡬ성
  • ν•„μš”ν•œ λͺ¨λ“ˆλ§Œμ„ λ¬Άμ–΄ modules νŒŒμΌμ„ λ§Œλ“€ μˆ˜λ„ 있음 (μ»€μŠ€ν…€ JRE)

πŸ“š 5. μ£Όμš” νŒ¨ν‚€μ§€λ“€

 

 μžλ°” μ„€μΉ˜μ‹œ μžλ°” 개발 도ꡬ인 JDK(Java Develope Kit)κ°€ μ„€μΉ˜λ˜λ©΄μ„œ μ΄κ³³μ—λŠ” κ°œλ°œμžκ°€ μ‚¬μš©ν•˜λŠ” λ§Žμ€ ν΄λž˜μŠ€λ“€μ΄ νŒ¨ν‚€μ§€μ— λ‹΄κΈ°κ³ , λ‹€μ‹œ λͺ¨λ“ˆμ— 담겨 μ œκ³΅λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μžλ°”μ—μ„œ μ œκ³΅λ˜λŠ” κΈ°λ³Έ ν΄λž˜μŠ€λ“€μ„ μžλ°” API라고 ν•©λ‹ˆλ‹€. JDK의 ν‘œμ€€ νŒ¨ν‚€μ§€λŠ” λͺ¨λ“ˆλ‘œ λ‚˜λˆ„μ–΄μ Έ JDKλ₯Ό μ„€μΉ˜ν•œ 디렉토리 λ°‘μ˜ jmods 디렉터리에 담겨 μžˆμŠ΅λ‹ˆλ‹€.

 

(1) java.base λͺ¨λ“ˆ

 

  • java.lang : λ¬Έμžμ—΄, μˆ˜ν•™, ν‘œμ€€ μž…μΆœλ ₯ λ“±μ˜ 기본적인 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ 제곡 / import λΆˆν•„μš”
  • java.util : λ‚ μ§œ, μ‹œκ°„, 벑터, ν•΄μ‹œλ§΅ λ“±μ˜ 일반 μœ ν‹Έλ¦¬ν‹° 제곡
  • java.io : μž…μΆœλ ₯ 지원

 

(2) java.desktop λͺ¨λ“ˆ

 

  • java.awt : 기본적인 GUI
  • java.swing : 좔가적인 GUI

μžλ°” API에 λŒ€ν•œ 곡식 λ¬Έμ„œλŠ” λ‹€μŒμ˜ μ£Όμ†Œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

https://docs.oracle.com/en/java/javase/11/

 

JDK 11 Documentation - Home

The documentation for JDK 11 includes developer guides, API documentation, and release notes.

docs.oracle.com


πŸ“Œ III. νŒ¨ν‚€μ§€ ꡬ성과 μ‚¬μš©

πŸ“š 1. νŒ¨ν‚€μ§€μ— ν¬ν•¨λœ 클래슀의 μ‚¬μš© 방법

(1) ν•„μš”μ‹œ νŒ¨ν‚€μ§€λͺ…을 ν¬ν•¨ν•œ 클래슀 이름 μ‚¬μš©

java.util.Scanner s;
s = new java.util.Scanner(System.in);

 

  • μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μ—μ„œ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ˜ 클래슀λ₯Ό μ‚¬μš©ν•˜κ³ μžν•˜λ©΄ νŒ¨ν‚€μ§€λͺ…을 ν¬ν•¨ν•˜λŠ” κ²½λ‘œκ°€ ν•„μš”
  • java.utilμ΄λΌλŠ” 경둜λ₯Ό 톡해 Scanner ν΄λž˜μŠ€μ— μ ‘κ·Ό

 

(2) μ†ŒμŠ€ 맨 μ•žμ—  import 선언문을 μ‚¬μš©

import java.util.Scanner;

Scanner s;
s = new Scanner(System.in);

 

  • import 문을 μ‚¬μš©ν•˜λ©΄ 이후 νŒ¨ν‚€μ§€ 경둜λ₯Ό μƒλž΅ν•˜κ³  클래슀 μ΄λ¦„λ§ŒμœΌλ‘œ μ‘°μž‘ κ°€λŠ₯
  • import νŒ¨ν‚€μ§€.클래슀; ν˜•μ‹μœΌλ‘œ μ„ μ–Έ

πŸ“š 2. import 문을 μ΄μš©ν•œ μžλ°” νŒ¨ν‚€μ§€ μ‚¬μš©

(1) import <νŒ¨ν‚€μ§€κ²½λ‘œ.클래슀λͺ…>

 

  • μ§€μ •λœ νŒ¨ν‚€μ§€ κ²½λ‘œμ— ν¬ν•¨λ˜μ–΄ μžˆλŠ” 클래슀 쀑 λͺ…μ‹œλœ 클래슀만 κ°€μ Έμ˜΄
  • [ctrl] + [shift] + O 둜 λΉ λ₯΄κ²Œ import 문을 μž‘μ„±ν•  수 있음
import java.util.Scanner;

 

(2) import <νŒ¨ν‚€μ§€κ²½λ‘œ.*>

 

  • μ§€μ •λœ νŒ¨ν‚€μ§€ κ²½λ‘œμ— ν¬ν•¨λœ λͺ¨λ“  ν΄λž˜μŠ€λ“€μ„ κ°€μ Έμ˜΄
  • ν•˜μœ„ νŒ¨ν‚€μ§€λŠ” κ°€μ Έμ˜€μ§€ μ•ŠμŒμ— 주의
import java.util.*;

πŸ“š 3. νŒ¨ν‚€μ§€ μ„ μ–Έ

 

  • 주석을 μ œμ™Έν•œ μ†ŒμŠ€ μ½”λ“œ 맨 μ•žμ— μ„ μ–Έ
  • νŒ¨ν‚€μ§€ λͺ…은 κ³„μΈ΅μ μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ 있으며 .으둜 ꡬ뢄됨
package νŒ¨ν‚€μ§€λͺ…;

πŸ“š 4. λ””ν΄νŠΈ νŒ¨ν‚€μ§€ (default package)

 

  • package 선언문이 μ—†λŠ” μ†ŒμŠ€
  • ν˜„λŒ€ 디렉터리에 μœ„μΉ˜ν•¨

 

 

 

Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.