ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ’ก
ํ•™์Šต๋ชฉํ‘œ Java์˜ ํŠน์ง•์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค ๋ฐ”์ดํŠธ ์ฝ”๋“œ, Java ํ”Œ๋žซํผ์— ๊ด€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค ๊ฐ์ฒด / ํด๋ž˜์Šค๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค

 

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

C/C++๊ณผ ์œ ์‚ฌํ•˜๋‚˜ ๋‹จ์ˆœํ•จ

ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ : Java ํ”Œ๋žซํผ๋งŒ ์žˆ๋‹ค๋ฉด ์šด์˜์ฒด์ œ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ-์‹คํ–‰ํ™˜๊ฒฝ์„ Java ์–ธ์–ด๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๊ธฐ๋„ ํ•จ

์™„์ „ํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด: C++์˜ ๊ฒฝ์šฐ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ์Šคํƒ€์ผ๋กœ๋„, ์ ˆ์ฐจ์  ์Šคํƒ€์ผ๋กœ๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด Java์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด์ง€ํ–ฅ ์Šคํƒ€์ผ๋กœ๋งŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ. ์ฆ‰ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ ์ฃผ์š” ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ

→ objective programming์ด๋ž€?

์›น/๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์šฉ์ด: ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์„ ์ž‘์„ฑํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•œ ํ’๋ถ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณต

์—„๊ฒฉํ•œ ์ž๋ฃŒํ˜• ๊ฒ€์‚ฌ: ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ ์ž๋ฃŒํ˜• ๋ถˆ์ผ์น˜๋กœ ์ธํ•œ ์˜ค๋ฅ˜์˜ ๋ฐœ์ƒ ์†Œ์ง€๋ฅผ ๋ฏธ์—ฐ์— ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์ 

์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ์ œ๊ณต: ์˜ˆ์™ธ๋ž€ ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋ฏธํ•œ ์—๋Ÿฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฏ€๋กœ, ์ด๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ด๋ž€ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ •์ƒ ์ƒํƒœ๋กœ ๋Œ๋ ค ๋ฌธ์ œ์—†์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€๋ฆฌํ‚ด

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ ์ง€์›: ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์•ˆ์— ์กด์žฌํ•˜๋Š” ๋…๋ฆฝ์ ์ธ ์ž‘์—… ํ๋ฆ„์„ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•˜๋ฉฐ, ์ž๋ฐ”์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์  ํ๋ฆ„์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

 

  • ๋ฐ”์ดํŠธ ์ฝ”๋“œ(ํด๋ž˜์Šค ํŒŒ์ผ, .class)

Java ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•œ ๊ฒฐ๊ณผ๋ฌผ

Java ํ”Œ๋žซํผ์˜ Java VM(๊ฐ€์ƒ๋จธ์‹ )์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์ด์ง€๋งŒ, ์šด์˜์ฒด์ œ์—์„œ ์ƒ์„ฑ๋˜๋Š” ์ฝ”๋“œ๋Š” ์•„๋‹ˆ๋ฏ€๋กœ ์—„๊ฒฉํ•œ ์˜๋ฏธ์—์„œ ๊ธฐ๊ณ„์–ด๋Š” ์•„๋‹ˆ๋‹ค - write once, run anywhere

ํด๋ž˜์Šค ํŒŒ์ผ: Java๋Š” ์™„์ „ํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ด๋ฏ€๋กœ Java๋กœ ์ฝ”๋”ฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ณง ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ

 

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์• ํ”Œ๋ฆฟ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: Java ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์‹คํ–‰์„ ์œ„ํ•ด main() ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•จ

์• ํ”Œ๋ฆฟ: THML ์›น ํŽ˜์ด์ง€์— ํฌํ•จ๋˜์–ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์‹คํ–‰

<APPLET CODE = "HelloApplet.class" WIDTH = 200 HEIGHT = 100> </APPLET>

๋งŒ์•ฝ ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ html ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด ์ฝ”๋“œ ์† .class ํŒŒ์ผ๋„ ์ปดํŒŒ์ผํ•จ. ๋‹ค๋งŒ ์• ํ”Œ๋ฆฟ์€ ์ตœ๊ทผ์—๋Š” ์ž˜ ์“ฐ์ด์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ต์Šคํ”Œ๋กœ๋Ÿฌ ์™ธ์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ์Œ

 

  • Java ํ”Œ๋žซํผ

ํ”Œ๋žซํผ์ด๋ž€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” HW/SW ํ™˜๊ฒฝ์ด๋ฏ€๋กœ Java ํ”Œ๋žซํผ์€ Java ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœ/์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ

์šด์˜์ฒด์ œ์— ๋งž๋Š” Java platform์„ ์„ค์น˜ํ•˜์—ฌ์•ผ ํ•จ

ํ”Œ๋žซํผ ๊ตฌ์„ฑ์€ Java VM + Java API

Java VM: Java ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ƒ๋จธ์‹ ์œผ๋กœ, ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•œ ์—”์ง„์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ. ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ์‚ฌํ•ญ์„ ๊ด€๋ฆฌ ๋ฐ ์ง€์›ํ•˜๊ณ , GC(garbage collection)๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•จ(C์—์„œ์˜ malloc๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ VM์ด ํ•ด ์ฃผ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ ์‹œ์ ์— ํฌ๊ฒŒ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ์ด ์žฅ์ )

Java API: ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ํด๋ž˜์Šค์˜ ๋ฌถ์Œ(ํŒจํ‚ค์ง€)์ด ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋ถ„๋ฅ˜๋˜์–ด ์žˆ์Œ

→ ๋‚˜ ์•„์ง๋„ API์˜ ๊ฐœ๋…์„ ์ •ํ™•ํ•˜๊ฒŒ ๋ชจ๋ฅด๊ฒ ์Œ

 

 

  • JDK์™€ eclipse

Java ํ™ˆํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œ๋ฐ›์•„ ์„ค์น˜ → ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ฒฝ๋กœ ์ˆ˜์ • → ํ™˜๊ฒฝ๋ณ€์ˆ˜ JAVA_HOME ์ƒ์„ฑ

#path ์ˆ˜์ •  c:/Program Files/Java/jdk-ver./bin ์ถ”๊ฐ€   #java_home ์ƒ์„ฑ c:/Program Files/Java/jdk-ver. ๋Œ€์ž…

eclipse: ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ Java ๊ฐœ๋ฐœ ํˆด

 

  • main()์˜ ํ˜•์‹
public class Hello { //public class๋Š” ํŒŒ์ผ์— ์ตœ๋Œ€ 1๊ฐœ๊นŒ์ง€ ์กด์žฌ 	public static void main(String[] args) { //main method์˜ ํ˜•์‹ 	/* ์—ฌ๋Ÿฌ ์ค„๋กœ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ */ 	System.out.printIn("Hello, World!"); 	} }
/** ์ด ์•ˆ์— ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด์„œ javadoc์„ ์ด์šฉํ•œ API ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ*/
  • ํด๋ž˜์Šค: ํผ๋ธ”๋ฆญ ํด๋ž˜์Šค/ํผ๋ธ”๋ฆญ์ด ์•„๋‹Œ ํด๋ž˜์Šคpublic class๋Š” ํŒŒ์ผ์— ์ตœ๋Œ€ 1๊ฐœ๋กœ, ํผ๋ธ”๋ฆญ ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น ํŒŒ์ผ์€ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ๋Š” ์ €์žฅํ•  ์ˆ˜ ์—†๊ณ  ๋ฐ˜๋“œ์‹œ ‘PublicClassName.java’ ํŒŒ์ผ๋ช…์œผ๋กœ๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
  •  
  • ์ถœ๋ ฅ๊ณผ ์‹คํ–‰ํ‘œ์ค€์ถœ๋ ฅ System.out ํ‘œ์ค€์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋กœ, print() ๋˜๋Š” printIn()์„ ์ˆ˜ํ–‰ํ•จ. ๋ฐ˜๋“œ์‹œ System.out.print(”strings”); ํ˜•ํƒœ๋กœ ์“ฐ์—ฌ์•ผ ํ•จ์ปดํŒŒ์ผ ๋ช…๋ น์–ด
  • ์–ด๋– ํ•œ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€๋ฅผ ๋ฐํ˜€ ์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ
//Hello.java๋กœ ์ €์žฅ javac Hello.java ‘ClassName.java’๊ฐ€ ๋งŒ๋“ค์–ด์ง.  java Hello // Hello class์—์„œ main() ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋จ 
  • ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

์ถ”์ƒํ™” ์ „ํ˜•์ ์ด๊ณ  ํ•„์š”ํ•œ ์ผ๋ถ€๋งŒ์„ ๋ฐœ์ทŒํ•˜์—ฌ ์‚ฌ๋ฌผ์„ ์ดํ•ด, ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ

ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ชจํ˜•์ด๋‚˜ ํ‹€. ๋ฌธ์ œ ์˜์—ญ ์•ˆ์— ์กด์žฌํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๊ณตํ†ต์˜ ํŠน์ง•์„ ๊ฐ€์ง€๋Š” ์ข…๋ฅ˜๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•œ ๋‹ค์Œ ์ถ”์ƒํ™”ํ•˜๊ณ ์ž ํ•˜๋Š” ์ˆ˜๋‹จ์„ ํด๋ž˜์Šค๋ผ๊ณ  ํ•จ

๊ฐ์ฒด์˜ ์ƒํƒœ๋Š” ํ•„๋“œ(๋ฐ์ดํ„ฐ)๋กœ, ํ–‰์œ„๋Š” ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌํ˜„(ํด๋ž˜์Šค์— ์บก์Šํ™”)๋จ. ์ฆ‰ ์ƒํƒœ:ํ–‰์œ„ = ํ•„๋“œ(๋ฐ์ดํ„ฐ):๋ฉ”์†Œ๋“œ - ‘์ด ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ค ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?’

๊ฐ์ฒด๋Š” ํŠน์ • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(ํด๋ž˜์Šค๊ฐ€ ์‹ค์ฒดํ™”ํ•œ ๊ฒƒ์„ ์ธ์Šคํ„ด์Šค๋ผ ํ•จ)

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ํด๋ž˜์Šค ์ •์˜๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋“ค์ด ๋งŒ๋“ค์–ด์ง€๊ณ , ํ”„๋กœ๊ทธ๋žจ์€ ์ด ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ๋™์ž‘

 

//C๋Š” ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ฐ ์–ธ์–ด //ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ๋‹จ์œ„๋Š” ํ•จ์ˆ˜  //์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธ int e[2]; //english int m[2]; //mathmatics  //main function: ๋‘ ํ•™์ƒ์˜ ์˜์–ด, ์ˆ˜ํ•™ ์„ฑ์ ์„ ์ž…๋ ฅ๋ฐ›์Œ void input_grade(){ 	e[0] = 90; 	e[1] = 80; 	e[0] = 85; 	m[1] = 80; }  void output_grade(){ 	printf("%d, %d", e[0] + m[0], e[1]+m[1]); }  void main(void){ 	input_grade(); 	output_grade(); 	}

 

//Java๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด  //๋”ฐ๋ผ์„œ ๋จผ์ € class๋ฅผ ์„ ์–ธ  class Grade { 	int e;  	int m;  	void output_grade() { 		System.out.printIn(e+m); 	} }  public class GradeOutput{ 	public static void main(String args[]){ 		Grade g1, g2; 		g1 = new Grade(); // ๊ฐ์ฒด ์ƒ์„ฑ 		g2 = new Grade(); 		g1.e = 90; g1.m = 85; // ๊ฐ ๊ฐ์ฒด์— ์ ์ˆ˜๋ฅผ ๋Œ€์ž…  		g2.e = 90; g2.m = 80;  		g1.output_grade(); 		g2.output_grade(); 	} }