- �바언어� 특징
ìž�ë°”ì�˜ 주ë�œ 특징ì�€ 기존ì�˜ 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 í�´ëž˜ìŠ¤ê°€ 있으며, ìž�ë°” 런타임 시스템ì—�서는 모니터와 ì¡°ê±´ ìž ê¸ˆ 함수를 ì œê³µí•´ ì¤�니다.
- ê°€ìƒ�ë¨¸ì‹ ì�´ëž€
��
아키í…�ì³� 중립ì �(Architecture-neutral)ì�´ê³ ì�´ì‹�성(Portable)ì�´ 높다(ìž�바언어ì�˜ 특징중ì�˜ 하나지요)
단ì �
ìž�바는 기계어 코드를 ì§�ì ‘ 실행시키는 것ì�´ ì•„ë‹ˆê³ , 플랫í�¼ ë�…립ì �ì�¸ 중간 코드 형태ì�¸ ë°”ì�´íŠ¸ì½”ë“œë¥¼ ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ì�´ í•´ì„�하여 실행시키는 ì�¸í„°í”„리터 ë°©ì‹�ì�„ ì·¨í•˜ê³ ìžˆìœ¼ë¯€ë¡œ ëŠ�린 수행 시간ì�„ 갖습니다. ì�¼ë°˜ì �으로 C보다 í�‰ê· 8ë°° ì •ë�„ ëŠ�ë¦¬ê³ , 최대 20배까지 ëŠ�립니다.
- �바� 종류
JDK와 함께 ì œê³µë�˜ëŠ” ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ì—� ì�˜í•´ ë�…립ì �으로 실행ë� 수 있ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. 다시 ë§�해서, 여러분ì�˜ 컴퓨터ì—�서 윈ë�„ìš°ì�˜ ë�„스창 ë˜�는 ìœ ë‹‰ìŠ¤ 쉘 등과 ê°™ì�€ 쉘ì—�서 ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ì�„ ì�´ìš©í•˜ì—¬ 실행시키는 ìž�ë°” 프로그램입니다. 위ì—� 나오는 그림ì�€ ìž�ë°” ì• í”Œë¦¬ì¼€ì�´ì…˜ì�˜ 실행 ê³¼ì •ì�„ ìž�세히 ë³´ì—¬ì£¼ê³ ìžˆìŠµë‹ˆë‹¤.
ìž�ë°” ì• í”Œë¦¿(Applet):
<APPLET>~</APPLET> 태그를 ì�´ìš©í•˜ì—¬ HTML 페ì�´ì§€ ë‚´ì—� í�¬í•¨ë�˜ì–´, ìž�ë°” 호환 웹 브ë�¼ìš°ì €ì—� ì�˜í•´ì„œ 실행ë�˜ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. 다시 ë§�해서, 여러분ì�˜ 홈 페ì�´ì§€ ë‚´ì—� 삽입ë�˜ì–´ ìž�ë°” 호환 웹 브ë�¼ìš°ì €ì—� ì�˜í•´ 실행ë�˜ë�„ë¡� 규약ì—� 맞추어 작성ë�œ ìž�ë°” 프로그램ì�„ ë§�하는 것입니다. 다ì�Œì—� 나오는 그림ì�€ ìž�ë°” ì• í”Œë¦¿ì�˜ 실행 ê³¼ì •ì�„ ìž�세히 ë³´ì—¬ì£¼ê³ ìžˆìŠµë‹ˆë‹¤.
�바 서블릿(Servlet):
기존ì�˜ CGI 프로그램과 ê°™ì�´ 웹 서버 프로그램ì�˜ 기능ì�„ 확장하기 위한 ìž�ë°” 프로그램으로서, 웹 서버 ë‚´ì—� 있는 ìž�ë°” 런타임 환경과 함께 ì œê³µë�˜ëŠ” ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ì—� ì�˜í•´ 실행ë�˜ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. ìž�ë°” 서블릿ì�€ 웹 서버 ë‚´ì—�서 ìž�ë°” 런타임 환경과 함께 ì œê³µë�˜ëŠ” ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ì—� ì�˜í•´ 실행ë�˜ê³ , ìž�ë°” ì• í”Œë¦¿ì�€ 웹 서버ì—�서 웹 í�´ë�¼ì�´ì–¸íŠ¸ë¡œ 다운로드 ë�˜ì–´ 웹 í�´ë�¼ì�´ì–¸íЏì—�서 ìž�ë°” 호환 웹 브ë�¼ìš°ì €ì—� 내장ë�œ ìž�ë°” ê°€ìƒ�ë¨¸ì‹ ì—� ì�˜í•´ 실행ë�œë‹¤ëŠ” ì°¨ì�´ì �ì�´ 있습니다. ì�´ë ‡ê²Œ 웹 서버 ë‚´ì—�서 실행ë� 수 있ë�„ë¡� 작성ë�œ ìž�ë°” 서블릿ì�€ 기존ì�˜ 웹 서버 ë‚´ì—�서 실행ë�˜ëŠ” 프로그램ì�¸ CGI 프로그램ì�„ ëŒ€ì²´í• ìˆ˜ 있ë�„ë¡� ê³ ì•ˆë�˜ì—ˆìŠµë‹ˆë‹¤. 다ì�Œì—� 나오는 그림ì�€ ìž�ë°” 서블릿ì�˜ 실행 ê³¼ì •ì�„ ìž�세히 ë³´ì—¬ì£¼ê³ ìžˆìŠµë‹ˆë‹¤.
�바 빈(Bean):
ë�¸íŒŒì�´ ë˜�는 비주얼 ë² ì�´ì§�ì�„ ì�´ìš©í•˜ì—¬ 프로그램ì�„ ìž‘ì„±í• ë•Œ, 버튼ì�´ë‚˜ 창과 ê°™ì�€ 컨트롤들ì�„ 마우스로 ë�Œì–´ë‹¤ 프로그램 ë‚´ì—� ì‚½ìž…í• ìˆ˜ 있ë�„ë¡� ë�˜ì–´ 있는ë�°, ì�´ì™€ 마찬가지로 ìž�ë°” 빈ì�€ 하나ì�˜ 완벽한 기능ì�„ ê°–ê³ ìž¬ì‚¬ìš©ë� 수 있ë�„ë¡� 만들어진 소프트웨어 ì»´í�¬ë„ŒíŠ¸ìž…ë‹ˆë‹¤. 마ì�´í�¬ë¡œì†Œí”„트ì—�서 ì œê³µë�˜ëŠ” ActiveX ì»´í�¬ë„ŒíŠ¸ì™€ ê°™ì�´ ìž�ë°”ì—�서 ì»´í�¬ë„ŒíЏ 프로그램ì�„ 가능하ë�„ë¡� í•´ ì¤�니다.
�바 패키지(package):
다른 ìž�ë°” 프로그램ì—� ì�˜í•´ 삽입(import)ë�˜ì–´ 사용ë� 수 있ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. ì�´ëŸ¬í•œ ìž�ë°” 패키지는 기존ì�˜ 프로그래ë°� 언어ì—�서 사용하ë�˜ ë�¼ì�´ë¸ŒëŸ¬ë¦¬ ë˜�는 ìš´ì˜�ì²´ì œì—�서 ì œê³µí•´ 주는 API 등과 ê°™ë‹¤ê³ ë³¼ 수 있습니다. ìž�ë°” 패키지 ì—시 해당 규약ì�„ ê°–ê² ì§€ìš”. ìž�ë°”ì—�서는 기본ì �으로 ì••ì¶• 파ì�¼ì�˜ 형태로 'casses.zip"ì�´ë�¼ëŠ” ìž�ë°” 패키지가 ì œê³µë�˜ê³ ìžˆê³ , ì••ì¶• 파ì�¼ ë‚´ì—�는 ë””ë ‰í† ë¦¬ 단위로 패키지가 í�¬í•¨ë�˜ì–´ 있습니다. 다ì�Œì—� 나오는 그림ì�€ JDK 1.2.2 ì—�서 ì œê³µë�˜ëŠ” 패키지를 ë³´ì—¬ì£¼ê³ ìžˆìŠµë‹ˆë‹¤.
- "Hello, World!" ì¶œë ¥í”„ë¡œê·¸ëž¨
~cpp
public class HelloWorldApp {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
ì—¬ê¸°ì €ê¸°ì„œ 복사해서 ë¶™ì�´ê¸´í–ˆëŠ”ë�° ë”소린지 모르는게 많네요
�바를 배우면서 알아갔으면 해요
ê·¸ë¦¬ê³ ìž�ë°”ì�˜ 종류가 ì• í”Œë¦¬ì¼€ì�´ì…˜, ì• í”Œë¦¿.. ì�´ëŸ°ê²ƒ ê°™ì�€ë�°
ë²„ì „ê³¼ ê³¼ì •ì—� ëŒ€í•´ì„ ìž˜ ëª¨ë¥´ê² ë„¤ìš” ã…¡.ã…¡;;;;
�바를 배우면서 알아갔으면 해요

ê·¸ë¦¬ê³ ìž�ë°”ì�˜ 종류가 ì• í”Œë¦¬ì¼€ì�´ì…˜, ì• í”Œë¦¿.. ì�´ëŸ°ê²ƒ ê°™ì�€ë�°
ë²„ì „ê³¼ ê³¼ì •ì—� ëŒ€í•´ì„ ìž˜ ëª¨ë¥´ê² ë„¤ìš” ã…¡.ã…¡;;;;
ê³¼ì œ 추가 ìš”êµ¬ì‚¬í• ¶
- "아키í…�ì³� 중립ì �(Architecture-neutral)ì�´ê³ ì�´ì‹�성(Portable)ì�´ 높다" ë�¼ëŠ” ë§�ì�„ 풀어서 설명해 주세요.
- ì�¸í„°í”„리터ë�¼ëŠ” ë°©ì‹�ì�€ 컴파ì�¼ ë°©ì‹�ê³¼ 무엇ì�´ í‹€ë¦¬ê³ ìž�ë°”ì�˜ 특징ì�€ 어떻게 ë�˜ë‚˜ìš”?
- ë²„ì „ê³¼ ê³¼ì •ì�„ ëª¨ë¥´ì‹ ë‹¤ë©´ 힌트를 ë“œë¦¬ê² ìŠµë‹ˆë‹¤. jdk ë�¼ëŠ”ê²ƒì�´ 무엇ì�¸ì§€ 알아보세요.
- "hello, World!"를 ì¶œë ¥í•˜ëŠ”ë�° 있어서 ì§�ì ‘ 실행ì�´ ë�˜ê²Œë�” 만들지 못한거 같군요. ì§�ì ‘ ìž�ì‹ ì�´ 실행ì�´ ë�˜ê²Œë�” í•´ ë³´ë�¼ëŠ” 소리였습니다.










