μλ° νλ‘κ·Έλλ° κ°λ°κ³Ό ꡬλ
μλ°λ μλ° κ°λ°λκ΅¬μΈ JDKλ₯Ό μ΄μ©ν΄ κ°λ°λκ³ κ°λ°λ νλ‘κ·Έλ¨μ JREμ μν΄ μ»΄ν¨ν°μ JVM μμμ ꡬλλλ€.
- JDKλ μ»΄νμΌλ¬ ν¬ν¨
- JREλ μλ° μ€νκΈ° ν¬ν¨
- JVMμ μλ° κ°μ κΈ°κ³
μλ° κ°λ°μλ λ³ΈμΈμ΄ μ¬μ© μ€μΈ νλ«νΌμ μ€μΉλ JVMμ©μΌλ‘ νλ‘κ·Έλ¨μ μμ±νκ³ λ°°ν¬νλ©΄
κ° νλ«νΌμ λ§λ JVMμ΄ μμμ νλ‘κ·Έλ¨μ μ무 λ¬Έμ μμ΄ κ΅¬λμμΌμ€λ€.
-> μ΄λ¬ν μλ°μ νΉμ±μ "Write Once Run Anywhere" λΌκ³ νλ€.
κ°μ²΄ μ§ν₯ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬ μ¬μ© λ°©μ
νλ‘κ·Έλ¨ μ€νμ λ°λ₯Έ T λ©λͺ¨λ¦¬ ꡬ쑰 λ³ν
Tλ©λͺ¨λ¦¬ ꡬ쑰λ μ€νν± μμ, μ€ν μμ, ν μμμΌλ‘ λλ μ μλ€.
μ€ν μ½λ
public class Start {
public static void main(String[] args) {
System.out.println("Hello OOP!!!");
}
}
main() λ©μλ μ€νλκΈ° μ JVMμμ μννλ μ μ²λ¦¬ μμ
- java.lang ν¨ν€μ§λ₯Ό T λ©λͺ¨λ¦¬ μ€νν± μμμ λ°°μΉ
- import λ ν¨ν€μ§λ₯Ό T λ©λͺ¨λ¦¬ μ€νν± μμμ λ°°μΉ
- νλ‘κ·Έλ¨ μμ λͺ¨λ ν΄λμ€λ₯Ό T λ©λͺ¨λ¦¬ μ€νν± μμμ λ°°μΉ
λ©μΈ λ©μλκ° μ€νλλ €λ©΄ λ©μΈ λ©μλλ₯Ό μν "μ€ν νλ μ"μ΄ νμνλ€. μ΄λ₯Ό μ€ν μμμ ν보ν΄μ€λ€.
μ΄ν λ©μλμ "μΈμλ₯Ό μ μ₯ν λ³μ곡κ°"μ μ€ν νλ μμ 맨 λ°μ ν보νλ€.
κ°λ¨ν νλ‘κ·Έλ¨μ μμνκΈ° μν΄ JREλ λ€μμ JVMμ΄λΌλ κ°μ λ¨Έμ μ λΆν νκ³ JVMμ λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό λ§λ€μ΄ κ°μ’ ν¨ν€μ§ λ‘λ©, λ©μΈ λ©μλ μ€ν νλ μ λ°°μΉ, λ³μ κ³΅κ° λ°°μΉ λ±μ μΌμ μ²λ¦¬νλ€.
λ©μλμ λμ λνλ΄λ λ«λ μ€κ΄νΈλ₯Ό λ§λλ©΄ μμ±ν "μ€ν νλ μ"μ΄ μ¬λΌμ§λ€.
νλ‘κ·Έλ¨μ μμμ μΈ λ©μΈ λ©μλκ° λλλ©΄ JREλ JVMμ μ’
λ£νκ³ JRE μ체λ μ΄μ체μ μμ λ©λͺ¨λ¦¬μμ μ¬λΌμ§κ² λλ€.
λ³μμ λΈλ‘μ μμ±νλ©΄ λ©λͺ¨λ¦¬ ꡬ쑰λ μ΄λ»κ² λ³νν κΉ?
μ€ν μ½λ
public class Start2 {
public static void main(String[] args) {
int i;
i = 10;
double d = 20.0;
}
}
μ€ν ν λ©λͺ¨λ¦¬ ꡬ쑰
iλ₯Ό μ μΈνκ² λλ©΄ JVMμ΄ i λ³μλ₯Ό μν μ€ν 곡κ°μ ν보νλ€. μ΄ ν κ°μ ν λΉνλ©΄ λ³μ 곡κ°μ κ°μ ν λΉνκ² λλ€.
dλ μ μΈκ³Ό λμμ κ°μ ν λΉνλ€. λκ°μ΄ μ€ν 곡κ°μ λ¨Όμ ν보νκ³ κ°μ ν λΉνκ² λλ€.
λΈλ‘ μ€ν νλ μ
if λΈλ‘ μ¬μ©μμλ μλ‘μ΄ μ€ν νλ μμ΄ μμ±λλ€.
μ΄ λ if λΈλ‘ λ°μ μλ λ©μΈ λ©μλ λ΄ λ³μμλ μ κ·Όμ΄ κ°λ₯νλ€.
νμ§λ§, λ©μΈ λ©μλμμλ ifλ¬Έμ μλ λ³μμ μ κ·Όν μ μλ€.
-> λ©μΈ λ©μλ μ€ν μμλ [if μ€ν νλ μ]μ΄ μ‘΄μ¬ν μ μμΌλ―λ‘...
λ³μλ μ΄λμ μ‘΄μ¬ν κΉ?
"λ³μλ λ©λͺ¨λ¦¬μ μ‘΄μ¬νλ€."
λ³μλ μ€ν, ν, μ€νν± μμ 3κ΅°λ° λͺ¨λμ μ‘΄μ¬νλ€.
μ§μ λ³μλ μ€ν νλ μ μμμ μΌμμ 보λΈλ€.
ν΄λμ€ λ©€λ² λ³μλ μ€νν± μμμμ μΌμμ 보λΈλ€. (μ€νν± μμμ μ리μ‘μΌλ©΄ JVMμ΄ μ’ λ£λ λκΉμ§ κ³ μ λ(static)μνλ‘ μμμ μ°¨μ§ν¨)
κ°μ²΄ λ©€λ² λ³μλ ν μμμμ μΌμμ 보λΈλ€. (κ°μ²΄ λ©€λ² λ³μλ€μ κ°μ²΄μ ν¨κ» "κ°λΉμ§ 컬λ ν°"μ μν΄ μΌμμ λ§μΉ¨)
λ©μλ νΈμΆκ³Ό λ©λͺ¨λ¦¬
μ€ν μ½λ
public class Start4 {
public static void main(String[] args) {
int k = 5;
int m;
m = square(k);
}
private static int square(int k) {
int result;
k = 25;
result = k;
return result;
}
}
ν΄λμ€μ square λ©μλκ° μΆκ°λκ³ λ©μΈ λ©μλ μ€νλμ€ square()λ©μλκ° μ€νλλ©΄ λ©λͺ¨λ¦¬ ꡬ쑰λ μ΄λ»κ² λ κΉ?
λ©λͺ¨λ¦¬ ꡬ쑰
- sqaureλ©μλλ μλ‘μ΄ μ€ν νλ μμ λ§λ λ€.
- squareλ©μλμ kμ λ©μΈ λ©μλμ kλ μ΄λ¦μ κ°μ§λ§ μμ ν λ³λμ λ³μ 곡κ°μ κ°μ§λ―λ‘ μλ‘μκ² μν₯μ μ£Όμ§ μλλ€.
- squareμ result κ°μ λ©μλ μ’ λ£ μ μ¬λΌμ§λ―λ‘ "λ°ν κ°"μ 볡μ¬νκ³ ν¨μλ₯Ό μ’ λ£ν΄μΌλ§ λ©μΈμμ κ°μ λ°μ μ μλ€.
- λ©μλμ λΈλλ°μ€ν -> μ λ ₯κ°κ³Ό λ°νκ°μ μν΄μλ§ λ©μλ μ¬μ΄μ κ°μ΄ μ λ¬λ λΏ μλ‘ λ΄λΆμ μ§μλ³μλ₯Ό λ³Ό μ μλ€.
λ©μλ κ° λ³μ μ°Έμ‘°λ₯Ό κΈμ§ν μ΄μ
1. λ©μλλ μμ λ§μ κ³ μ ν 곡κ°μ΄λ―λ‘ μΉ¨λ²νλ©΄ μλλ€.
2. μλ‘μ λ³μλ₯Ό μ°Έμ‘°νλ €λ©΄ μμΉ(μ£Όμ)λ₯Ό μμμΌ νλλ° κ·Έλ΄λ¬λ©΄ ν¬μΈν°κ° νμνλ€. (ν¬μΈν° μλκ² μλ°μ μ₯μ )
3. ν¬μΈν°κ° μμ΄μ λ©μλκ° λ³μ μ°Έμ‘°κ° λΆκ°λ₯νλ€.
μλ°λ λ©μλλ₯Ό νΈμΆνλ©΄ μΈμλ₯Ό μ μ₯ν κ°μ 볡μ¬ν΄μ μ λ¬νλ "Call by value"λ°©μμ μ¬μ©νκ³ μλ€.
κ°μ²΄λ₯Ό λκΈ°λ κ²λ κ°μ²΄μ μ£Όμκ°μ 볡μ¬ν΄μ λκΈ°λ κ²μ΄λ€.
-> μλ°λ μ¬μ€μ "Call by reference"κ° μλ€.
μ μλ³μμ λ©λͺ¨λ¦¬
μ€ν μ½λ
public class Start5 {
static int share;
public static void main(String[] args) {
share = 55;
int k = fun(5, 7);
System.out.println(share);
}
private static int fun(int m, int p) {
share = m + p;
return m - p;
}
}
μ€ν μ€κ° λ©λͺ¨λ¦¬ ꡬ쑰
μ μ λ³μλ μ€νν± μμμ ν λΉλλ κ²μ νμΈν μ μλ€.
λν, λ©μΈ λ©μλμ fun()λ©μλ λ κ³³ λͺ¨λμμ λ³μμ μ κ·Όμλ€.
(μ€ν νλ μμ λ
립μ μΈ μ μ λ³μ)
μ μ λ³μλ νλ‘μ νΈ κ·λͺ¨κ° 컀μ§λ©΄ κ°μ λ³νλ₯Ό μΆμ νκΈ°κ° μ΄λ ΅λ€. λλλ‘ νΌνμ.
λ©ν° μ€λ λ / λ©ν°νλ‘μΈμ€μ μ΄ν΄
λ©ν°μ€λ λ
λ©ν° νλ‘μΈμ€
- λ©ν° μ€λ λλ μ€ν μμλ§ λΆν νμΌλ―λ‘ νλμ μ€λ λμμ λ€λ₯Έ μ€λ λμ μ€νν± μμκ³Ό ν μμμ 곡μ ν΄μ μ¬μ©ν μ μλ€.
- λ©ν° νλ‘μΈμ€ λλΉ λ©λͺ¨λ¦¬λ₯Ό μ κ² μ¬μ©νλ ꡬ쑰
- λ©ν° νλ‘μΈμ€λ νλμ νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€μ T λ©λͺ¨λ¦¬ μμμ μ λ μΉ¨λ²ν μ μλ ꡬ쑰
- μμ ν ꡬ쑰μ΄μ§λ§ λ©λͺ¨λ¦¬ μ¬μ©λμ ν¬λ€.
-> μμ²λΉ μ€λ λ(Servlet)κ° μμ²λΉ νλ‘μΈμ€(CGI)λ³΄λ€ ν¨μ¨μ μΈ μ΄μ
-> λ©ν°μ°λ λμμ μ μλ³μ μ¬μ©μ λ¬Έμ λ₯Ό λ°μμν€κ³ ν΄κ²°μ μν lockμ λ©ν°μ€λ λμ μ₯μ μ λ²λ¦° κ²κ³Ό κ°λ€