Java Basics

Java์˜ ์–ธ์–ด์ ์ธ ํŠน์ง• (Features of Java)

  • Simple

    C++๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๋‹ค -> ๊ทผ๋ฐ ๋Š๋ฆผ

    • Java์˜ ๊ฐ„๊ฒฐํ•˜๋ฉด์„œ๋„ ๋ช…๋ฃŒํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์  ์„ค๊ณ„๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ๊ฐ์ฒด์ง€ํ–ฅ๊ฐœ๋…์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ €๋ณ€ํ™•๋Œ€์— ํฌ๊ฒŒ ๊ธฐ์—ฌํ–ˆ๋‹ค.

  • Object-Oriented

    • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ์ฒด์ง€ํ–ฅ๊ฐœ๋…์˜ ํŠน์ง•์ธ ์ƒ์†, ์บก์Šํ™”, ๋‹คํ˜•์„ฑ์ด ์ž˜ ์ ์šฉ๋œ ์–ธ์–ด๋‹ค

  • Memory

    Garbage Collection => GC๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ!

    • ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด, Garbage Collector๊ฐ€ ์ž๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค

      • Garbage Collector๊ฐ€ ์—†๋‹ค๋ฉด, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฒดํฌํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ์ผ์„ ์ˆ˜๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๊ฒƒ์ด๋‹ค.

      • ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋‹ค์†Œ ๋น„ํšจ์œจ์ ์ธ ๋ฉด๋„ ์žˆ์ง€๋งŒ, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ณด๋‹ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

  • Robust (==sturdy)

    • ์ด ์ฝ”๋“œ๊ฐ€ System์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋Œ ๊ฒƒ์ธ๊ฐ€.

  • Platform Independent

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

    -> OS ์œ„์— ์žˆ๋Š” Java Virtual Machine์ด ๋™์ž‘

    • ๊ธฐ์กด์˜ ์–ธ์–ด๋Š” ํ•œ ์šด์˜์ฒด์ œ์— ๋งž๊ฒŒ ๊ฐœ๋ฐœ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์šด์˜์ฒด์ œ์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งŽ์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜์˜€์ง€๋งŒ, Java์—์„œ๋Š” ๋” ์ด์ƒ ๊ทธ๋Ÿฐ ๋…ธ๋ ฅ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค

      • ์ผ์ข…์˜ emulator์ธ **Java Virtual Machine(JVM)**์„ ํ†ตํ•ด์„œ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ธ๋ฐ,

        • ์ž๋ฐ” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ๋‚˜ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์•„๋‹Œ JVMํ•˜๊ณ ๋งŒ ํ†ต์‹ ํ•˜๊ณ ,

        • JVM์ด ์ž๋ฐ” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ๋ช…๋ น์„ ํ•ด๋‹น ์šด์˜์ฒด์ œ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜ํ•˜์—ฌ ์ „๋‹ฌํ•œ๋‹ค.

    • ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ ์ด์ง€๋งŒ, JVM์€ ์šด์˜์ฒด์ œ์— ์ข…์†์ ์ด์–ด์„œ, ์ฌ์—์„œ๋Š” ์—ฌ๋Ÿฌ ์šด์˜์ฒด์ œ์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ JVM์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค

      • ๊ทธ๋ž˜์„œ ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ์™€ ํ•˜๋“œ์›จ์–ด์— ๊ด€๊ณ„์—†์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ด๊ฒƒ์„ "ํ•œ๋ฒˆ ์ž‘์„ฑํ•˜๋ฉด, ์–ด๋””์„œ๋‚˜ ์‹คํ–‰๋œ๋‹ค (Write once, run anywhere)" ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค

  • Multi-Threaded

    ์ž๋ฐ”์—์„œ๋Š” ์šด์˜์ฒด์ œ์˜ ๋„์›€ ์—†์ด ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด ์ฐจ์›์—์„œ ๊ตฌํ˜„

    • ์ผ๋ฐ˜์ ์œผ๋กœ multi-thread์˜ ์ง€์›์€ ์‚ฌ์šฉ๋˜๋Š” ์šด์˜์ฒด์ œ์— ๋”ฐ๋ผ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•๋„ ์ƒ์ดํ•˜๋ฉฐ, ์ฒ˜๋ฆฌ ๋ฐฉ์‹๋„ ๋‹ค๋ฅด๋‹ค.

    • ๊ทธ๋Ÿฌ๋‚˜, Java์—์„œ ๊ฐœ๋ฐœ๋˜๋Š” multi-thread ํ”„๋กœ๊ทธ๋žจ์€ ์‹œ์Šคํ…œ๊ณผ๋Š” ๊ด€๊ณ„์—†์ด ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ด€๋ จ๋œ library (Java API)๊ฐ€ ์ œ๊ณต๋˜๋ฏ€๋กœ ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.

    • ์—ฌ๋Ÿฌ thread์— ๋Œ€ํ•œ scheduling์„ Java interpreter๊ฐ€ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค

  • Secured

    : Java is pretty much "safe" unleses a third party is trying to exploit the JVM

  • Dynamic

    ๋™์  ๋กœ๋”ฉ (Dynamic Loading)์„ ์ง€์›ํ•œ๋‹ค

    • ๋ณดํ†ต Java๋กœ ์ž‘์„ฑ๋œ application์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ class๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

    • Java๋Š” ๋™์  ๋กœ๋”ฉ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์‹œ์— ๋ชจ๋“  class๊ฐ€ loading ๋˜์ง€ ์•Š๊ณ , ํ•„์š”ํ•œ ์‹œ์ ์— class๋ฅผ load ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

    • ์ผ๋ถ€ class๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์ „์ฒด application์„ ๋‹ค์‹œ compileํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, application์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•ด๋„ ๋น„๊ต์  ์ ์€ ์ž‘์—…๋งŒ์œผ๋กœ๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ application์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค

API (Application Programing Interface)

: Java System์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด Java์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์–ด๋“ค

ex) java. (= ์ตœ์ดˆ ๋ฒ„์ „ -> ์ฝ”์–ด API), javaX. (ํ™•์žฅ API) ๋“ฑ๋“ฑโ€ฆ..

  • a list of all classes that are part of the Java development kit (JDK). It includes all Java packages, classes, and interfaces, along with their methods, fields, and constructors

JVM (Java Virtual Machine) - ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ 

Java์—์„œ๋Š” ๊ฐ๊ฐ์˜ ์šด์˜์ฒด์ œ์— ๋งž๋Š” JVM์„ ์ œ๊ณตํ•จ

=> ์ปดํŒŒ์ผ ๋œ ๋ชจ๋“  ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ๋“ค์€ JVM์„ ํ†ตํ•ด ๊ทธ ์–ด๋– ํ•œ ํ™˜๊ฒฝ์—์„œ๋„ ์ˆ˜์ • ์ž‘์—… ์—†์ด ์–ด๋””์„œ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅ!

JVM๊ณผ ์†๋„

  • ์ผ๋ฐ˜ application์˜ ์ฝ”๋“œ๋Š” OS๋งŒ ๊ฑฐ์น˜๊ณ  ํ•˜๋“œ์›จ์–ด๋กœ ์ „๋‹ฌ๋˜๋Š”๋ฐ ๋น„ํ•ด,

    • Java application์€ JVM์„ ํ•œ ๋ฒˆ ๋” ๊ฑฐ์น˜๊ณ  ํ•˜๋“œ์›จ์–ด์— ๋งž๊ฒŒ ์™„์ „ํžˆ compile๋œ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๊ณ  **์‹คํ–‰ ์‹œ์— ํ•ด์„(interpret)**๋˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

  • ๊ทธ๋Ÿฌ๋‚˜ ์š”์ฆ˜์—” ๋ฐ”์ดํŠธ์ฝ”๋“œ (compile ๋œ ์ž๋ฐ” ์ฝ”๋“œ)๋ฅผ ํ•˜๋“œ์›จ์–ด์˜ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ์™€ ํ–ฅ์ƒ๋œ ์ตœ์ ํ™˜ ๊ธฐ์ˆ ์ด ์ ์šฉ๋˜์–ด์„œ ์†๋„ ๊ฒฉ์ฐจ๋ฅผ ๋งŽ์ด ์ค„์˜€๋‹ค

JVM์˜ ๊ธฐ๋Šฅ 2๊ฐ€์ง€

  1. to allow Java programs to run on any device or operating system

  2. to manage and optimize program memory

๋žŒ๋‹ค์‹(Lambda Expression)

: ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ '์‹(expression)'์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ.

-> ๋ฉ”์„œ๋“œ๋ฅผ ๋žŒ๋‹ค์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„๊ณผ ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์–ด์ง€๋ฏ€๋กœ, ๋žŒ๋‹ค์‹์„ '์ต๋ช… ํ•จ์ˆ˜(anonymous function)'์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

์ž๋ฐ”์˜ ํ”Œ๋žซํผ

  1. J2SE -> ์ผ๋ฐ˜์ ์ธ ๋ฐ์Šคํฌํƒ‘ PC

โ€‹ (JAVA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ‘œ์ค€์ด ๋˜๋Š” ํ™˜๊ฒฝ)

  1. J2EE -> ์„œ๋ฒ„์šฉ ์ปดํ“จํ„ฐ

    (๋ถ„์‚ฐํ™˜๊ฒฝ ์ง€์› / ๋„ˆ๋ฌด ์–ด๋ ต๊ณ , ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด ๊ณ ๊ฐ€์ž„)

  2. J2ME -> ์†Œํ˜•์ œํ’ˆ ex) ํœด๋Œ€ํฐ, PDA, ์…‹ํƒ‘ ๋ฐ•์Šค

-> (more info from Google)

JAVA SE (Java Platform Standard Edition)

๋ฐ์Šคํฌํ†ฑ, ์„œ๋ฒ„, ์ž„๋ฒ ๋””๋“œ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํ‘œ์ค€ ์ž๋ฐ” ํ”Œ๋žซํผ. ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹  ๊ทœ๊ฒฉ ๋ฐ API์ง‘ํ•ฉ์„ ํฌํ•จ JAVA EE,ME๋Š” ๋ชฉ์ ์— ๋”ฐ๋ผ SE๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ์กด์˜ ์ผ๋ถ€๋ฅผ ํƒํ•˜๊ฑฐ๋‚˜ API๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ตฌ์„ฑ๋œ๋‹ค. SE๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. JDBC๋‚˜ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ด ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Android๊ฐœ๋ฐœํ• ๋•Œ ์ฃผ๋กœ SE๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

JAVA EE (Java Platform EnterPrise Edition)

์ž๋ฐ”๋ฅผ ์ด์šฉํ•œ ์„œ๋ฒ„์ธก ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ”Œ๋žซํผ. ๊ธฐ์กด SE์— ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—์„œ ๋™์ž‘ํ•˜๋Š” ๋ถ„์‚ฐ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ž๋ฐ”์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ์„œ๋ฒ„๋ฅผ ์œ„ํ•œ ํ”Œ๋žซํผ. JAVA SE์— ์„œ๋ฒ„์ธก์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ๋ถ€๊ฐ€ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— SE๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ํฌํ•จํ•œ๋‹ค.

JAVA ME (Java Platform Micro Edition)

์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ž„๋ฒ ๋””๋“œ๋ฅผ ์œ„ํ•œ ์ž๋ฐ” ํ”Œ๋žซํผ์ด๋‹ค. ์ž๋ฐ” ํ”Œ๋ ›ํผ, ๋งˆ์ดํฌ๋กœ ์—๋””์…˜์˜ ์•ฝ์ž์ด๋‹ค. Java ME ๋˜๋Š” J2ME ๋“ฑ์œผ๋กœ ๋ถˆ๋ฆผ ์ œํ•œ๋œ ์ž์›์„ ๊ฐ€์ง„ ํœด๋Œ€์ „ํ™”, PDA, ์„ธํŠธํ†ฑ๋ฐ•์Šค ๋“ฑ์—์„œ Javaํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ”Œ๋žซํผ์ด๋‹ค

์ž๋ฐ” ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์น˜

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ

JAVA_HOME

Path -> ์‹คํ–‰ํŒŒ์ผ์„ ์ฐพ์•„์˜ค๋Š” ๊ฒฝ๋กœ

โ€‹ => ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์˜ ์œ„์น˜๋งŒ์„ ๋‚˜ํƒ€๋ƒ„

Classpath -> ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„์˜ค๋Š” ๊ฒฝ๋กœ

โ€‹ => ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ„

=> Cl๋ณ€์ˆ˜๊ฐ’์— .; ์ž…๋ ฅํ•˜๋ฉด ์ง€๊ธˆ ๋‚ด๊ฐ€ ์žˆ๋Š”๊ณณ์„ ๊ธฐ์ค€์œผ๋กœ ์ฐพ๋Š”๋‹ค๋Š” ๊ฒƒ!

Java๋Š” ๋ฌด์กฐ๊ฑด Class๋ฅผ ๋””์ž์ธ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค!

Java๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค!

public keyword

public Class  [class๋ช…] { }

-> Public ๋„ฃ์œผ๋ฉด ๋ˆ„๊ตฌ๋“ ์ง€ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป

Main Method

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

=> Main function

-> Java Application์„ ๊ตฌ๋™์‹œํ‚ค๋Š” entry point(=start point) ๊ฐ€ ๋œ๋‹ค

-> method ์ด๋ฆ„ ๋’ค์—๋Š” ๋ฌด์กฐ๊ฑด ( ) ๊ฐ€ ๋”ฐ๋ผ๋‹ค๋‹˜ => ๊ด„ํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉด ํ•จ์ˆ˜, ์—†์œผ๋ฉด ๋ณ€์ˆ˜!

  • static keyword: new keyword ์—†์ด method ์„ ์–ธ๋งŒ์œผ๋กœ๋„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์ฃผ๋Š” keyword

  • String: ๋ฐ์ดํ„ฐ ํƒ€์ž… -> ๋ฌธ์ž์—ด์ด๋‹ค

  • args: ์ง€์—ญ๋ณ€์ˆ˜ (๋ณ€์ˆ˜๋ช…)

  • void: ์ฝœํ•œ ์ž๋ฆฌ์— ๋ฆฌํ„ด๊ฐ’(๋ฐ˜ํ™˜๊ฐ’)์ด ์—†๋‹ค๋Š” ๋œป -> ์ด ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค๋Š” ๋œป!

์ ‘๊ทผ ์ œํ•œ์ž (Access Modifier)

public : ๋ชจ๋“  ์ ‘๊ทผ์„ ํ—ˆ์šฉ protected : ๋™์ผ ํŒจํ‚ค์ง€์™€ ํ•˜์œ„ ํด๋ž˜์Šค์—๊ฒŒ ์ ‘๊ทผ ํ—ˆ์šฉ default : ๋™์ผ ํŒจํ‚ค์ง€์—์„œ ์ ‘๊ทผ ํ—ˆ์šฉ private : ํ˜„์žฌ ๊ฐ์ฒด ๋‚ด์—์„œ๋งŒ ํ—ˆ์šฉ

๊ตฌ๋ถ„์ž (Delimeter)

  • class, variable, method๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์ด๋ฆ„

  • ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋œ๋‹ค

  • ์ฒซ ๊ธ€์ž๋Š” ์˜๋ฌธ์ž, _, $ ๊ฐ€๋Šฅ

  • ์˜ˆ์•ฝ์–ด (keyword)๋Š” ์“ธ ์ˆ˜ ์—†๋‹ค

    ex) class, import, new, public, void, etc.

Class ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ 2๊ฐ€์ง€

  1. Data ( = Variable ๋ณ€์ˆ˜)

    : ๋ช…์‚ฌ๋Š” Data!

  2. ๊ธฐ๋Šฅ (= Method ํ•จ์ˆ˜)

    : ๋™์‚ฌ๋Š” method! => ~ ํ•˜๋‹ค ๋ถ™์—ฌ์„œ ๋ง๋˜๋ฉด ๋™์‚ฌ,,,

    -> ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” Function์ด๋ผ๊ณ  ํ•จ!

CLI vs GUI

CLI(Command Line Interface)

: ์ปดํ“จํ„ฐ์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธ€์ž๋กœ ๋ช…๋ น์„ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹ (๋ช…๋ น์–ด๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํ™˜๊ฒฝ)

ex) dos

  • ํ‘œ์‹œ ๋‚ด์šฉ์ด๋‚˜ ์ž…๋ ฅ ๋‚ด์šฉ์ด ๋ฌธ์ž ๋ฒ ์ด์Šค์ธ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค

  • ์•„์ด์ฝ˜์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ๋งˆ์šฐ์Šค ๋“ฑ์˜ ํฌ์ธํ„ฐ ๋””๋ฐ”์ด์Šค๋กœ ์ž…๋ ฅํ•˜๋Š” gui์— ๋น„ํ•ด resource (์†Œํ”„ํŠธ์›จ์–ด์˜ ํฌ๊ธฐ๋‚˜ ๋žจ์˜ ์šฉ๋Ÿ‰, CPU์˜ ์„ฑ๋Šฅ)์˜ ์†Œ๋น„๊ฐ€ ์ ๋‹ค

  • ์ž‘๋™๋ฐฉ์‹

    : main์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ์•Œ์•„์„œ ์ญˆ์šฑ ์‹คํ–‰๋˜๋Š” ํ˜•ํƒœ

GUI (Graphical User Interface)

: ๊ทธ๋ž˜ํ”ฝ ํ™”๋ฉด์—์„œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ํ•ด์„œ ์ปดํ“จํ„ฐ์—๊ฒŒ ์ผ์„ ์‹œํ‚ค๋Š” ๋ฐฉ์‹

  • ๋ช…๋ น์–ด ๋Œ€์‹  ์•„์ด์ฝ˜์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ

  • ๊ทธ๋ž˜ํ”ฝ ํ™˜๊ฒฝ์—์„œ ์ž‘์—… ํ•˜๋Š” ๊ฒƒ

  • ์ž‘๋™๋ฐฉ์‹

    : ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ์–ด๋–ค ๋ช…๋ น์„ ๋‚ด๋ฆด๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋‹ค๊ฐ€

๋ช…๋ น์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹

Cmd (Command Prompt)

: ๋ช…๋ น ํ”„๋กฌํฌํŠธ -> CLI(Command Line Interface): ๋ช…๋ น์„ ์ž…๋ ฅ ํ•ด์•ผ์ง€๋งŒ ์ž‘๋™ํ•จ

์ปดํŒŒ์ผ ๋ช…๋ น์–ด

: cmd ์ฐฝ์—์„œ javac

(์ด ๋ช…๋ น์–ด๊ฐ€ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜๋ ค๋ฉด ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์žก์•„์•ผํ•จ)

ex 1)

*javac = java ์ปดํŒŒ์ผ ๋ช…๋ น์–ด

E: -> e๋กœ ๋“ค์–ด๊ฐ

E:\data>javac -d        -> ๋งŒ๋“ค์–ด๋‘” ์†Œ์ŠคํŒŒ์ผ์„ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ์ปดํŒŒ์ผํ•ด์คŒ 
 => Javac -> ์ปดํŒŒ์ผํ•˜๋ผ! ๋Š” ๋ช…๋ น 
 => -d  -> ํŒจํ‚ค์ง€ ๊ธฐ์ค€์œผ๋กœ ์ปดํŒŒ์ผํ•˜๋ผ

  
E:\data>javac -d . Sample.java    => Sample.java ํŒŒ์ผ์„! (์ปดํŒŒ์ผํ•˜๋ผ)

E:\data>dir             -> directory์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ ๋ณด๊ธฐ

E:\data ๋””๋ ‰ํ„ฐ๋ฆฌ

E:\data>java Sample

Hello World!

ex 2)

E:\data>javac -d . Sample.java

E:\data>javac -d ./bin  Sample.java  -> bin์ด๋ผ๋Š” ํด๋”์— ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜๋ ค๊ณ  ๋„ฃ์€ ๊ฒƒ

E:\data>cd bin   -> cd:  ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์„ ๋ณด์—ฌ์ฃผ๊ฑฐ๋‚˜ ๋ฐ”๊ฟ”์คŒ

E:\data\bin>java Sample  -> main method๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” class name์„ ์จ์คŒ

โ€‹                                           => ๊ทธ๋Ÿฐ๋ฐ!! ํ•ด๋‹น class์•ˆ์— main ํ•จ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚จ!



(์˜ค๋ฅ˜ ๋‚˜๋ฉด ์ด๋ ‡๊ฒŒ ๋œธ)

E:\data\bin>java Sample

์˜ค๋ฅ˜: Sample ํด๋ž˜์Šค์—์„œ ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜์‹ญ์‹œ์˜ค.

  public static void main(String[] args)

๋˜๋Š” JavaFX ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค๋Š” javafx.application.Application์„(๋ฅผ) ํ™•์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

=>๊ทธ๋ž˜์„œ! Java App์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด Main Method๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค!!!!!

* . : ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ

* .. : ์ด์ „ ๋””๋ ‰ํ† ๋ฆฌ

์ธ์ฝ”๋”ฉ ํƒ€์ž… ๊ฒฐ์ •ํ•˜๊ธฐ

UTF-8 -> ์ „์„ธ๊ณ„์˜ ์–ธ์–ด๋ฅผ ๋ชจ๋‘ ํฌ๊ด„ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฝ”๋”ฉ ํƒ€์ž…

: Eclipse์ฐฝ์—์„œ window - preference-general-appearance-workspace

Perspective ๋ฐ”๊พธ๊ธฐ

Eclipse ์ฐฝ ์˜ค๋ฅธ์ชฝ์— ๋งˆ์šฐ์Šค ์˜ฌ๋ฆฌ๋ฉด

JAVA EE๋ผ๊ณ  ๋œธ (Enterprise Edition) -> ์„œ๋ฒ„๋‹จ์ž„ (too much for us)

-> ๊ทธ ์˜†์— open perspective ์—์„œ Java๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ

Project ๋งŒ๋“ค๊ธฐ

Eclipse๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋จผ์ € ์ƒ์„ฑ ํ•ด์•ผํ•จ

File - new - java project

Java ์†Œ์Šค์ฝ”๋“œ์™€ ํด๋ž˜์Šค ์ฝ”๋“œ๋Š” ๋”ฐ๋กœ ๊ด€๋ฆฌํ•จ

๊ทธ๋Ÿฐ๋ฐ! Eclipse๋Š” ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ์„ ํ•ด์„œ bin์— ์ €์žฅํ•ด์คŒ

  • Src ์— ์†Œ์Šค๊ฐ€ ์ €์žฅ๋จ

  • Bin ์— ์ปดํŒŒ์ผ ๋œ ์†Œ์Šค๊ฐ€ ์ €์žฅ๋จ -> byte ํŒŒ์ผ์ด ์ €์žฅ๋จ

Project, Package, Class์˜ ์œ„์น˜์ด๋™ ๋˜๋Š” ์ด๋ฆ„ ๋ณ€๊ฒฝ ํ•  ๋•Œ

: ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ -> refactor -> move or rename

์†Œ์Šค์ฝ”๋“œ ํ™•์ธํ•˜๊ธฐ

  1. JRE System Library - rt.jar - Java.util - Date.class ๋“ค์–ด๊ฐ€๊ฑฐ๋‚˜

  2. Eclipse ์ฐฝ์—์„œ class (ex. Date class)์œ„์— ๋งˆ์šฐ์Šค ๋†“๊ณ  Ctrl + ํด๋ฆญ - attach sourceํ•˜๋ฉด ์†Œ์Šค์ฝ”๋“œ ๋ณผ ์ˆ˜ ์žˆ์Œ

Class

  • System Class

  • Date Class

  • String Class

Last updated