U E D R , A S I H C RSS

Java Study2003/첫번째과제/노수민

�바� 특징

  • ìž�바는 Sun Microsystems ì—�서 개발한 ê°�체지향형 프로그래ë°� 언어
  • 기존ì�˜ 프로그래ë°� 언어ì—� 비해서 간단하며 배우기가 쉽고, 핸드í�°ì—�서, 대형 금융권 시스템ì—�까지 ê·¸ 활용범위가 무ê¶�무진한 프로그래ë°� 언어ì�´ìž� 플랫í�¼

장�

  • 간단하다(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 �래스가 있으며, �바 런타임 시스템�서는 모니터와 조건 잠금 함수를 제공해 �니다.

단�

  • ìž�ë°” Applat ì—�서 - ìž�ë°” Bytescode는 소스를 ìž�ë°” 컴파ì�¼ëŸ¬ë¡œ 컴파ì�¼í•œ 결과물로서 HTML 문서ì—� 비해 í�¬ê¸°ê°€ 매우 í�¬ë©° 웹 서버ì—�서 브ë�¼ìš°ì €ë¡œ 전송ë�˜ê¸°ê¹Œì§€ê°€ ë§Žì�€ 시간ì�´ 걸린다. ì�¼ë‹¨ 전송ë�œ 애플릿ì�€ 브ë�¼ìš°ì €ê°€ 수행시키므로 ê·¸ ì†�ë�„는 í�´ë�¼ì�´ì–¸íЏì�˜ 시스템 환경과 브ë�¼ìš°ì €ê°€ 내장하고 있는 JVMì�˜ 성능ì—� ë”°ë�¼ 좌우ë�œë‹¤. 28.8K ì •ë�„ì�˜ 모뎀 환경ì�´ë�¼ë©´ 그럴듯한 애플릿ì�„ 다운 받아서 수행하는ë�°ëŠ” ë§Žì�€ ì�¸ë‚´ì‹¬ì�´ 필요하게 ë�œë‹¤. 그러나, ì �ì°¨ ì�¸í„°ë„· 통신 환경ì�´ 좋아지고 있으며 가정집ì�„ 제외한 대부분ì�˜ 사무실과 í•™êµ� 등ì—�서는 ì „ìš© 회선ì�´ 깔려 있고, 넉넉한 환경ì�˜ 전용선ì�´ë�¼ë©´ 애플릿ì�„ 구ë�™í•˜ëŠ”ë�° 무리가 없다. 근래ì—�는 가정ì—�서ë�„ 초고ì†� 통신 환경ì�„ 싼 ê°’ì—� 구ì•í•  수 있으므로 ì �ì°¨ì �으로 ì�¸í„°ë„· 환경ì—�서 애플릿ì�˜ 전송ì�€ 부담ì�´ ë�˜ì§€ 않ì�„ 것ì�´ë‹¤. JVMë�„ 기술ì �으로 ë§Žì�´ í–¥ìƒ�ë�˜ì—ˆê³ , Sunë¿� 아니ë�¼, IBMê³¼ ê°™ì�€ 매머드급 회사들ì�´ 뛰어들어 개발하고 있어 초기 ì§€ì �받았ë�˜ JVMì�˜ 구ë�™ ì†�ë�„는 ì �ì°¨ 문제가 ë�˜ì§€ 않는 ìƒ�황ì�´ë‹¤.

VM(가�머신)� 대해


  • ìž�ë°” ê°€ìƒ�머신(Java Virtual Machine; Java VM):
�바 가�머신� �바 플랫��기반� �루며, 다양한 하드웨어기반 플랫��서 사용� 수 있다. (다시 �해서, �바 가�머신� 윈�우 95/98/NT, 유닉스, �는 매킨토시 등과 같� 기존� 운�체제 �는 �터넷 �스플로러와 넷스케�프 등과 같� 웹 브�우저 등, 여러 가지 플랫�� 설치�어 사용� 수 있다)
사용�는 �바 바�트코드로 컴파�� �바 프로그램� 실행시키기 위해서 � �바 가�머신� �용하면 �다.

  • ìž�바가ìƒ�머신ì�€ ìž�바로 작성ë�œ 프로그램ì�´ ì–´ë–¤ 환경ì—�서든지 ìž‘ë�™í•  수 있ë�„ë¡� í•´ 준다

    그 구조를 전반�으로 살펴보면 다�과 같다.

    �래스로�는 �바 소스를 컴파�해서 �성� �래스 파�� 로딩한다.
    �래스 파�내� 메서드, 변수들, �체 변수들� �바가�머신� � 메모리� 로딩한다.
    메서드 --> 메서드�역� 로딩
    변수들� --> 스� �역�..
    �체변수, �래스변수 --> 힙 �역..

    실행엔진� 메모리� 로딩� 메서드들� 실행한다.
    네ì�´í‹°ë¸Œ 메서드는 ìž�ë°” 언어 ë§�ê³  다른 언어로 ë�œ 메서드를 호ìœí•´ì„œ 수행하는 메서드ì�´ë‹¤. ì�´ëŸ¬í•œ 메서드ë�„ ìž�바가ìƒ�머신ì—�서 처리한다.
    �바가�머신� 위� 같� 구조로 어떤 환경�든지 �바로 만든 프로그램��면 실행시켜주는� 가��� 하드웨어� 가�다.


  • 씀으로ì�¨ 얻는 ì�´ë“�

  • 앞ì—�서 나온 듯ì�´ ì–´ë–¤ 환경ì—�서든지 사용할 수 있다.
  • 쓰는ë�° 있어서ì�˜ 단ì �

  • ì�¸í„°í”„리터ì�´ë¯€ë¡œ, 작업수행ì—� 있어서 메모리 ì �유나 수행 ì†�ë�„ 등ì�´ C/C++등ì�˜ 언어ì—� 비해 무거운 것 같다

  • ìž�ë°”ì�˜ 종류와 버젼 ë°� ê·¸ 과정


    �바 프로그램� 종류


  • ìž�ë°” 언어를 ì�´ìš©í•˜ì—¬ 작성할 수 있는 ìž�ë°” 프로그램ì�˜ 종류를 살펴보면 다ì�Œê³¼ 같다.

  • ìž�ë°” 애플리케ì�´ì…˜(Application):
  • JDK와 함께 제공ë�˜ëŠ” ìž�ë°” ê°€ìƒ�머신ì—� ì�˜í•´ ë�…립ì �으로 실행ë�  수 있ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. 다시 ë§�해서, 여러분ì�˜ 컴퓨터ì—�서 윈ë�„ìš°ì�˜ ë�„스창 ë˜�는 유닉스 쉘 등과 ê°™ì�€ 쉘ì—�서 ìž�ë°” ê°€ìƒ�머신ì�„ ì�´ìš©í•˜ì—¬ 실행시키는 ìž�ë°” 프로그램입니다. 위ì—� 나오는 그림ì�€ ìž�ë°” 애플리케ì�´ì…˜ì�˜ 실행 과정ì�„ ìž�세히 보여주고 있습니다.


  • ìž�ë°” 애플릿(Applet):
  • <APPLET>~</APPLET> 태그를 ì�´ìš©í•˜ì—¬ HTML 페ì�´ì§€ ë‚´ì—� í�¬í•¨ë�˜ì–´, ìž�ë°” 호환 웹 브ë�¼ìš°ì €ì—� ì�˜í•´ì„œ 실행ë�˜ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. 다시 ë§�해서, 여러분ì�˜ 홈 페ì�´ì§€ ë‚´ì—� 삽입ë�˜ì–´ ìž�ë°” 호환 웹 브ë�¼ìš°ì €ì—� ì�˜í•´ 실행ë�˜ë�„ë¡� 규약ì—� 맞추어 작성ë�œ ìž�ë°” 프로그램ì�„ ë§�하는 것입니다. 다ì�Œì—� 나오는 그림ì�€ ìž�ë°” 애플릿ì�˜ 실행 과정ì�„ ìž�세히 보여주고 있습니다.


  • ìž�ë°” 서블릿(Servlet):
  • 기존ì�˜ CGI 프로그램과 ê°™ì�´ 웹 서버 프로그램ì�˜ 기능ì�„ 확장하기 위한 ìž�ë°” 프로그램으로서, 웹 서버 ë‚´ì—� 있는 ìž�ë°” 런타임 환경과 함께 제공ë�˜ëŠ” ìž�ë°” ê°€ìƒ�머신ì—� ì�˜í•´ 실행ë�˜ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. ìž�ë°” 서블릿ì�€ 웹 서버 ë‚´ì—�서 ìž�ë°” 런타임 환경과 함께 제공ë�˜ëŠ” ìž�ë°” ê°€ìƒ�머신ì—� ì�˜í•´ 실행ë�˜ê³ , ìž�ë°” 애플릿ì�€ 웹 서버ì—�서 웹 í�´ë�¼ì�´ì–¸íŠ¸ë¡œ 다운로드 ë�˜ì–´ 웹 í�´ë�¼ì�´ì–¸íЏì—�서 ìž�ë°” 호환 웹 브ë�¼ìš°ì €ì—� 내장ë�œ ìž�ë°” ê°€ìƒ�머신ì—� ì�˜í•´ 실행ë�œë‹¤ëŠ” ì°¨ì�´ì �ì�´ 있습니다. ì�´ë ‡ê²Œ 웹 서버 ë‚´ì—�서 실행ë�  수 있ë�„ë¡� 작성ë�œ ìž�ë°” 서블릿ì�€ 기존ì�˜ 웹 서버 ë‚´ì—�서 실행ë�˜ëŠ” 프로그램ì�¸ CGI 프로그램ì�„ 대체할 수 있ë�„ë¡� 고안ë�˜ì—ˆìŠµë‹ˆë‹¤. 다ì�Œì—� 나오는 그림ì�€ ìž�ë°” 서블릿ì�˜ 실행 과정ì�„ ìž�세히 보여주고 있습니다.


  • ìž�ë°” 빈(Bean):
  • ë�¸íŒŒì�´ ë˜�는 비주얼 ë² ì�´ì§�ì�„ ì�´ìš©í•˜ì—¬ 프로그램ì�„ 작성할 때, 버튼ì�´ë‚˜ 창과 ê°™ì�€ 컨트롤들ì�„ 마우스로 ë�Œì–´ë‹¤ 프로그램 ë‚´ì—� 삽입할 수 있ë�„ë¡� ë�˜ì–´ 있는ë�°, ì�´ì™€ 마찬가지로 ìž�ë°” 빈ì�€ 하나ì�˜ 완벽한 기능ì�„ ê°–ê³  재사용ë�  수 있ë�„ë¡� 만들어진 소프트웨어 ì»´í�¬ë„ŒíŠ¸ìž…ë‹ˆë‹¤. 마ì�´í�¬ë¡œì†Œí”„트ì—�서 제공ë�˜ëŠ” ActiveX ì»´í�¬ë„ŒíŠ¸ì™€ ê°™ì�´ ìž�ë°”ì—�서 ì»´í�¬ë„ŒíЏ 프로그램ì�„ 가능하ë�„ë¡� í•´ ì¤�니다.


    • ìž�ë°” 패키지(package):
    다른 ìž�ë°” 프로그램ì—� ì�˜í•´ 삽입(import)ë�˜ì–´ 사용ë�  수 있ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. ì�´ëŸ¬í•œ ìž�ë°” 패키지는 기존ì�˜ 프로그래ë°� 언어ì—�서 사용하ë�˜ ë�¼ì�´ë¸ŒëŸ¬ë¦¬ ë˜�는 ìš´ì˜�ì²´ì œì—�서 제공해 주는 API 등과 같다고 ë³¼ 수 있습니다. ìž�ë°” 패키지 역시 해당 규약ì�„ 갖겠지요. ìž�ë°”ì—�서는 기본ì �으로 ì••ì• íŒŒì�¼ì�˜ 형태로 'casses.zip"ì�´ë�¼ëŠ” ìž�ë°” 패키지가 제공ë�˜ê³  있고, ì••ì• íŒŒì�¼ ë‚´ì—�는 디렉토리 단위로 패키지가 í�¬í•¨ë�˜ì–´ 있다.

    �바 언어� 유래


    �바는 처��는 가전 제품�서 단순하게 사용�다가 플랫� �립�� 기능� �터넷� 기능과 조화를 �룬다는 �� �혀져 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ê°€ ìœì‹œë�  예정ì�´ë‹¤.


    "Hello, World!" ìœë ¥


    ~cpp 
    class HelloWorldApp {
        public static void main(String[] args) {
            System.out.println("Hello World!");
        }
    }
    

    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:23:33
    Processing time 0.0150 sec