- 바 .
- 바(Java)를 기 때 게 두 가로 나 기 다. 먼, 기, 블리(Assembly), 란(FORTRAN), 볼(COBOL), (PASCAL), 또는 C 과 같 로그래밍 기 는 바 가 고, 다른 나는 바 를 로그래밍 기 는 바 API(Application Programming Interface) 바 로그램 기 바 가머(Java Virtual Machine) 가리는 바 랫(Platform) 다. 다 말, 바 는 Visual C++ 될 고, 바 랫 95/98/NT 및 95/98/NT API 될 다.
바 (Java Language)를 바 로그램(Java Program) 바 러(Java Compiler)를 바 바드(Java Byte code)로 되고, 바 바드는 바 가머 되 되는데, 때 바 가머 바 바드 대 기 리(interpreter)로 동게 됩다. 렇게 바 로그램 방 및 리 방 모두 된다는 것다.
바 러(Java Compiler):
바 바드(Java Byte code):
는 각 CPU 따라 로 다른 기를 갖다. 러 때문 또는 95/98/NT 되 는 되는 로그램 닉가 되 는 는 되 는 것다. 그러나, 바 바드는 러 랫 관 바 가머 될 록 된 드다. 따라, 바 바드로 되기만 면, 바 리 바 가머 되 는 곳면 디든 다. 는 바 개발 또는 로 바 로그램 개발나 때 그 랫 95/98/NT, 닉, 또는 매 경 되록 다.
바 리(Java Interpreter) 또는 바 가머(Java Virtual Machine):
바 바드 명령를 고, 를 바 리가 되 는 랫( 95/98/NT, 닉, 매 ) 맞게 다. 바 리는 바 바드를 기 기능 명고 는 바 가머 구 놓 것로 바 가머과 같 미로 되며, 로 바 가머로 많 됩다.
바 바드는 바 가머 되는 기라고 각면 됩다. 그리고, 모든 바 리는 바 가머 구 놓 것로, 바 가머과 바 리를 같 것로 각 다. . 러 바 가머 JDK(Java Development Kit) 되 고, 바 브라 내 내되 다. 또는, 바 과 같 드 구될 다. 바 바드는 “write once, run anywhere”라는 말 가능게 다. 다 말, 바 를 바 로그램 각 랫( 95/98/NT, 리, 닉, 매 ) 맞게 공되는 바 러를 바드로 다. 그리고, 바드는 바 가머 는 떤 곳 될 다.
그림 2. 랫 독립 바
랫란 로그램 되는 드 또는 같 경 말다. 대부 랫 드 를 께 말다. 그러나 바 랫 드 무관게 동는 랫란 다른 랫과 다릅다. 를 바 랫 다과 같 두 가 구를 갖다.
바 가머(Java Virtual Machine; Java VM):
바 가머 바 랫기반 루며, 다 드기반 랫 (poring) 됩다. 다 말, 바 가머 95/98/NT, 닉, 또는 매 과 같 기 또는 로러 과 같 브라 , 러 가 랫 되 될 며, 는 바 바드로 된 바 로그램 기 바 가머 면 됩다.
바 API(Java Application Programming Interface):
바 API는 API 같 공 는 라브러리 같 것다. 다 말, 바 로그램 개발기 는 라브러리 또는 래들라 다. 러 바 API는 로 관련된 래들 묶 단로 공되고 다.
바 가머 바 랫기반 루며, 다 드기반 랫 (poring) 됩다. 다 말, 바 가머 95/98/NT, 닉, 또는 매 과 같 기 또는 로러 과 같 브라 , 러 가 랫 되 될 며, 는 바 바드로 된 바 로그램 기 바 가머 면 됩다.
바 API(Java Application Programming Interface):
바 API는 API 같 공 는 라브러리 같 것다. 다 말, 바 로그램 개발기 는 라브러리 또는 래들라 다. 러 바 API는 로 관련된 래들 묶 단로 공되고 다.
- 바 및
단다(Simple):
바 된 기 C/C++ 문법 기본로 따르고, C/C++ 가 갖는 리기, , , 다 , (overloading) 복고 기 난 들 로 기 로그램 개발들 고 단게 로그램 개발 록 다.
객다(Object-Oriented):
바는 C++는 달리 부 객 개념 기반로 되고, 객 가 공 는 (Abstraction), (Inheritance), 그리고 다(Polymorphism) 과 같 들 모두 벽게 공 고 다. 또, 바 러 객 경, 라/ 기반 갖는 구 만 다.
높 뢰(Reliability) 갖는다:
바는 러 검를 게 고, 발 는 러 대 게 검를 로 뢰가 높 로그램 록 다. 또, C/C++ 로그램 개발들 가 란럽게 고, 로그램 명 류를 발 는 및 바는 게 로, 를 로 로그래머가 범 는 류를 다는 것다.
보(Security) 갖는다:
바는 경 동록 되다. 그러나, 바는 바 바 런 내 보 기능 내되 기 때문 보 는 로그램 개발 록 다. 러 바 로그램 경 바러 과 같 로그램 괴려는 것 막 록 다.
립(Architecture-neutral)고 (Portable) 높다:
바는 로 다른 (Heterogeneous) 경 되 될 록 되다. 같 경는 로그램들 다 드 될 만 다. 를 바 러는 드 및 랫 로 드를 기 된 립 드 바드를 다. 는 동 바 로그램 바 바드가 바 가머 되 는 떤 랫 될 록 는 것다. 또, 바는 기본 를 격게 로 공 고 다. 를 들, int 과 같 기본 데 기를 랫과 무관게 게 고, 기능 게 규고 다. C 를 int 때, 는 16, 95/98/NT 32 경는 32, 닉는 32 그 랫 따라 기가 다르만, 바는 랫 관 32로 고되록 다. 는 바 로그램 되는 경 바 가머로 동기 때문다.
높 능(High-performance) 공다:
바는 -리가 런 경 검 될 록 구기 때문 난 능 공 다. 기 기(garbage collector) 메모리 관리는 동로 낮 그라드 드로 되 메모리가 때만 동록 로, 바 가머게 무리를 면 보다 나 능 공 록 다. 또, 방대 는 로그램 많 부 본래 랫 당는 기 드로 바 로그램과 록 다.
리(Interpreter) 방다:
바 로 된 바 로그램 바 바드로 고, 렇게 된 바 바드를 바 리가 로, 바 리 런 (porting)된 모든 랫 바 바드를 다.
다 드(Multi-thread)를 다:
바 다 드 기능 동 많 드를 는 로그램 만들 록 다. 바는 동기 메드들 기본로 드로 공로, 바 다 드를 다. 바 API는 드를 기 Thread 래가 며, 바 런 는 모 를 공 다.
바 된 기 C/C++ 문법 기본로 따르고, C/C++ 가 갖는 리기, , , 다 , (overloading) 복고 기 난 들 로 기 로그램 개발들 고 단게 로그램 개발 록 다.
객다(Object-Oriented):
바는 C++는 달리 부 객 개념 기반로 되고, 객 가 공 는 (Abstraction), (Inheritance), 그리고 다(Polymorphism) 과 같 들 모두 벽게 공 고 다. 또, 바 러 객 경, 라/ 기반 갖는 구 만 다.
높 뢰(Reliability) 갖는다:
바는 러 검를 게 고, 발 는 러 대 게 검를 로 뢰가 높 로그램 록 다. 또, C/C++ 로그램 개발들 가 란럽게 고, 로그램 명 류를 발 는 및 바는 게 로, 를 로 로그래머가 범 는 류를 다는 것다.
보(Security) 갖는다:
바는 경 동록 되다. 그러나, 바는 바 바 런 내 보 기능 내되 기 때문 보 는 로그램 개발 록 다. 러 바 로그램 경 바러 과 같 로그램 괴려는 것 막 록 다.
립(Architecture-neutral)고 (Portable) 높다:
바는 로 다른 (Heterogeneous) 경 되 될 록 되다. 같 경는 로그램들 다 드 될 만 다. 를 바 러는 드 및 랫 로 드를 기 된 립 드 바드를 다. 는 동 바 로그램 바 바드가 바 가머 되 는 떤 랫 될 록 는 것다. 또, 바는 기본 를 격게 로 공 고 다. 를 들, int 과 같 기본 데 기를 랫과 무관게 게 고, 기능 게 규고 다. C 를 int 때, 는 16, 95/98/NT 32 경는 32, 닉는 32 그 랫 따라 기가 다르만, 바는 랫 관 32로 고되록 다. 는 바 로그램 되는 경 바 가머로 동기 때문다.
높 능(High-performance) 공다:
바는 -리가 런 경 검 될 록 구기 때문 난 능 공 다. 기 기(garbage collector) 메모리 관리는 동로 낮 그라드 드로 되 메모리가 때만 동록 로, 바 가머게 무리를 면 보다 나 능 공 록 다. 또, 방대 는 로그램 많 부 본래 랫 당는 기 드로 바 로그램과 록 다.
리(Interpreter) 방다:
바 로 된 바 로그램 바 바드로 고, 렇게 된 바 바드를 바 리가 로, 바 리 런 (porting)된 모든 랫 바 바드를 다.
다 드(Multi-thread)를 다:
바 다 드 기능 동 많 드를 는 로그램 만들 록 다. 바는 동기 메드들 기본로 드로 공로, 바 다 드를 다. 바 API는 드를 기 Thread 래가 며, 바 런 는 모 를 공 다.
- 바 단과 결
먼, 바는 기 드를 는 것 고, 랫 독립 드 바드를 바 가머 는 리 방 고 므로 느린 갖다. 반로 C보다 균 8배 느리고, 대 20배까 느립다. 렇게 느린 결기 다과 같 기 다.
JIT(Just-In-Time): 브 드 기를 리 는 기로 동로 다.
HotSpot:
로그램 는 그 를 병목 발는 부 내 다.
바-기 기:
바 리 대 바드 대 기 드를 다.
:
바 러를 때 '-O' 로 다.
브 메드:
C 같 다른 로 된 를 다.
바 경:
바 또는 바 로 같 바를 경 만들 다.
두 , 바 릿 로부 라가 다로드 게 되는데, 때 가 느리다는 문가 다. 런 문 대는 다과 같 기 결려 고 다.
(JAR 또는 ZIP):
바 릿 기 릿 다로드 는데, 때 릿 는 데들 다. 를 들, 메 는 릿 는 HTML 그 릿 경, 당 릿 과 릿 메 는 각 미 것다. 따라, 릿 물론 릿 는 미 다로드 릿 대로 메 겠. 때, 릿 과 관련된 모든 JAR 또는 ZIP 로 묶 게 됩다. 렇게 로, 느린 를 릿과 관련된 들 다로드 는데 드는 다.
(Caching):
다로드 릿과 릿 관련 들 라 디 다. 를 들, 라가 릿 된 를 보다가 다른 깐 들렀다가 릿 된 로 다 돌 경, 릿과 관련된 모든 들 다 다로드는 것 고 라 디 되 는 릿 관련 들 게 됩다. 렇게 로, 느린 를 릿과 관련된 들 다 다로드 는데 리는 다.
느린(lazy) 래 로딩:
나 HTML 내 는 릿 나 래만 경 겠만, 대부 경 러 개 래를 따라 게 됩다. 러 개 래를 경, 모든 래가 동 되는 겠. 또 떤 래는 는 되만, 따라 되 겠. 따라, 바는 경만 래를 로딩 게 됩다. 러 기 느린(lazy) 래 로딩 라 다.
, 모 , 결 바 가머, 된 API가 는 문 때문 렵다. 를 , 바는 다과 같 기 개발고 로 가능게 다.
바 릿 기 릿 다로드 는데, 때 릿 는 데들 다. 를 들, 메 는 릿 는 HTML 그 릿 경, 당 릿 과 릿 메 는 각 미 것다. 따라, 릿 물론 릿 는 미 다로드 릿 대로 메 겠. 때, 릿 과 관련된 모든 JAR 또는 ZIP 로 묶 게 됩다. 렇게 로, 느린 를 릿과 관련된 들 다로드 는데 드는 다.
(Caching):
다로드 릿과 릿 관련 들 라 디 다. 를 들, 라가 릿 된 를 보다가 다른 깐 들렀다가 릿 된 로 다 돌 경, 릿과 관련된 모든 들 다 다로드는 것 고 라 디 되 는 릿 관련 들 게 됩다. 렇게 로, 느린 를 릿과 관련된 들 다 다로드 는데 리는 다.
느린(lazy) 래 로딩:
나 HTML 내 는 릿 나 래만 경 겠만, 대부 경 러 개 래를 따라 게 됩다. 러 개 래를 경, 모든 래가 동 되는 겠. 또 떤 래는 는 되만, 따라 되 겠. 따라, 바는 경만 래를 로딩 게 됩다. 러 기 느린(lazy) 래 로딩 라 다.
, 모 , 결 바 가머, 된 API가 는 문 때문 렵다. 를 , 바는 다과 같 기 개발고 로 가능게 다.
모 문:
러 문는 바가 드 링 구 고, synchronized 명령가 모 기반 동기 기법만 공고 대기 며, notify() 메드가 드를 깨는 가 명고, (priority inversion_ 가능 다. 러 문는 API 결되 고, 리를 벨 고, (priority inheritance) 또는 고 (priority ceiling) 과 같 방 (priority inversion avoidance) 로 고, MuteX, (Binary Semaphore), (Counting Semaphore) 다.
결 바 가머 문:
러 문 느린(Lazy) 래 로딩 발나 메모리 당과 가 렉 결고 느린 경(worst-case) 가며 stop-start 방로 모든 드를 다는 문 다. 를 결기 래를 미리 로딩(class preloading)다나 기(static initializer)를 라브러리 대는 가머 기를 고 로그램는 명 기 를 게 는 기법 다. 그리고, 메모리 당과 기 (garbage collection) 대는 내 럽 가능 기 는 것다. 또는 된 API를 공로 결 다.
러 문는 바가 드 링 구 고, synchronized 명령가 모 기반 동기 기법만 공고 대기 며, notify() 메드가 드를 깨는 가 명고, (priority inversion_ 가능 다. 러 문는 API 결되 고, 리를 벨 고, (priority inheritance) 또는 고 (priority ceiling) 과 같 방 (priority inversion avoidance) 로 고, MuteX, (Binary Semaphore), (Counting Semaphore) 다.
결 바 가머 문:
러 문 느린(Lazy) 래 로딩 발나 메모리 당과 가 렉 결고 느린 경(worst-case) 가며 stop-start 방로 모든 드를 다는 문 다. 를 결기 래를 미리 로딩(class preloading)다나 기(static initializer)를 라브러리 대는 가머 기를 고 로그램는 명 기 를 게 는 기법 다. 그리고, 메모리 당과 기 (garbage collection) 대는 내 럽 가능 기 는 것다. 또는 된 API를 공로 결 다.
* 바 로그램 류
C를 C 로그램 다면 반드 main라는 를 고, 로그램 다고 면 WinMain라는 를 꼭 . 러 것 규(protocol)라 다. 가로, 바 를 러 가 류 바 로그램 는데, 때 각 바 로그램 류 따라 당 규 로 다릅다. 렇듯 바를 바 로그램 다는 것 각 바 로그램 고 는 규 로그램 다는 것다. 바 를 는 바 로그램 류를 보면 다과 같다.
C를 C 로그램 다면 반드 main라는 를 고, 로그램 다고 면 WinMain라는 를 꼭 . 러 것 규(protocol)라 다. 가로, 바 를 러 가 류 바 로그램 는데, 때 각 바 로그램 류 따라 당 규 로 다릅다. 렇듯 바를 바 로그램 다는 것 각 바 로그램 고 는 규 로그램 다는 것다. 바 를 는 바 로그램 류를 보면 다과 같다.
바 리(Application):
JDK 께 공되는 바 가머 독립로 될 록 된 바 로그램다. 다 말, 러 또는 닉 과 같 바 가머 는 바 로그램다. 나는 그림 바 리 과 보고 다.
바 릿(Applet):
<APPLET>~</APPLET> 그를 HTML 내 되, 바 브라 되록 된 바 로그램다. 다 말, 러 내 되 바 브라 되록 규 맞 된 바 로그램 말는 것다. 다 나는 그림 바 릿 과 보고 다.
바 블릿(Servlet):
기 CGI 로그램과 같 로그램 기능 기 바 로그램로, 내 는 바 런 경과 께 공되는 바 가머 되록 된 바 로그램다. 바 블릿 내 바 런 경과 께 공되는 바 가머 되고, 바 릿 라로 다로드 되 라 바 브라 내된 바 가머 된다는 다. 렇게 내 될 록 된 바 블릿 기 내 되는 로그램 CGI 로그램 대 록 고되다. 다 나는 그림 바 블릿 과 보고 다.
바 (Bean):
델 또는 베 로그램 때, 나 과 같 롤들 로 끌다 로그램 내 록 되 는데, 가로 바 나 벽 기능 갖고 될 록 만들 다. 로 공되는 ActiveX 같 바 로그램 가능록 다.
JDK 께 공되는 바 가머 독립로 될 록 된 바 로그램다. 다 말, 러 또는 닉 과 같 바 가머 는 바 로그램다. 나는 그림 바 리 과 보고 다.
<APPLET>~</APPLET> 그를 HTML 내 되, 바 브라 되록 된 바 로그램다. 다 말, 러 내 되 바 브라 되록 규 맞 된 바 로그램 말는 것다. 다 나는 그림 바 릿 과 보고 다.
기 CGI 로그램과 같 로그램 기능 기 바 로그램로, 내 는 바 런 경과 께 공되는 바 가머 되록 된 바 로그램다. 바 블릿 내 바 런 경과 께 공되는 바 가머 되고, 바 릿 라로 다로드 되 라 바 브라 내된 바 가머 된다는 다. 렇게 내 될 록 된 바 블릿 기 내 되는 로그램 CGI 로그램 대 록 고되다. 다 나는 그림 바 블릿 과 보고 다.
델 또는 베 로그램 때, 나 과 같 롤들 로 끌다 로그램 내 록 되 는데, 가로 바 나 벽 기능 갖고 될 록 만들 다. 로 공되는 ActiveX 같 바 로그램 가능록 다.
바 (package):
다른 바 로그램 (import)되 될 록 된 바 로그램다. 러 바 는 기 로그래밍 던 라브러리 또는 공 는 API 과 같다고 볼 다. 바 당 규 갖겠. 바는 기본로 로 'casses.zip"라는 바 가 공되고 고, 내는 디렉리 단로 가 되 다. 다 나는 그림 JDK 1.2.2 공되는 를 보고 다.
다른 바 로그램 (import)되 될 록 된 바 로그램다. 러 바 는 기 로그래밍 던 라브러리 또는 공 는 API 과 같다고 볼 다. 바 당 규 갖겠. 바는 기본로 로 'casses.zip"라는 바 가 공되고 고, 내는 디렉리 단로 가 되 다. 다 나는 그림 JDK 1.2.2 공되는 를 보고 다.
따라, 러 나 바 로그램 때, 나된 나 규 맞게 바 로그램 만, 나 바 로그램 규들 두 개 만록 다.
렇게 두 개 바 로그램 규 만는 바 로그램 러 바 로그램 게 됩다. 를 들, 나 바 로그램 는데, 바 로그램 바 리 규 만 고 바 릿 규 만 다면, 바 로그램 JDK 께 공되는 바 가머 되는 바 리로 독립로 될 고, 바 브라 내된 바 가머 바 릿로 될 다는 것다. 렇게 바 를 러 규 맞는 바 로그램 만, 나 바 로그램 굳 두 개 규 모두 만록 바 로그램 는 경는 바 리과 바 릿 경를 고는 다.
~cpp class HelloWorldApp { public static void main(String args[]) { System.out.println("Hello World!"); // Display the string } }
뭐 대 긴 는데, 바 대 개념부 명 듣고 디가 공 것 같다.
바를 는 람 강 , 독 10보다 며, 기를 대로 물 높게 다.
무 내 려것만 려고 말고, 근근 디를 면 방끝날때까 '바란 무가?' 대
개념만 공것라 각다.
물론 디는 람들 독 겠.
디로..... 것부 배 나갔면 .
가 내 ¶
- 과 가 던 바가 바로 "바를 는 것가?" 가 바로 는데 게 & 만 과를 끝 같군. 밑 문 내 단 10% 를 못다는 느낌 드. 과를 근근 다 보면 "바는 무며 는가?" 대 답 기 바랍다.
- 다른 람 과 꼼꼼 보기 바랍다. 느껴구(물론 랑 내 같;;) 그 다 기 바랍다.
- 나 로그램 못군. 로그램 보기 바랍다.