관리 메뉴

Partially Committed

0. JAVA λž€? λ³Έλ¬Έ

πŸ’» Study !/JAVA

0. JAVA λž€?

WonderJay 2022. 7. 4. 23:45
728x90
λ°˜μ‘ν˜•
SMALL

 

  JAVA λŠ” Sun Microsystems, Inc. μ—μ„œ κ°œλ°œν•œ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄λ‘œ, κ°€μž₯ μ€‘μš”ν•œ νŠΉμ§•μ€ OS 에 λ…λ¦½μ μ΄λΌλŠ” 것이닀. κ·ΈλŸ¬λ―€λ‘œ μžλ°” ν”„λ‘œκ·Έλž¨μ€ OS 의 μ’…λ₯˜μ— 상관없이 싀행이 κ°€λŠ₯ν•˜λ‹€. μ΄λŠ” λ‹€μ–‘ν•œ OS κ°€ μ‘΄μž¬ν•˜λŠ” 인터넷 μƒμ—μ„œ μ ν•©ν•œ μ–Έμ–΄μ˜ νŠΉμ§•μœΌλ‘œ, λ§Žμ€ μ‚¬μš©μžλ₯Ό ν™•λ³΄ν•˜λ©° μ„±μž₯ν•΄μ™”μœΌλ©° 객체지ν–₯κ°œλ…κ³Ό 기쑴에 μ‚¬μš©ν•˜λ˜ λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄μ˜ μž₯점을 적극적으둜 μ±„νƒν•˜μ—¬ 쉽고 κ°„κ²°ν•˜κ²Œ ν”„λ‘œκ·Έλž˜λ°μ΄ κ°€λŠ₯ν•˜λ„λ‘ ν•˜μ˜€λ‹€.  λ‹€μ–‘ν•œ Java API κ°€ 있으며 ν˜„μž¬κΉŒμ§€λ„ κ³„μ†ν•΄μ„œ μ—…λ°μ΄νŠΈλ˜κ³  μžˆλ‹€. 

 


  JAVA 의 νŠΉμ§•

  • μš΄μ˜μ²΄μ œμ— 독립적
    :  JVM(Java Virtual Machine) 에 μ˜ν•΄ OS 에 λ…λ¦½μ μœΌλ‘œ 싀행이 κ°€λŠ₯ν•˜λ‹€. μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μ€ 였직 JVM 와 ν†΅μ‹ ν•˜λ©° JVM 이 OS 에 μ‚¬μš©μžμ˜ λͺ…령을 λ³€ν™˜/μ „λ‹¬ν•œλ‹€. JAVA Program 은 OS 에 λ…λ¦½μ μ΄μ§€λ§Œ JVM 은 OS 에 쒅속적이기 λ•Œλ¬Έμ— μ—¬λŸ¬ OS 에 ν˜Έν™˜λ˜λŠ” λ‹€λ₯Έ λ²„μ „μ˜ JVM λ₯Ό μ œκ³΅ν•˜κ³  μžˆλ‹€. 이와 같이 JAVA program 은 OS/HW 에 관계없이  μ‹€ν–‰ κ°€λŠ₯ν•œλ°, 이λ₯Ό "Write once, run anywhere" 이라고 ν‘œν˜„ν•œλ‹€κ³  ν•œλ‹€.

  • 객체지ν–₯μ–Έμ–΄(Object - oriented programming language)
    :  OOP 의 λŒ€ν‘œμ μΈ νŠΉμ§•μΈ 상속, μΊ‘μŠν™”, λ‹€ν˜•μ„±μ΄ 잘 μ μš©λ˜μ–΄μžˆλ‹€.

  • μžλ™ λ©”λͺ¨λ¦¬ 관리(Garbage Collection)
    :  가비지 컬렉터(Garbage Collector) κ°€ λ©”λͺ¨λ¦¬λ₯Ό μžλ™μœΌλ‘œ κ΄€λ¦¬ν•˜κΈ° λ•Œλ¬Έμ—, μ‚¬μš©μžκ°€ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ή/λ°˜ν™˜ν•˜λŠ” 일을 μˆ˜λ™μ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

  • λ„€νŠΈμ›Œν¬ λΆ„μ‚°μ²˜λ¦¬
    :  λ‹€μ–‘ν•œ λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ° 라이브러리(Java API)κ°€ μ‘΄μž¬ν•΄μ„œ λ„€νŠΈμ›Œν¬ κ΄€λ ¨ ν”„λ‘œκ·Έλž¨ 개발이 μš©μ΄ν•˜λ‹€.
  • λ©€ν‹° μ“°λ ˆλ“œ
    :  보톡 λ©€ν‹° μ“°λ ˆλ“œλŠ” OS 에 λ”°λΌμ„œ κ΅¬ν˜„/μ²˜λ¦¬λ°©μ‹μ΄ λ‹€λ₯΄μ§€λ§Œ JAVA μ—μ„œλŠ” μ‹œμŠ€ν…œκ³Ό 관계없이 κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ©°, κ΄€λ ¨ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ œκ³΅λ˜μ–΄ κ΅¬ν˜„μ΄ μš©μ΄ν•˜λ‹€. 그리고 JAVA Interpreter κ°€ μ—¬λŸ¬ μ“°λ ˆλ“œμ— λŒ€ν•œ scheduling 을 λ‹΄λ‹Ήν•œλ‹€.
  • 동적 λ‘œλ”©(Dynamic Loading)
    : 보톡 Java Application 은 μ—¬λŸ¬ 개의 클래슀둜 κ΅¬μ„±λ˜μ–΄ μžˆλŠ”λ°, JAVA λŠ” Dynamic Loading 을 μ§€μ›ν•˜λ―€λ‘œ μ‹€ν–‰ μ‹œ λͺ¨λ“  class κ°€ loading λ˜μ§€ μ•Šκ³ , ν•„μš”ν•œ μ‹œμ μ— 각각의 class λ₯Ό loading ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€. λ˜ν•œ 일뢀 class κ°€ λ³€κ²½λ˜μ–΄λ„ 전체 Application 을 λ‹€μ‹œ compile ν•˜μ§€ μ•Šμ•„λ„ 되며, application 의 λ³€κ²½ 사항이 λ°œμƒν•œλ‹€κ³  해도 처리 μž‘μ—…μ΄ 적은 νŽΈμ΄λ‹€.

JVM(Java Virtual Machine)

  JAVA λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ 가상 머신인 JVM 은 JAVA κ°€ OS/HW 에 λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•  수 μžˆκ²Œλ” μ§€μ›ν•œλ‹€. 일반적으둜 λ‹€λ₯Έ μ–Έμ–΄λ‘œ μž‘μ„±λœ application 은 program 이 OS 만 κ±°μ³μ„œ HW 둜 μ „λ‹¬λ˜μ§€λ§Œ JAVA application 은 JVM 을 거치고, μ΄λ•Œ HW 에 λ§žλ„λ‘ μ™„μ „νžˆ 컴파일 λ˜μ§€ μ•Šκ³  μ‹€ν–‰ ν•  λ•Œ Interpret λ˜λ―€λ‘œ 속도가 λŠλ¦¬λ‹€. 컴파일된 μžλ°” μ½”λ“œ(λ°”μ΄νŠΈμ½”λ“œ)λ₯Ό κΈ°κ³„μ–΄λ‘œ λ°”λ‘œ λ°”κΏ”μ£ΌλŠ” JTT Compiler 와 ν–₯μƒλœ optimazation κΈ°μˆ μ— μ˜ν•΄ μ†λ„μ˜ μš”μ¦˜μ—λŠ” μ†λ„μ˜ 격차가 크게 μ€„μ–΄λ“€μ—ˆλ‹€κ³  ν•œλ‹€.

 

  OS 에 쒅속적인 일반적인 Application 은 OS κ°€ λ°”λ€Œλ©΄ 이에 λ§žμΆ”μ–΄μ„œ Program 을 μˆ˜μ •ν•΄μ•Ό ν•˜μ§€λ§Œ Java application 은 였직 JVM 와 ν†΅μ‹ ν•˜κΈ° λ•Œλ¬Έμ— OS/HW 에 λ…λ¦½μ μœΌλ‘œ 싀행이 κ°€λŠ₯ν•˜λ‹€. ν•˜μ§€λ§Œ JVM 은 OS 에 μ’…μ†μ μ΄λ―€λ‘œ, OS 에 λ§žμΆ”μ–΄μ„œ JVM 을 ꡬ비해야 ν•œλ‹€. 

 

JAVA SE(Java Platform, Standard Edition)

  μžλ°”μ˜ ν‘œμ€€μ•ˆμœΌλ‘œ, 문법적인 ꡬ성와 같은 것을 μ •μ˜ν•˜κ³  μžˆλŠ” μ†Œν”„νŠΈμ›¨μ–΄μ˜ 섀계도(ν˜Ήμ€ specification)이닀.

 

JDK(Java Development Kit)

  Java SE 에 λ”°λΌμ„œ λ§Œλ“€μ–΄μ§„ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ, Java ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•΄μ„œ JDK λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•œλ‹€. JDK λ₯Ό μ„€μΉ˜ν•˜λ©΄ JVM κ³Ό JAVA  API 및 기타 μ—¬λŸ¬κ°€μ§€ ν”„λ‘œκ·Έλž¨λ“€μ΄ μ„€μΉ˜λœλ‹€.

 

  JDK 의 bin 디렉토리에 μžˆλŠ” javac.exe λŠ” java compiler 으둜, java source code λ₯Ό byte code 둜 compile ν•œλ‹€.

  java.exe λŠ” java interpreter 으둜 compiler κ°€ μƒμ„±ν•œ byte code λ₯Ό 해석/μ‹€ν–‰ν•œλ‹€.

  javap.exe λŠ” μ—­μ–΄μ…ˆλΈ”λŸ¬λ‘œ, compile 된 class file 을 μ›λž˜ source 둜 λ³€ν™˜ν•œλ‹€.

  javadoc.exe λŠ” μžλ™ λ¬Έμ„œ μƒμ„±κΈ°λ‘œ source code λ‚΄ 주석을 μ΄μš©ν•˜μ—¬ JAVA API λ¬Έμ„œμ™€ 같은 ν˜•μ‹μ˜ λ¬Έμ„œλ₯Ό μžλ™ μƒμ„±ν•œλ‹€.

  jar.exe λŠ” μ••μΆ• ν”„λ‘œκ·Έλž¨μœΌλ‘œ 클래슀 파일 및 ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ κ΄€λ ¨ νŒŒμΌλ“€μ„ .jar 파일둜 μ••μΆ•ν•˜κ±°λ‚˜ μ••μΆ• ν•΄μ œν•œλ‹€.

 

JRE(Java Runtime Environment)

  μžλ°”κ°€ μ‹€μ œλ‘œ λ™μž‘ν•  λ•Œ ν•„μš”ν•œ JVM, 라이브러리, 각쒅 νŒŒμΌλ“€μ΄ ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

 

 


References

https://opentutorials.org/course/1223/4551

 

μ–Έμ–΄μ†Œκ°œ - μƒν™œμ½”λ”©

Java의 역사 1995λ…„ μžλ°”μ˜ 아버지라고 λΆˆλ¦¬λŠ” μ œμž„μŠ€ 고슬링과 그의 λ™λ£Œλ“€μ— μ˜ν•΄μ„œ μ‹œμž‘λœ ν”„λ‘œμ νŠΈλ‹€. JavaλŠ” μ›λž˜ κ°€μ „μ œν’ˆμ„ μ œμ–΄ν•˜κΈ° μœ„ν•œ μ–Έμ–΄λ‘œ κ³ μ•ˆλ˜μ—ˆμ§€λ§Œ μ›Ήμ˜ λ“±μž₯으둜 μ—„μ²­λ‚œ 성곡

opentutorials.org

http://www.yes24.com/Product/Goods/24259565

 

Java의 정석 - YES24

졜근 7λ…„λ™μ•ˆ μžλ°” λΆ„μ•Όμ˜ 베슀트 μ…€λŸ¬ 1μœ„λ₯Ό μ§€μΌœμ˜¨ `μžλ°”μ˜ 정석`의 μ΅œμ‹ νŒ. μ €μžκ°€ μΉ΄νŽ˜μ—μ„œ 12λ…„κ°„ 직접 λ…μžλ“€μ—κ²Œ 닡변을 ν•΄μ˜€λ©΄μ„œ μ΄ˆλ³΄μžκ°€ μ–΄λ €μ›Œν•˜λŠ” 뢀뢄을 잘 νŒŒμ•…ν•˜κ³  μ“΄ μ±…. 뿐만 μ•„

www.yes24.com

 

728x90
λ°˜μ‘ν˜•
LIST
Comments