[Java] Java Start!๐Ÿ˜

jy9922ยท2022๋…„ 7์›” 11์ผ
0

Java

๋ชฉ๋ก ๋ณด๊ธฐ
1/13
post-thumbnail

Java start!


Java ์–ธ์˜์˜ ํŠน์ง•

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

  • C์–ธ์–ด
    C์–ธ์–ด๋Š” compile ์–ธ์–ด์ด๋ฉฐ, ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅด๋‹ค.

  • Javascirpt
    Javascript๋Š” interpreter(ํ•ด์„) ์–ธ์–ด์ด๋ฉฐ, ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๋‹ค.
    1) ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ์—”์ง„์ด ์ฝ์–ด๋“ค์ด๋ฉด ์ค‘๊ฐ„์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    2) ์ดํ›„ ๋‹ค์‹œ ๋จธ์‹  ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋งค ์ค„ ๋งˆ๋‹ค interprete๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

  • Java
    Java๋Š” compile ์–ธ์–ด์™€ interpreter ์–ธ์–ด๋ฅผ ํ˜ผํ•ฉ์‹œํ‚จ ๊ฒƒ์ด๋‹ค.
    1) Java๋Š” Javac๋กœ ์†Œ์Šค์ฝ”๋“œ(.java)๋ฅผ ์ปดํŒŒ์ผํ•˜๊ฒŒ๋˜๋ฉด bytecode(.class)๊ฐ€ ๋‚˜์˜จ๋‹ค.
    2) ์ด๋ฅผ jvm์ด ํ•œ์ค„ํ•œ์ค„ ์ฝ์–ด๋“ค์—ฌ์„œ interpreting ์ž‘์—…์„ ํ•œ๋‹ค.

Java๋Š” ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ ์ด๋‹ค.
JVM(Java Virtual Machine) ์œ„์— ์žˆ์œผ๋ฉด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. (JVM์€ ์šด์˜์ฒด์ œ์— ์ข…์†์ )

  • Java๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…์„ ๊ฐ€์žฅ ์ž˜ ํ‘œํ˜„ํ•œ ์–ธ์–ด์ด๋‹ค.
  • ํ•˜๋“œ์›จ์–ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ œ์–ด๊ฐ€ ์•ˆ๋œ๋‹ค.
    ( garbage collection์— ์˜ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ž๋™ ๊ด€๋ฆฌํ•ด์ค€๋‹ค )
  • ๋„คํŠธ์›Œํฌ์™€ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ์— ๊ฐ•์ ์„ ๊ฐ€์ง„๋‹ค.
  • Dynamic loading์„ ์ œ๊ณตํ•œ๋‹ค.
    ( class์˜ loading์ด ๋™์ ์œผ๋กœ ์ผ์–ด๋‚œ๋‹ค )
    ๋ฉ”๋ชจ๋ฆฌ์˜ ํšจ์œจ์ ์ธ ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.
  • ์ „์—ญ๊ณผ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์—†๋‹ค.

Java ์‹คํ–‰

JRE(Java Runtime Environment)

ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” JAVA๊ฐ€ ์ œ๊ณตํ•ด์ฃผ๋Š” API์ธ Java class Library(API)๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
JVM ๋˜ํ•œ ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋“ค๊ณ  ์žˆ์–ด์•ผ์ง€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Java class library์™€ JVM์„ ๋ฌถ์–ด์„œ JRE(Java Runtime Environment)๋ผ๊ณ  ํ•œ๋‹ค.

JDK(Java Development kit)

Java๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JDK ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.JDK๋Š” JRE๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

jdk 1.1 โ†’ jdk 1.2 โ†’ jdk 1.5(JAVA5) โ†’ jdk 1.8(JAVA 8) โ†’ jdk 1.11 (JAVA 11)

  • jdk 1.5 (Java 5) ์ดํ›„ ์ฝ”๋“œ ๋Œ€ํญ ๋ณ€ํ™˜
  • jdk 1.8 (Java 8) - ํ˜„์—…์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฒ„์ „
  • ํ˜„์žฌ JAVA 11๋กœ ๋„˜์–ด๊ฐ€๋Š” ์ถ”์„ธ(Java 11๋กœ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ)

๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„

๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด

  1. ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ๊ตฌ์„ฑ์š”์†Œ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ๋˜๋Š”์ง€ ํŒŒ์•…ํ•œ๋‹ค. (๋ถ„์„์„ค๊ณ„ ์–ด๋ ค์›€)
  2. ์œ ์ง€๋ณด์ˆ˜์— ๊ฐ•์ ์„ ๊ฐ€์ง„๋‹ค.

์ ˆ์ฐจ์ง€ํ–ฅ์–ธ์–ด

  1. ๊ธฐ๋Šฅ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์„ธ๋ถ„ํ™”ํ•œ๋‹ค.
    (๋ถ„์„์ด ์ƒ๋Œ€์ ์œผ๋กœ ์‰ฝ๊ณ  ๋น ๋ฆ„)
  2. ๋น ๋ฅธ ๋ถ„์„๊ณผ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ํ”„๋กœ๊ทธ๋žจ์˜ ์œ ์ง€๋ณด์ˆ˜์— ์ทจ์•ฝํ•˜๋‹ค.
    (์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค )

๊ฐ์ฒด์ง€ํ–ฅ ์˜ˆ์‹œ

ํ˜„์‹ค์„ธ๊ณ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๊ฐ ๊ตฌ์„ฑ์š”์†Œ ์•ˆ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋“ค์ด ์žˆ๊ณ , ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€ ํŒŒ์•…ํ•œ๋‹ค.

ex. ํ•™์‚ฌ์ง€์›์‹œ์Šคํ…œ

  1. ์ถ”์ƒํ™” (Abstraction)
    ํ•™์‚ฌ์ง€์›์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํ•™์ƒ์— ๋Œ€ํ•œ ์ƒํƒœ, ํ–‰์œ„์—์„œ ํ•„์š”์—†๋Š” ๋ถ€๋ถ„์€ ์ง€์šด๋‹ค. ๊ผญ ํ•„์š”ํ•œ ํŠน์ง•๋“ค์„ ๋ฝ‘์•„๋‚ด์–ด ๋‹จ์ˆœํ™” ์‹œํ‚จ๋‹ค.

  2. Modeling

  3. class๋ฅผ ์ด์šฉํ•ด์„œ modelingํ•œ๋‹ค. class๋Š” ๊ฐ์ฒด ๋ชจ๋ธ๋ง์˜ ์ˆ˜๋‹จ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€ป class
Java๋Š” ํ•™์ƒ์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ class ์•ˆ์—์„œ ๋ณ€์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
(class ์•ˆ์— ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ•„๋“œ๋ผ๊ณ  ํ•œ๋‹ค)
Java๋Š” ํ–‰์œ„๋ฅผ class ์•ˆ์—์„œ ํ•จ์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
(class ์•ˆ์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ํ•œ๋‹ค)

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

  • module์€ pacakage์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•œ๋‹ค.
  • package์˜ ์ด๋ฆ„์€ domain์˜ ์—ญ์ˆœ์œผ๋กœ ์ง€์ •ํ•œ๋‹ค.

source code ์ƒ์„ฑ

  • ์†Œ์Šค์ฝ”๋“œ์˜ ์ด๋ฆ„(file๋ช…)์€ class์˜ ์ด๋ฆ„๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
  • public class๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜ class์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ Java file ์•ˆ์—๋Š” class๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ( ๋‹จ, ํ•˜๋‚˜์˜ ํŒŒ์ผ ์•ˆ์—๋Š” class์˜ ๊ฐœ์ˆ˜๊ฐ€ 0 ๋˜๋Š” 1๊ฐœ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค )
  • program์˜ entry point๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ
public static void main(String args[]){ ]
  • ๋™์ž‘ ๊ณผ์ •์€ Javac.exe๋ฅผ ์ด์šฉํ•ด ์ปดํŒŒ์ผ -> ๊ฒฐ๊ณผ๋กœ Student.class(byte code)๋ฅผ ๋„์ถœ -> interpret ๊ณผ์ • -> java.exe Student -> ์‹คํ–‰

0๊ฐœ์˜ ๋Œ“๊ธ€