[JAVA] 0.Hello World!_JAVA ํŠน์ง•

๋ง๋ž‘์ดยท2023๋…„ 5์›” 23์ผ
1

JAVA

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

1 ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ ์ด๋‹ค

์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์  โžก๏ธ ์šด์˜์ฒด์ œ ์ข…๋ฅ˜, ํ•˜๋“œ์›จ์–ด ๊ด€๊ณ„์—†์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•จ
"Write once, run anywhere"

1๏ธโƒฃ ์žฅ์ 

  • ์šด์˜์ฒด์ œ์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ ๋ณ€๊ฒฝ โŒ, ์‹คํ–‰๊ฐ€๋Šฅ โœ…
  • ๋‹ค์–‘ํ•œ ๊ธฐ์ข…์˜ ์ปดํ“จํ„ฐ ๋ฐ ์šด์˜์ฒด์ œ๊ฐ€ ๊ณต์กดํ•˜๋Š” ์ธํ„ฐ๋„ทํ™˜๊ฒฝ์— ์ ํ•ฉํ•œ ์–ธ์–ด
  • ๊ฐ์ฒด์ง€ํ–ฅ๊ฐœ๋…, Cโบโบ ์žฅ์  ๋™์‹œ์ฑ„ํƒ

2๏ธโƒฃ ์›๋ฆฌ

๐Ÿ“Ž JVM (์ž๋ฐ”๊ฐ€์ƒ๋จธ์‹ )

  • โ‘  ์ž๋ฐ”์‘์šฉํ”„๋กœ๊ทธ๋žจ โ†’ JVM๋งŒ ํ†ต์‹  (์šด์˜์ฒด์ œ, ํ•˜๋“œ์›จ์–ด โ›”๏ธ)
  • โ‘ก JVM : ์ž๋ฐ”์‘์šฉํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ช…๋ น โ†’ ํ•ด๋‹น ์šด์˜์ฒด์ œ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€ํ™˜ โ†’ ์ „๋‹ฌ
๊ตฌ๋ถ„๊ด€๊ณ„
์ž๋ฐ”ํ”„๋กœ๊ทธ๋žจ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์  ๐Ÿ”’
JVM์šด์˜์ฒด์ œ์— ์ข…์†์  ๐Ÿ”

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

๐Ÿค ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด(object-oriented programming language)

  • ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์กฐ์ž‘ โ†’ ๊ฐ์ฒด๊ฐ„ ๊ด€๊ณ„ ๋งบ์Œ โ†’ ๋‹ค์ˆ˜์˜ ๊ฐ์ฒด๊ฐ€ ํ•จ๊ป˜ ์ˆ˜ํ–‰
    • ํ”„๋กœ๊ทธ๋žจ โ†’ ๋ฐ์ดํ„ฐ + ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ• โ›”๏ธ
    • ํ”„๋กœ๊ทธ๋žจ โ†’ ๋‹ค์ˆ˜์˜ ๊ฐ์ฒด ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ โœ…

1๏ธโƒฃ ํŠน์ง•

๐Ÿ“Ž ์ƒ์†๊ฐœ๋…

๐Ÿ“ ์ƒ์† (extends)
- ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉ โ†’ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ
  โžก๏ธ ์กฐ์ƒํด๋ž˜์Šค + ์ž์†ํด๋ž˜์Šค

class Parent {}
class Child extends Parent {}
  • ์ ์€ ์–‘์˜ ์ฝ”๋“œ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค ์ž‘์„ฑ ๊ฐ€๋Šฅ
  • ์ฝ”๋“œ ๊ณตํ†ต๊ด€๋ฆฌ โ†’ ์ฝ”๋“œ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ ์šฉ์ด

๐Ÿ“Ž ์บก์Аํ™”๊ฐœ๋…

๐Ÿ“ ์บก์Аํ™” (Encapsulation)
- โ‘  ์—ฐ๊ด€์„ฑ ์žˆ๋Š” ๋ณ€์ˆ˜ + ํ•จ์ˆ˜
  โ†’ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ ๋ฌถ์–ด ์™ธ๋ถ€์—์„œ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์€๋‹‰
- โ‘ก ๋ฐ์ดํ„ฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ
  • ์ •๋ณด์€๋‹‰ (Information Hiding)
    • (์ ‘๊ทผ์ œ์–ด์ž๋กœ) ๊ฐ์ฒด ์ง์ ‘์ ์ธ ์ ‘๊ทผ์„ ๋ง‰์Œ โ›”๏ธ
    • ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€์ •๋ณด ์ ‘๊ทผ or ๋ณ€๊ฒฝ โ›”๏ธ
    • ๊ฐ์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ•„๋“œ ๋ฐ ๋ฉ”์„œ๋“œ โ†’ ์ ‘๊ทผ ๊ฐ€๋Šฅ โœ…

๐Ÿ“Ž ๋‹คํ˜•์„ฑ๊ฐœ๋…

๐Ÿ“ ๋‹คํ˜•์„ฑ (polymorphism)
- ํ•œ type ์ฐธ์กฐ๋ณ€์ˆ˜ โ†’ ์—ฌ๋Ÿฌ type ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ
- ์กฐ์ƒํด๋ž˜์Šค type ์ฐธ์กฐ๋ณ€์ˆ˜ โžก๏ธ ์ž์†ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ์ฐธ์กฐ

class TV {
	boolean power;
    int channel;
    
    void power() {power = !power;}
    void channelUp() {++channel;}
    void channelDown() {--channel;}
}
class SmartTv extends TV {
	String text;
    void caption() {}	
}

SmartTv s = new SmartTv(); // ์ฐธ์กฐ๋ณ€์ˆ˜ = ์ธ์Šคํ„ด์Šค ํƒ€์ž… ์ผ์น˜
Tv t = new SmartTv(); // ์กฐ์ƒ ์ฐธ์กฐ๋ณ€์ˆ˜ t, ์ž์† ์ธ์Šคํ„ด์Šค
// ์กฐ์ƒํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋“ค๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ (์ž์† ๋ฉค๋ฒ„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€)

3 ๋น„๊ต์  ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๋‹ค

  • JAVA ์—ฐ์‚ฐ์ž, ๊ธฐ๋ณธ๊ตฌ๋ฌธ โ†’ Cโบโบ
  • ๊ฐ์ฒด์ง€ํ–ฅ๊ด€๋ จ ๊ตฌ๋ฌธ โ†’ small talk ์–ธ์–ด

4 ์ž๋™๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

๐Ÿค ๊ฐ€๋น„์ง€์ปฌ๋ ‰ํ„ฐ : Garbage Collector๊ฐ€ ์ž๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ โ†’ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ โŒ


5 ๋„คํŠธ์›Œํฌ์™€ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค

๐Ÿค Java API (๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

  • ์ธํ„ฐ๋„ท๊ณผ ๋Œ€๊ทœ๋ชจ๋ถ„์‚ฐํ™˜๊ฒฝ์— ์šฉ์ด
  • ํ’๋ถ€ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ + ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ โ†’ ์งง์€ ์‹œ๊ฐ„์— ํ”„๋กœ๊ทธ๋žจ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

6 ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค

๐Ÿค ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ (multi-thread) : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋‘˜ ์ด์ƒ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ž‘์—…์ˆ˜ํ–‰ ํ•˜๋Š” ๊ฒƒ
(์›๋ž˜ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๋กœ ์ž‘์—…์ˆ˜ํ–‰)

์ข…๋ฅ˜ํŠน์ง•
์ผ๋ฐ˜์  ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ์‚ฌ์šฉ๋˜๋Š” ์šด์˜์ฒด์ œ โ†’ ๊ตฌํ˜„๋ฐฉ๋ฒ• + ์ฒ˜๋ฆฌ๋ฐฉ์‹ ์ƒ์ด
์ž๋ฐ” ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œโ‘  ์‹œ์Šคํ…œ ๊ด€๊ณ„์—†์ด ๊ตฌํ˜„ ๊ฐ€๋Šฅ โœ…
โ‘ก ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Java API)์ œ๊ณต โ†’ ๊ตฌํ˜„์‰ฌ์›€ โœ…
โ‘ข ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•œ ์Šค์ผ€์ค„๋ง โ†’ Java ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๋‹ด๋‹น โœ…

7 ๋™์ ๋กœ๋”ฉ์„ ์ง€์›ํ•œ๋‹ค

๐Ÿค ๋™์ ๋กœ๋”ฉ (Dynamic Loading)

  • ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ : ์—ฌ๋Ÿฌ๊ฐœ์˜ ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑ
  • ์‹คํ–‰(run)์‹œ โ†’ ๋ชจ๋“  ํด๋ž˜์Šค ๋กœ๋”ฉ โ›”๏ธ, ํ•„์š”ํ•œ ์‹œ์ ์— ํด๋ž˜์Šค ๋กœ๋”ฉ โœ…
  • ์ผ๋ถ€ ํด๋ž˜์Šค ๋ณ€๊ฒฝ โ†’ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ re ์ปดํŒŒ์ผ โŒ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐœ์ƒ โ†’ ๋น„๊ต์  ์ ์€ ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
profile
๐Ÿฐ I'm Sunyeon-Jeong, mallang

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