- [Java 기본] Applet

Posted by 겨울에
2011. 5. 14. 16:27 scrap/ Java/JSP
출처 : http://cafe.naver.com/litave/393


//===========================================================================//
  본 내용은 2002년 제가 Java 강의를 수강하며 정리 했던 내용을
    기본으로 하여 정리하였습니다.
  - 마침 java 기초를 전파할 기회가 생겨 핑계김에 정리해 가려 합니다.
  작성자 : litwave
//---------------------------------------------------------------------------//

<목차>
1. Applet
2. Applet 구성
3. Applet 실행
4. Applet 동작 순서
5. AWT 파일 -> Applet으로 변경
8. Garbage Collector

//---------------------------------------------------------------------------//

1. Applet
  1) java가 Web 환경을 제공하는데 있어, Servlet 이 Server Side Program 이라면, Applet은 Client Side Program 이라고 볼수 있다.
  2) 일반적인 Web이 접근 권한 및 보안 관련 기능이 취약한데 비해 Java Applet은 보아상 안전하다고 이야기 되고 있다.
  3) Servlet은 접근이 좀더 자유롭다.
  4) Applet과 Servlet은 HTML에 포함되어서 돌아가도록 구성되어 있다.
  5Applet 은 아래의 두개 파일을 만들어야 한다.
    - java 파일
    - 실행 시킬수 있는 HTHM파일

2. Applet 구성
  2.1 HTML 구성
    <html>
      <head> <TITLE>제목</TITLE>
      </head>
      <body>
        여기에 내용이 들어 간다.
        <CENTER>
          <APPLET  code="~~.class" width=300height=200>
            //우리가 만든 자바를 실행 시켜줄 수 있는 파일, code=실행시킬 파일명(대소문자 구분), 자바 프로그램이 위치할 크기를 정해준다.
            <PARAR name="num" value=5>        // PARAR 을 통해서 매개변수를 적어준다. 프로그램 실행시 초기화 시킬.. java num 5
          </APPLET>
        </CENGER
      </body>
    </html>

  2.2 Applet 구성
    1) 프로그램 실행 시 HTML을 실행하면 된다.
    2) AWT에서 몇 가지 기능만 제외 시키면 바로 Applet으로 사용할 수 있다.
       - AWT를 Applet으로 변환시 프레임의 제목, 프레임 위치, 크기, 보여줘라 마라 등이 필요하지 않다.

3. Applet 실행
  1) 자바파일을 컴파일 하고, 생성된 class 파일을 html파일과 동일한 폴더에 놓고 아래의 명령을 실행한다.
     appletviewer Ex0128_01.html  //html파일을 실행 시키면 된다.
  2) web browser에서 html 파일을 열어 보면 된다.  //최종 테스트는 여기서 한다.

4. Applet 동작 순서
  1) applet의 실행 순서
  - void main은 더이상 필요하지 않다.

    public void init() { }       //애플릿이 실행 될때.. 제일 먼저 실행되는 Method
       ↓
    public void start() { }
       ↓
    public void update(~) { }
       ↓
    public void paint(Graphic) {  }          // 여기서 자동으로 대기 상태가 된다.
       ↓
       ↓             //다른 사이트로 이동하면
    public void stop() { }        //이것을 실행해도 다른 사이트로 이동한다.
       ↓
                      // 만약 여기서 다시 뒤로 가는 화살표를 누르면.. init()부터 다시 실행 된다.
       ↓             
    public void destroy()          // 웹브라우저를 닫으면 자동으로 실행 된다.
                                   // 가비지 컬렉션이 자동으로 실행 되어서.. 메모리를 자동으로 정리해 준다.

  2) java 실행 순서
    static {  }      ->     public static void main(--) {  }   ->   public void finalize() {}  //가비지 컬렉터를 실행 하도록 해주지만 자주 사용하지 않는다.

  3) 코드 만들기 -> Ex0128_01
    1. 애플릿에서는 메인 객체에 public 을 해주어야 한다. 이것을 안하면 접근 할 수 없다는 에러를 발생 한다.

    2. public static void main(...)을 사용하지 사용하지 않고
       Applet를 상속 받도록 한다.
       java.applet.*;  을 추가해서 사용하도록 한다.

    3. 생성자는 더이상 필요하지 않다.
       public init() { }
       public start() { }
       public paint(Graphics g) { }
       public stop() { }
       destroy() { }
       가 순서적으로 실행 된다.

5. 기존 AWT 파일을 Applet으로 변경하는 방법
  1) java.applet를 import 시킨다.
  2) 현재의 클래스 파일은 더이상 사용하지 않는다(main을 담고 있는 클래스를 없앤다.)
  3) 생성자를 없앤다.
    - 위치지정 등의 필요 없는 것을 지운다.
    - 필요한 것은 init으로 복사 한다.
  4Frame -> Applet로 고치고, 파일명과 클래스 명을 동일하게 만든다.
  5) 안되는 것(메뉴바 관련, 메뉴추가부분, 윈도우와 관련된 이벤트) 를 지운다.


6. Applet을 WEB과 Local Application 에서 동시에 실행 시킬 수 있다.
  - Applet도 하나의 component이다.
  - Applet은 상속관계를 보면 Panel의 일종이다.

7. 애플릿을 사용해서의 이점
  1Image + Sound를 이용할 수 있다.

    Ex0128_03.html, Ex0128_03.java     // 웹과 로컬 어플리케이션으로 실행 되는 프로그램..
                                       // 이미지를 화면에 표시하는 프로그램..

    Ex0128_04.html, Ex0128_04.java     // 버튼에 따라서.. 소리시작과 중지를 하는 프로그램..
                                       //로컬에서는.. 충돌이 잃어 나기 때문에.. 에러를 발생 시킨다..

    Ex0128_04.html, Ex0128_04.java   // 버튼에 따라서.. 소리 내기와 이미지 동시 제어..

8. Garbage Collector(쓰레기 수집기)
  - Jvm에 포함되어 있다.
  1) 정의: 더이상 주소를 참조 받지 않는 메모리 공간을 정리하는 역할
  2) 실행시점
    a) Low Memory 상태일 때.
    b) 최하위 Thread 우선 순위를 갖는다.
    c) Runtime.gc()       -> 두가지 모두 System에 요청만 하는 것이기 때문에 바로 수행 되지 않는다. 
       System.gc()             그러므로 System이 필요한 시기에 알아서 수행 된다.

  3) 가비지 컬레터의 예
    class A {
      int xy;
    }
    A ap = new A();
    ap = new A();     // C언어에서는 기존에 ap 가 가르키고 있는 이전에 할당되어 있는 공간을 지워주고 사용을 해야 하지만
                      // java에서는 지워 주는 역할을 하지 않아도 JVM에서 지워야 할 공간을 기억하고 있다가 메모리 공간이 부족할 때
                      // 자신이 기억하고 있는 공간을 지워 주고, 다른 데이타를 저장 할수 있도록 도와 준다.

  4) 문제 : 가비지 컬렉션이 일어나는 위치 찾기
    1. String str = new String("ABC");      //str 4바이트 공간 할당
    2. String str1 = str;                   //str1 은 str과 같은 공간을 가르키게 된다.
    3. str = null;                          //4바이트 공간은 str1에 의해서 참조를 받고 있기 때문에 Gabage Collection의 참조 대상이 아니다.
    4. str1 = null;                         //이문장 실행 이후에 가비지 컬렉터 대상체가 하나 생긴 것이다.

    void aaa() {
      String str = new String("ABC");
      String str1 = str;
      str = null;
    }
    - 블럭을 벗어 날때 동적으로 할당된 변수는 가비지 컬렉터 대상체가 된다.


// 첨부 파일 참조 : 수업중 진행 소스



//===========================================================================//