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()์ ํธ์ถํ๋ค.
: ๊ฐ๋ฐ๋๊ตฌ, 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๋ก ๋์ด๊ฐ๊ณ ์๋ค.
: ๊ฐ๋ฐ ๋๊ตฌ
: class๊ฐ ์์ผ๋ฉด JRE๋ก ์คํํ ์ ์๋ค.
: ์คํ์ ์ฃผ์ฒด
: API
: ๊ธฐ๋ฅ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ธ๋ถํํ๋ค. ๋น ๋ฅธ ๋ถ์๊ณผ ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์๋ค. ์ ์ง๋ณด์์ ์ทจ์ฝํ๋ค.
ex) C
: ํ์ค ์ธ๊ณ๋ฅผ ๊ตฌ์ฑํ๋ ๊ตฌ์ฑ ์์๋ฅผ ํ์
ํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ ๋ฌ๋๋์ง ํ์
ํ๋ค. ๋ถ์ ์ค๊ณ๊ฐ ์ด๋ ต๋ค. ์ ์ง๋ณด์์ ๊ฐ์ ์ ๊ฐ์ง๋ค.
ex) Java
ํ์์ ์ํ์ ํ๋(ํ์)๋ก ๋๋๋ค.
์ํ - ์ด๋ฆ, ํ๋ฒ, ํ๊ณผ, ํค, ์์ฐ, ๋ชธ๋ฌด๊ฒ, ...
ํ์(์ผ๋ จ์ ์ ์ฐจ) - ๋ฑ๊ตํ๋ค. ์ถ์ํ๋ค. ํ์ฅ์ค๊ฐ๋ค. ...
-> ํ์์์ ๊ผญ ํ์ํ ํน์ง๋ง ๋ฝ์์ Abstraction(์ถ์ํ)๋ฅผ ํ๊ณ , ์ด ๊ฒฐ๊ณผ๋ฅผ class๋ฅผ ์ด์ฉํด์ Modeling์ ์งํํ๋ค.
-> class๋ ๊ฐ์ฒด ๋ชจ๋ธ๋ง์ ์๋จ์ด๋ค.
๐class์์
์ํ -> ๋ณ์ -> field
ํ์ -> ํจ์ -> method
์์ค์ฝ๋์ ์ด๋ฆ(file ๋ช
)์ ํด๋์ค์ ์ด๋ฆ๊ณผ ๊ฐ์์ผ ํ๋ค.
: ํ์ผ ์์ ์๋ public class์ ์ด๋ฆ์ผ๋ก file ๋ช
์ ์ง๋๋ค.
public class๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ผ๋ฐ class์ ์ด๋ฆ์ ์ฌ์ฉํ๋ค.
ํ๋์ Java file ์์ class๋ ์ฌ๋ฌ ๊ฐ ๋์ฌ ์ ์๋ค.
๋จ, public class๋ ํ๋์ ํ์ผ์ ๋๊ฐ ์ด์ ์กด์ฌํ ์ ์๋ค.
ํ๋ก๊ทธ๋จ์ entry point(์์ ์ง์ )
public static void main(String args[]) {}
eclipse ๋น ๋ฅด๊ฒ ์ฐ๊ธฐ
main : main ์ฐ๊ณ ctrl + space
print : sysout ์ฐ๊ณ ctrl + space
์คํ : ctrl + f11