[Java] Java start ๐Ÿ™„

soyeonยท2022๋…„ 7์›” 11์ผ
0
post-thumbnail

Java ์–ธ์–ด์˜ ์ฃผ์š” ํŠน์ง•

  • OS(ํ”Œ๋žซํผ)์— ๋…๋ฆฝ์ ์ด๋‹ค.
    : ํ•˜๋“œ์›จ์–ด๋‚˜ OS์— ์ƒ๊ด€์—†์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ํ•ญ์ƒ ์–ด๋””์—์„œ๋‚˜ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. -> JVM(Java Virtual Machine)

    JVM(Java Virtual Machine)
    : Java๋Š” OS์— ๋…๋ฆฝ์ ์ด์ง€๋งŒ, JVM์€ OS์— ์ข…์†์ ์ด๋‹ค. ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋ฐ”๋กœ ์‹คํ–‰์‹œ์ผœ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. C๋‚˜ C++๋กœ ๋งŒ๋“ ๋‹ค.

OS ์œ„์— JVM์ด ์˜ฌ๋ผ๊ฐ€๊ณ , ์ž‘์„ฑํ•œ java ์ฝ”๋“œ๊ฐ€ ๊ทธ ์œ„์— ์˜ฌ๋ผ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
๋ฐ˜๋ฉด์— C์™€ ๊ฐ™์€ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” OS ์œ„์— ๋ฐ”๋กœ ์˜ฌ๋ผ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

  • ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๋‹ค.
    : OS ์œ„์—์„œ ๋ฐ”๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , JVM ์œ„์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…์„ ๊ฐ€์žฅ ์ž˜ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.

  • ํ•˜๋“œ์›จ์–ด, ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘์ ์ธ ์ œ์–ด๊ฐ€ ์•ˆ ๋œ๋‹ค.
    : garbage collector์— ์˜ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ž๋™ ๊ด€๋ฆฌ๋œ๋‹ค.

  • Network์™€ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ(thread)

  • Dynamic Loading์„ ์ œ๊ณตํ•œ๋‹ค.
    : ํ”„๋กœ๊ทธ๋žจ์ด ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์ธ ์‚ฌ์šฉ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ํด๋ž˜์Šค๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ „์—ญ(global)์˜ ๊ฐœ๋…์ด ์—†๋‹ค.
    : Java๋Š” ํด๋ž˜์Šค์˜ ์ง‘ํ•ฉ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ file 1๊ฐœ๋‹น class 1๊ฐœ๊ฐ€ ๊ธฐ๋ณธ์ด๋‹ค.

c -> compile(machine code๋กœ ๋ณ€ํ™˜)

JavaScript -> interpret(ํ•ด์„)
: ์†Œ์Šค์ฝ”๋“œ ์ž‘์„ฑ -> ์ค‘๊ฐ„ ์ฝ”๋“œ ์ƒ์„ฑ -> machine code๋กœ ๋ณ€ํ™˜
(๋งค ๋ผ์ธ๋งˆ๋‹ค ์‹คํ–‰)

Java -> compile, interpret ๋‘๊ฐ€์ง€ ํŠน์„ฑ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
: ์†Œ์Šค์ฝ”๋“œ ์ž‘์„ฑ(~.java) -> Javac๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์†Œ์Šค์ฝ”๋“œ ์ปดํŒŒ์ผ -> ๋ฐ”์ดํŠธ์ฝ”๋“œ ์ƒ์„ฑ(~.class) -> JVM์ด ํ•œ์ค„์”ฉ ์ฝ์œผ๋ฉด์„œ ์‹คํ–‰(interpret) -> JVM์ด ๊ธฐ๋™๋˜๋ฉด์„œ
1. ๋‚ด๋ถ€์ ์œผ๋กœ class Loader๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.
2. ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ญ‰ ์ฝ์œผ๋ฉด์„œ ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•˜๊ณ , ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ์ฒดํฌํ•œ๋‹ค.
3. ํ•ด๋‹น ํด๋ž˜์Šค์˜ main()์„ ํ˜ธ์ถœํ•œ๋‹ค.

JDK(Java Development kit)

: ๊ฐœ๋ฐœ๋„๊ตฌ, class ์‹คํ–‰, ... Java program ๊ฐœ๋ฐœ์„ ์œ„ํ•œ kit

JDK 1.1 -> JDK 1.2 -> JDK 1.5(Java5) ์ƒˆ๋กœ์šด ์ž๋ฐ” ๋“ฑ์žฅ -> ... -> JDK 1.8(Java8) -> ... -> JDK 1.11(Java11)
๋ฒ„์ „ ์—…์€ ๊ณ„์†๋˜๊ณ  ์žˆ์ง€๋งŒ ํ˜„์—…์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ Java8, Java11์ด๋‹ค. Java11๋กœ ๋„˜์–ด๊ฐ€๊ณ  ์žˆ๋‹ค.

Utility

: ๊ฐœ๋ฐœ ๋„๊ตฌ

Java ์‹คํ–‰ ํ™˜๊ฒฝ(JRE - Java Runtime Environment)

: class๊ฐ€ ์žˆ์œผ๋ฉด JRE๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

JVM(Java Virtual Machine)

: ์‹คํ–‰์˜ ์ฃผ์ฒด

Java class library

: API

Java ์„ค์น˜

Java 11 ์„ค์น˜
Eclipse ์„ค์น˜

programming paradigm

๋”๋ณด๊ธฐ

๊ตฌ์กฐ์ , ํ•จ์ˆ˜์  ์–ธ์–ด

: ๊ธฐ๋Šฅ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์„ธ๋ถ„ํ™”ํ•œ๋‹ค. ๋น ๋ฅธ ๋ถ„์„๊ณผ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ ์ง€๋ณด์ˆ˜์— ์ทจ์•ฝํ•˜๋‹ค.
ex) C

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

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

ํ•™์ƒ ์˜ˆ์‹œ

ํ•™์ƒ์˜ ์ƒํƒœ์™€ ํ–‰๋™(ํ–‰์œ„)๋กœ ๋‚˜๋ˆˆ๋‹ค.

์ƒํƒœ - ์ด๋ฆ„, ํ•™๋ฒˆ, ํ•™๊ณผ, ํ‚ค, ์ž์‚ฐ, ๋ชธ๋ฌด๊ฒŒ, ...
ํ–‰์œ„(์ผ๋ จ์˜ ์ ˆ์ฐจ) - ๋“ฑ๊ตํ•œ๋‹ค. ์ถœ์„ํ•œ๋‹ค. ํ™”์žฅ์‹ค๊ฐ„๋‹ค. ...

-> ํ•™์ƒ์—์„œ ๊ผญ ํ•„์š”ํ•œ ํŠน์ง•๋งŒ ๋ฝ‘์•„์„œ Abstraction(์ถ”์ƒํ™”)๋ฅผ ํ•˜๊ณ , ์ด ๊ฒฐ๊ณผ๋ฅผ class๋ฅผ ์ด์šฉํ•ด์„œ Modeling์„ ์ง„ํ–‰ํ•œ๋‹ค.
-> class๋Š” ๊ฐ์ฒด ๋ชจ๋ธ๋ง์˜ ์ˆ˜๋‹จ์ด๋‹ค.

๐Ÿ›’class์—์„œ
์ƒํƒœ -> ๋ณ€์ˆ˜ -> field
ํ–‰์œ„ -> ํ•จ์ˆ˜ -> method

Source code ์ƒ์„ฑ

  1. ์†Œ์Šค์ฝ”๋“œ์˜ ์ด๋ฆ„(file ๋ช…)์€ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
    : ํŒŒ์ผ ์•ˆ์— ์žˆ๋Š” public class์˜ ์ด๋ฆ„์œผ๋กœ file ๋ช…์„ ์ง“๋Š”๋‹ค.
    ์†Œ์Šค์ฝ”๋“œ ์ด๋ฆ„ ์ง“๊ธฐ

  2. public class๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์ผ๋ฐ˜ class์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.
    ์ผ๋ฐ˜ class ์ผ๋•Œ ์ด๋ฆ„ ์ง“๊ธฐ

  3. ํ•˜๋‚˜์˜ Java file ์•ˆ์— class๋Š” ์—ฌ๋Ÿฌ ๊ฐœ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
    ๋‹จ, public class๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋‘๊ฐœ ์ด์ƒ ์กด์žฌํ•  ์ˆ˜ ์—†๋‹ค.
    public class 2๊ฐœ X

  4. ํ”„๋กœ๊ทธ๋žจ์˜ entry point(์‹œ์ž‘ ์ง€์ )

public static void main(String args[]) {}

eclipse ๋น ๋ฅด๊ฒŒ ์“ฐ๊ธฐ
main : main ์“ฐ๊ณ  ctrl + space
print : sysout ์“ฐ๊ณ  ctrl + space
์‹คํ–‰ : ctrl + f11

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