ìž�ë°”ì�˜ 특징 ¶
- �바는 Sun Microsystems �서 개발한 �체지향형 프로그래� 언어
- 기존ì�˜ 프로그래ë°� 언어ì—� 비해서 간단하며 배우기가 ì‰½ê³ , 핸드í�°ì—�서, 대형 금융권 시스템ì—�까지 ê·¸ 활용범위가 무ê¶�무진한 프로그래ë°� 언어ì�´ìž� 플랫í�¼
장ì � ¶
- 간단하다(Simple):
- ê°�체지향ì �ì�´ë‹¤(Object-Oriented):
- 높ì�€ ì‹ ë¢°ì„±(Reliability)ì�„ 갖는다:
- 보안성(Security)� 갖는다:
아키í…�ì³� 중립ì �(Architecture-neutral)ì�´ê³ ì�´ì‹�성(Portable)ì�´ 높다:
ìž�바는 서로 다른 ì�´ì¢…(Heterogeneous)ì�˜ 네트워í�¬ 환경ì—�서 ë¶„ì‚° ë�˜ì–´ 실행ë� 수 있ë�„ë¡� 설계ë�˜ì—ˆìŠµë‹ˆë‹¤. ì�´ì™€ ê°™ì�€ 환경ì—�서는 ì�‘ìš© 프로그램들ì�´ 다양한 하드웨어 아키í…�ì³� 위ì—�서 실행ë� 수 있어야만 합니다. ì�´ë¥¼ 위해 ìž�ë°” 컴파ì�¼ëŸ¬ëŠ” ì�´ì¢…ì�˜ 하드웨어 ë°� 소프트웨어 플랫í�¼ì—�서 효율ì �으로 코드를 ì „ì†¡í•˜ê¸° 위해 설계ë�œ 아키í…�ì³� 중립ì �ì�¸ 중간 코드ì�¸ ë°”ì�´íŠ¸ì½”ë“œë¥¼ ìƒ�성합니다. ì�´ëŠ” ë�™ì�¼í•œ ìž�ë°” 프로그램ì�˜ ìž�ë°” ë°”ì�´íŠ¸ì½”ë“œê°€ ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ì�´ 설치ë�˜ì–´ 있는 ì–´ë–¤ 플랫í�¼ì—�서ë�„ 실행ë� 수 있ë�„ë¡� 하는 것입니다. ë˜�한, ìž�바는 기본 언어 ì •ì�˜ë¥¼ 엄격하게 함으로ì�¨ 효율ì �ì�¸ ì�´ì‹�성ì�„ ì œê³µí•´ ì£¼ê³ ìžˆìŠµë‹ˆë‹¤. 예를 들어, int 형과 ê°™ì�€ 기본 ë�°ì�´í„°í˜•ì�˜ í�¬ê¸°ë¥¼ 플랫í�¼ê³¼ 무관하게 ì�¼ì •하게 í•˜ê³ , ì—°ì‚°ìž�ì�˜ 기능ì�„ 확실하게 ê·œì •í•˜ê³ ìžˆìŠµë‹ˆë‹¤. C 언어를 ì�´ìš©í•˜ì—¬ int 형ì�„ ì„ ì–¸í• ë•Œ, ë�„스ì—�서는 16비트, 윈ë�„ìš° 95/98/NT 등 32비트 ìš´ì˜� ì²´ì œ 환경ì—�서는 32비트, ìœ ë‹‰ìŠ¤ì—�서는 32비트 등 ê·¸ 플랫í�¼ì—� ë”°ë�¼ í�¬ê¸°ê°€ 다르지만, ìž�ë°”ì—�서는 플랫í�¼ì—� ìƒ�관없ì�´ 32비트로 ê³ ì •ë�˜ë�„ë¡� 하였습니다. ì�´ëŠ” ìž�ë°” 프로그램ì�´ 실행ë�˜ëŠ” 환경ì�´ ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ìœ¼ë¡œ ë�™ì�¼í•˜ê¸° 때문입니다.
- 높ì�€ 수행성능(High-performance)ì�„ ì œê³µí•œë‹¤:
- �터프리터(Interpreter) 방��다:
- 다중 ìŠ¤ë ˆë“œ(Multi-thread)를 ì§€ì›�한다:
단ì � ¶
- ìž�ë°” Applat ì—�서 - ìž�ë°” Bytescode는 소스를 ìž�ë°” 컴파ì�¼ëŸ¬ë¡œ 컴파ì�¼í•œ 결과물로서 HTML 문서ì—� 비해 í�¬ê¸°ê°€ 매우 í�¬ë©° 웹 서버ì—�서 브ë�¼ìš°ì €ë¡œ ì „ì†¡ë�˜ê¸°ê¹Œì§€ê°€ ë§Žì�€ 시간ì�´ 걸린다. ì�¼ë‹¨ ì „ì†¡ë�œ ì• í”Œë¦¿ì�€ 브ë�¼ìš°ì €ê°€ 수행시키므로 ê·¸ ì†�ë�„는 í�´ë�¼ì�´ì–¸íЏì�˜ 시스템 환경과 브ë�¼ìš°ì €ê°€ ë‚´ìž¥í•˜ê³ ìžˆëŠ” JVMì�˜ 성능ì—� ë”°ë�¼ 좌우ë�œë‹¤. 28.8K ì •ë�„ì�˜ 모뎀 환경ì�´ë�¼ë©´ 그럴듯한 ì• í”Œë¦¿ì�„ 다운 받아서 수행하는ë�°ëŠ” ë§Žì�€ ì�¸ë‚´ì‹¬ì�´ 필요하게 ë�œë‹¤. 그러나, ì �ì°¨ ì�¸í„°ë„· í†µì‹ í™˜ê²½ì�´ ì¢‹ì•„ì§€ê³ ìžˆìœ¼ë©° ê°€ì •ì§‘ì�„ ì œì™¸í•œ 대부분ì�˜ 사무실과 í•™êµ� 등ì—�서는 ì „ìš© íšŒì„ ì�´ ê¹”ë ¤ ìžˆê³ , 넉넉한 환경ì�˜ ì „ìš©ì„ ì�´ë�¼ë©´ ì• í”Œë¦¿ì�„ 구ë�™í•˜ëŠ”ë�° 무리가 없다. 근래ì—�는 ê°€ì •ì—�서ë�„ ì´ˆê³ ì†� í†µì‹ í™˜ê²½ì�„ 싼 ê°’ì—� êµ¬ì¶•í• ìˆ˜ 있으므로 ì �ì°¨ì �으로 ì�¸í„°ë„· 환경ì—�서 ì• í”Œë¦¿ì�˜ ì „ì†¡ì�€ 부담ì�´ ë�˜ì§€ 않ì�„ 것ì�´ë‹¤. JVMë�„ ê¸°ìˆ ì �으로 ë§Žì�´ í–¥ìƒ�ë�˜ì—ˆê³ , Sunë¿� 아니ë�¼, IBMê³¼ ê°™ì�€ 매머드급 회사들ì�´ 뛰어들어 ê°œë°œí•˜ê³ ìžˆì–´ 초기 ì§€ì �받았ë�˜ JVMì�˜ 구ë�™ ì†�ë�„는 ì �ì°¨ ë¬¸ì œê°€ ë�˜ì§€ 않는 ìƒ�황ì�´ë‹¤.
VM(ê°€ìƒ�ë¨¸ì‹ )ì—� 대해 ¶
- ìž�ë°” ê°€ìƒ�ë¨¸ì‹ (Java Virtual Machine; Java VM):
사용ìž�는 ìž�ë°” ë°”ì�´íŠ¸ì½”ë“œë¡œ 컴파ì�¼ë�œ ìž�ë°” 프로그램ì�„ 실행시키기 위해서 ì�´ ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ì�„ ì�´ìš©í•˜ë©´ ë�œë‹¤.
ê·¸ 구조를 ì „ë°˜ì �으로 살펴보면 다ì�Œê³¼ 같다.
�래스로�는 �바 소스를 컴파�해서 �성� �래스 파�� 로딩한다.
í�´ëž˜ìФ 파ì�¼ë‚´ì�˜ 메서드, 변수들, ê°�ì²´ 변수들ì�„ ìž�바가ìƒ�ë¨¸ì‹ ì�˜ ê°� 메모리ì—� 로딩한다.
메서드 --> 메서드ì˜�ì—ì—� 로딩
변수들ì�€ --> 스íƒ� ì˜�ì—ì—�..
ê°�체변수, í�´ëž˜ìŠ¤ë³€ìˆ˜ --> íž™ ì˜�ì—..
실행엔진� 메모리� 로딩� 메서드들� 실행한다.
네ì�´í‹°ë¸Œ 메서드는 ìž�ë°” 언어 ë§�ê³ ë‹¤ë¥¸ 언어로 ë�œ 메서드를 호출해서 수행하는 메서드ì�´ë‹¤. ì�´ëŸ¬í•œ 메서드ë�„ ìž�바가ìƒ�ë¨¸ì‹ ì—�서 처리한다.
ìž�바가ìƒ�ë¨¸ì‹ ì�€ 위ì�˜ ê°™ì�€ 구조로 ì–´ë–¤ 환경ì�´ë“ ì§€ ìž�바로 ë§Œë“ í”„ë¡œê·¸ëž¨ì�´ë�¼ë©´ 실행시켜주는ë�° ê°€ìƒ�ì �ì�¸ 하드웨어ì—� ê°€ê¹�다.
�래스로�는 �바 소스를 컴파�해서 �성� �래스 파�� 로딩한다.
í�´ëž˜ìФ 파ì�¼ë‚´ì�˜ 메서드, 변수들, ê°�ì²´ 변수들ì�„ ìž�바가ìƒ�ë¨¸ì‹ ì�˜ ê°� 메모리ì—� 로딩한다.
메서드 --> 메서드ì˜�ì—ì—� 로딩
변수들ì�€ --> 스íƒ� ì˜�ì—ì—�..
ê°�체변수, í�´ëž˜ìŠ¤ë³€ìˆ˜ --> íž™ ì˜�ì—..
실행엔진� 메모리� 로딩� 메서드들� 실행한다.
네ì�´í‹°ë¸Œ 메서드는 ìž�ë°” 언어 ë§�ê³ ë‹¤ë¥¸ 언어로 ë�œ 메서드를 호출해서 수행하는 메서드ì�´ë‹¤. ì�´ëŸ¬í•œ 메서드ë�„ ìž�바가ìƒ�ë¨¸ì‹ ì—�서 처리한다.
ìž�바가ìƒ�ë¨¸ì‹ ì�€ 위ì�˜ ê°™ì�€ 구조로 ì–´ë–¤ 환경ì�´ë“ ì§€ ìž�바로 ë§Œë“ í”„ë¡œê·¸ëž¨ì�´ë�¼ë©´ 실행시켜주는ë�° ê°€ìƒ�ì �ì�¸ 하드웨어ì—� ê°€ê¹�다.
씀으로ì�¨ 얻는 ì�´ë“� ¶
쓰는ë�° 있어서ì�˜ 단ì � ¶
ìž�ë°”ì�˜ 종류와 ë²„ì ¼ ë°� ê·¸ ê³¼ì • ¶
ìž�ë°” 프로그램ì�˜ 종류 ¶
- �바 패키지(package):
ìž�ë°” 언어ì�˜ ìœ ëž˜ ¶
ìž�바는 처ì�Œì—�는 ê°€ì „ ì œí’ˆì—�서 단순하게 사용ë�˜ë‹¤ê°€ 플랫í�¼ ë�…립ì �ì�¸ 기능ì�´ ì�¸í„°ë„·ì�˜ 기능과 조화를 ì�´ë£¬ë‹¤ëŠ” ì �ì�„ ë°�í˜€ì ¸ 1995ë…„ ì�¬ 마ì�´í�¬ë¡œì‹œìŠ¤í…œì¦ˆ(Sun Microsystems)ì—�서 "ìž�ë°”(Java) 언어"를 와 "í•«ìž�ë°”(HotJava)"를 발표하면서 세ìƒ�ì—� 나오기 시작했다. "í•«ìž�ë°”(HotJava)"는 ìž�ë°” 언어로 ë§Œë“ ì›¹ë¸Œë�¼ìš°ì €ë¥¼ ë§�한다. 바로 JDK(Java Developers Kit) 1.0.xë²„ì „ì�„ 발표하면서 본격ì �ì�¸ ìž�ë°” 개발환경ì�´ ì§€ì›�ë�˜ê¸° 시작ë�œë‹¤. ê·¸ë¦¬ê³ Netscape와 ë�¼ì�´ì„¼ìФ 계약ì�„ 통해 Netsacpe 브ë�¼ìš°ì €ì—�서 ìž�바가 시행ë�¨ìœ¼ë¡œì„œ ì „ 세계로 ìž�바가 확산ë�œë‹¤.
그후 1997ë…„ JDK 1.1 ì�„, 1998ë…„ JAVA2ì�˜ 시작ì�¸ JDK 1.2를, 2000ë…„ JDK 1.3, 2002ë…„ì—�는 JDK 1.4ê°€ 발표ë�˜ë©´ì„œ ìž�바는 ë¹ ë¥¸ ì†�ë�„로 ë°œì „í•˜ê²Œ ë�œë‹¤. ê·¸ë¦¬ê³ ê³§ JDK 1.5ê°€ 출시ë� ì˜ˆì •ì�´ë‹¤.
그후 1997ë…„ JDK 1.1 ì�„, 1998ë…„ JAVA2ì�˜ 시작ì�¸ JDK 1.2를, 2000ë…„ JDK 1.3, 2002ë…„ì—�는 JDK 1.4ê°€ 발표ë�˜ë©´ì„œ ìž�바는 ë¹ ë¥¸ ì†�ë�„로 ë°œì „í•˜ê²Œ ë�œë‹¤. ê·¸ë¦¬ê³ ê³§ JDK 1.5ê°€ 출시ë� ì˜ˆì •ì�´ë‹¤.
"Hello, World!" ì¶œë ¥ ¶
~cpp
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}










