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κ°μ§
to allow Java programs to run on any device or operating system
to manage and optimize program memory
λλ€μ(Lambda Expression)
: λ©μλλ₯Ό νλμ 'μ(expression)'μΌλ‘ ννν κ².
-> λ©μλλ₯Ό λλ€μμΌλ‘ νννλ©΄ λ©μλμ μ΄λ¦κ³Ό λ°νκ°μ΄ μμ΄μ§λ―λ‘, λλ€μμ 'μ΅λͺ ν¨μ(anonymous function)'μ΄λΌκ³ λ νλ€.
μλ°μ νλ«νΌ
J2SE
-> μΌλ°μ μΈ λ°μ€ν¬ν PC
β (JAVA νλ‘κ·Έλλ°μ νμ€μ΄ λλ νκ²½)
J2EE
-> μλ²μ© μ»΄ν¨ν°(λΆμ°νκ²½ μ§μ / λ무 μ΄λ ΅κ³ , λμν μ μκ² νλ μλ² νκ²½μ΄ κ³ κ°μ)
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
keyword-> Public λ£μΌλ©΄ λꡬλ μ§ κ°μ Έλ€ μΈ μ μλ€λ λ»
Main Method
=> Main function
-> Java Applicationμ ꡬλμν€λ entry point(=start point) κ° λλ€
-> method μ΄λ¦ λ€μλ 무쑰건 ( ) κ° λ°λΌλ€λ => κ΄νΈκ° μμΌλ©΄ ν¨μ, μμΌλ©΄ λ³μ!
static
keyword: new keyword μμ΄ method μ μΈλ§μΌλ‘λ λ©λͺ¨λ¦¬μ μ¬λ €μ£Όλ keywordString
: λ°μ΄ν° νμ -> λ¬Έμμ΄μ΄λ€args
: μ§μλ³μ (λ³μλͺ )void
: μ½ν μ리μ 리ν΄κ°(λ°νκ°)μ΄ μλ€λ λ» -> μ΄ λͺ λ Ήλ¬Έμ μ€ννκΈ°λ§ νλ€λ λ»!
μ κ·Ό μ νμ (Access Modifier)
public
: λͺ¨λ μ κ·Όμ νμ© protected
: λμΌ ν¨ν€μ§μ νμ ν΄λμ€μκ² μ κ·Ό νμ© default
: λμΌ ν¨ν€μ§μμ μ κ·Ό νμ© private
: νμ¬ κ°μ²΄ λ΄μμλ§ νμ©
ꡬλΆμ (Delimeter)
class, variable, methodλ₯Ό ꡬλΆνλ μ΄λ¦
μ€λ³΅λλ©΄ μλλ€
첫 κΈμλ μλ¬Έμ, _, $ κ°λ₯
μμ½μ΄ (keyword)
λ μΈ μ μλ€ex) class, import, new, public, void, etc.
Class μμ λ€μ΄κ° μ μλ κ² 2κ°μ§
Data ( = Variable λ³μ)
: λͺ μ¬λ Data!
κΈ°λ₯ (= 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)
ex 2)
=>κ·Έλμ! 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
μμ€μ½λ νμΈνκΈ°
JRE System Library - rt.jar - Java.util - Date.class λ€μ΄κ°κ±°λ
Eclipse μ°½μμ class (ex. Date class)μμ λ§μ°μ€ λκ³ Ctrl + ν΄λ¦ - attach sourceνλ©΄ μμ€μ½λ λ³Ό μ μμ
Class
System Class
Date Class
String Class
Last updated
Was this helpful?