15
JAVA WEB START sunny.sarang.net 1 작성자 : 김성박 (삼성멀티캠퍼스 전임강사) e-mail : [email protected] homepage : http://sunny.sarang.net 본문서의 배포처 : http://sunny.sarang.net , http://www.javastudy.co.kr 작성일 : 2001년 10월 17일 수요일. - 해당 문서는 김성박([email protected])의 동의 없이 수정, 복사, 삭제 등을 할 수 없으며, 다른 사이트로 김성박의 동의 없이 배포할 수 없습니다. - 해당 문서에서 잘못된 곳이나 수정할 곳을 발견한 분은 [email protected] 으로 메일 보내주신다면 감사하겠습니다. - 웹의 동작방식에 대하여 잘 알고 있어야 합니다. 해당 문서는 Jakarta-Tomcat에서 Servlet 에 대한 내용을 알아야 이해할 수 있습니다. JAVA프로그램을 작성해본 분들이라면, JAVA프로그램을 어떻게 배포를 해야 할까? 하고 많이 망설였을 것입니다. 배포의 어려움 때문에 많은 사람들이 applet 을 많이 이용합니다. 하지만 Applet 을 이용하면 보안상의 문제로 해결하기 어려운 일들을 많이 만나게 됩니다. 그렇다고 해서 Application으로 작성한다면, 배포가 어렵습니다. 많은 컴퓨터 사용자들이 프로그램을 다운로드 받고 설치하는 것을 어려워 하기 때문입니다. 하지만 JAVA WEB START를 이용한다면, 이런 불편한 점은 자동으로 해결됩니다. 경매, email발송, 주식, 관리프로그램 등에 대한 프로그램을 웹상에서 클릭한번으로 자동 으로 설치하고 실행할 수 있도록 해주는 것이 JAVA WEB START가 해주는 일입니다. 아래는 SUN에서 말하는 JAVA WEB START의 장점입니다. * 워드 프로세서 및 스프레드시트와 같은 기존 응용프로그램과 호환되는 대화형 사용자 인터페이스를 사용합니다. * 대역폭 요구 수준이 낮습니다. 클릭할 때마다 응용프로그램이 반드시 웹 서버에 연결될 필요가 없으며 이미 다운로드한 정보를 캐시할 수 있습니다. 따라서 연결이 느려도 더 나은 대화형 기능을 제공할 수 있습니다.

JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

1

작성자 : 김성박 (삼성멀티캠퍼스 전임강사)

e-mail : [email protected]

homepage : http://sunny.sarang.net

본문서의 배포처 : http://sunny.sarang.net , http://www.javastudy.co.kr

작성일 : 2001년 10월 17일 수요일.

- 해당 문서는 김성박([email protected])의 동의 없이 수정, 복사, 삭제 등을 할 수

없으며, 다른 사이트로 김성박의 동의 없이 배포할 수 없습니다.

- 해당 문서에서 잘못된 곳이나 수정할 곳을 발견한 분은 [email protected] 으로 메일

보내주신다면 감사하겠습니다.

- 웹의 동작방식에 대하여 잘 알고 있어야 합니다. 해당 문서는 Jakarta-Tomcat에서

Servlet 에 대한 내용을 알아야 이해할 수 있습니다.

JAVA프로그램을 작성해본 분들이라면, JAVA프로그램을 어떻게 배포를 해야 할까? 하고

많이 망설였을 것입니다. 배포의 어려움 때문에 많은 사람들이 applet 을 많이 이용합니다.

하지만 Applet 을 이용하면 보안상의 문제로 해결하기 어려운 일들을 많이 만나게 됩니다.

그렇다고 해서 Application으로 작성한다면, 배포가 어렵습니다. 많은 컴퓨터 사용자들이

프로그램을 다운로드 받고 설치하는 것을 어려워 하기 때문입니다. 하지만 JAVA WEB

START를 이용한다면, 이런 불편한 점은 자동으로 해결됩니다.

경매, email발송, 주식, 관리프로그램 등에 대한 프로그램을 웹상에서 클릭한번으로 자동

으로 설치하고 실행할 수 있도록 해주는 것이 JAVA WEB START가 해주는 일입니다.

아래는 SUN에서 말하는 JAVA WEB START의 장점입니다.

* 워드 프로세서 및 스프레드시트와 같은 기존 응용프로그램과 호환되는 대화형 사용자

인터페이스를 사용합니다.

* 대역폭 요구 수준이 낮습니다. 클릭할 때마다 응용프로그램이 반드시 웹 서버에 연결될

필요가 없으며 이미 다운로드한 정보를 캐시할 수 있습니다. 따라서 연결이 느려도 더 나은

대화형 기능을 제공할 수 있습니다.

Page 2: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

2

* 오프라인 사용을 지원합니다.

즉, 쉽게 에플리케이션을 설치, 실행할 수 있다는 것입니다. 다만, 단점이 있다면 JAVA

WEB START를 사용하기 위하여는 JAVA WEB START 응용프로그램을 한번은 설치해야

한다는 것입니다. 하지만, 이렇게 한번 설치하고 나서 부터는 손쉽게 자바 응용프로그램을

이용할 수 있습니다. 하지만, 사용자는 웹상에서 프로그램의 목록을 이미 본 상태이므로, 초

기비용만 약간 감수한다면, 그 다음부터는 손쉽게 프로그램을 이용할 수 있습니다. 그 이유

는 한번 다운로드한 프로그램은 로컬상에서 계속 사용할 수 있기 때문입니다.

JAVA WEB START에 대한 더욱 자세한 내용은 아래에서 볼 수 있습니다.

http://java.sun.com/products/javawebstart/

JAVA WEB START를 이용한 데모는 아래의 사이트에서 볼 수 있습니다.

http://java.sun.com/products/javawebstart/demos.html

JAVA WEB START 응용프로그램은 아래에서 다운로드 받습니다.

http://java.sun.com/products/javawebstart/download-windows.html

먼저 JAVA WEB START 데모를 이용하기 위하여는 다운로드 페이지에서 JAVA WEB

START를 다운로드 받아서 설치하시기 바랍니다. 설치프로그램은 실행한 후에 next만 계속

누르면 될 정도로 쉽습니다.

설치가 끝났다면 데모 사이트(그림 1) 에서 노트패드 프로그램을 실행합니다.

Page 3: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

3

그림 1

노트패드를 실행하면 그림2) 와 같이 class 를 다운로드 받는 창이 뜹니다. 문제가 없다면

그림 3) 과 같이 노트패드가 실행되는 것을 알 수 있습니다.

그림 2

Page 4: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

4

그림 3

데모를 종료한 후에는 윈도우 시작 – 프로그램 – JAVA WEB START 폴더에 있는 JAVA

WEB START를 실행하면 그림 4)와 같이 로고가 나온 후 그림5)와 같이 지금까지 실행한

프로그램 목록이 있는 것을 알 수 있습니다. 해당 프로그램들은 offline 상에서도 실행 할

수 있습니다.

Page 5: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

5

그림 4

그림 5

Page 6: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

6

JAVA WEB START를 이용하면 프로그램의 설치와 실행이 무척 쉽다는 것을 알 수 있을

것입니다. 이번에는 실제로 배포하기 위하여 어떻게 하여야 할 것인지 순서대로 실행해 보

도록 하겠습니다.

JAVA WEB START를 이용한 프로그램의 배포

1. JAVA WEB START를 이용하여 프로그램을 배포하기 위하여는 웹 서버가 필요합니

다. 필자는 Jakarta-tomcat 을 이용하였습니다. 지금부터 따라 할 예제들의 소스는

다음과 같은 디렉토리에 존재합니다.

c:₩jtomcat₩webapps₩test 디렉토리에는 HelloWorld.jar , HelloWorld.java ,

helloworld.html 이 위치합니다.

c:₩jtomcat₩webapps₩test₩WEB-INF₩classes 디렉토리에는 HelloWorld.class ( 서블

릿 ) 이 존재합니다.

2. JAVA WEB START를 이용하여 배포할 프로그램을 작성합니다. 여기에서는 간단하

게 프레임만 출력하는 프로그램인 HelloWorld.java 를 작성하였습니다.

HelloWorld.java 시작 ------------------------------------------------

import java.awt.*;

public class HelloWorld extends Frame{

public HelloWorld(String s){

super(s);

}

public static void main(String args[]){

HelloWorld hw = new HelloWorld("hello world");

hw.setSize(500,500);

hw.setVisible(true);

}

}

HelloWorld.java 끝 --------------------------------------------------

3. HelloWorld 프로그램을 컴파일 한 후 아래와 같이 jar 프로그램을 이용하여 압축합

Page 7: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

7

니다.

jar cvf HelloWorld.jar HelloWorld.class

4. JAVA WEB START에 위하여 프로그램을 배포하기 위하여는 mime 형식이

application/x-java-jnlp-file 인 jnlp 라고 불리우는 xml 파일을 작성해야 합니다.

nlp 의 예는 예제 HelloWorld.jnlp 와 같습니다.

HelloWorld.jnlp 시작 ------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="0.2 1.0"

codebase="http://70.12.108.93:8080/test">

<information>

<title>HelloWorld</title>

<vendor>Sun Microsystems, Inc.</vendor>

<homepage href="./helloworld.html"/>

<description>Hello World Demo</description>

<description kind="short">Java Webstart demo</description>

<icon href="images/code.gif"/>

<offline-allowed/>

</information>

<resources>

<j2se version="1.3+"/>

<jar href="HelloWorld.jar" main="true" download="eager"/>

</resources>

<application-desc main-class="HelloWorld"/>

</jnlp>

HelloWorld.jnlp 끝 --------------------------------------------------

각각의 줄을 보면 codebase는 HelloWorld.jar 파일이 위치하고 있는 웹상의 URL을 말합니

다. information 은 HelloWorld class 에 대한 설명입니다. 중요한 것은 resources 부분으

로 j2se 의 버젼과 실제 구동할 jar 파일과 main-class 를 지정하여 줍니다.

Page 8: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

8

이렇게 jnlp 파일을 작성해 주어야 합니다. 하지만, 웹상에서 읽어들이는 jnlp 파일은

mime type 이 text/plain 입니다. 우리는 해당 jnlp 파일의 mime 형식을 application/x-

java-jnlp-file 로 지정해야 합니다.

5. jnlp 의 mime 형식을 application/x-java-jnlp-file 로 지정하기 위하여 서블릿을

작성합니다. text형식일 경우 mime 형식을 만족해주지 못하기 때문에 servlet 을

이용하여 강제적으로 mime type을 지정해 줍니다. ( 서블릿이 아니라 웹서버의 설

정으로 처리할 수도 있습니다. ) HelloWorld.java 서블릿은 jnlp 파일을 서블릿으로

출력하는 예제입니다. 위에서 프레임을 출력하는 HelloWorld.java 와 이름만 같습

니다.

HelloWorld.java 시작 -------------------------------------------------

import java.io.*;

import java.text.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

/**

* jnlp file support

*

* @author kim songpark

*/

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

res.setContentType("application/x-java-jnlp-file");

ServletOutputStream out = res.getOutputStream();

out.println("<?xml version=₩"1.0₩" encoding=₩"utf-8₩"?>");

out.println("<jnlp spec=₩"0.2 1.0₩" codebase=₩"http://70.12.108.93:8080/test₩">");

out.println(" <information>");

Page 9: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

9

out.println(" <title>HelloWorld</title>");

out.println(" <vendor>Sun Microsystems, Inc.</vendor>");

out.println(" <homepage href=₩"../helloworld.html₩"/>");

out.println(" <description>Hello World Demo</description>");

out.println(" <description kind=₩"short₩">Java Webstart demo</description>");

out.println(" <icon href=₩"/images/code.gif₩"/>");

out.println(" <offline-allowed/>");

out.println(" </information>");

out.println(" <resources>");

out.println(" <j2se version=₩"1.3+₩"/>");

out.println(" <jar href=₩"HelloWorld.jar₩" main=₩"true₩"

download=₩"eager₩"/>");

out.println(" </resources>");

out.println(" <application-desc main-class=₩"HelloWorld₩"/>");

out.println("</jnlp>");

}

}

HelloWorld.java 끝 ----------------------------------------------------

6. 이렇게 서블릿까지 작성하였다면 배포를 하는 html 문서를 만듭니다. 이때 배포 문

서에는 JAVA WEB START 프로그램의 다운로드등과 함께 멋지게 디자인 하면 좋

겠지요. 아래는 배포하는 helloworld.html 입니다.

helloworld.html 시작 -------------------------------------------------

이 예제는 Hello World 를 출력하는 에플리케이션에 대한 java webstart의 예제입니

다.<br><br>

<a href=/test/servlet/HelloWorld>헬로우월드실행</a>

helloworld.html 끝 ----------------------------------------------------

7. 6번까지 실행하였다면 모든 준비는 끝난 것 입니다. 실제 브라우져로 그림6) 과 같

이 helloworld.html을 open합니다. “헬로우월드실행”이라는 링크(서블릿)을 클릭하

면 JAVA WEB START 로고가 나온 후에 썰렁하지만 프레임만 있는 윈도우가 실행

될 것입니다. 여기까지가 JAVA WEB START의 간단한 이용방법입니다. 프레임에

Page 10: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

10

는 아무런 이벤트를 지정하지 않았기 때문에 종료가 되지 않습니다. 강제 종료 하

십시요.

그림 6

Page 11: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

11

그림 7

JAVA WEB START와 보안

JAVA WEB START를 이용하면서 Application이 어떤 보안 제약 없이 사용하기 위하여

는 jar 파일에 인증을 하는 방법을 알고 있어야 합니다. 보안 제약 없이 사용하는 방법에

대하여 순서대로 알아보도록 합시다.

1. 먼저 jnlp 파일에는 아래의 내용을 추가합니다.

<security>

<all-permissions/>

</security>

위의 내용이 추가된 HelloWorld.java (서블릿) 은 아래와 같습니다.

HelloWorld.java 시작 -----------------------------------------------

import java.io.*;

import java.text.*;

import java.util.*;

import javax.servlet.*;

Page 12: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

12

import javax.servlet.http.*;

/**

* jnlp file support

*

* @author kim songpark

*/

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

res.setContentType("application/x-java-jnlp-file");

ServletOutputStream out = res.getOutputStream();

out.println("<?xml version=₩"1.0₩" encoding=₩"utf-8₩"?>");

out.println("<jnlp spec=₩"0.2 1.0₩" codebase=₩"http://70.12.108.93:8080/test₩">");

out.println(" <information>");

out.println(" <title>HelloWorld</title>");

out.println(" <vendor>Sun Microsystems, Inc.</vendor>");

out.println(" <homepage href=₩"../helloworld.html₩"/>");

out.println(" <description>Hello World Demo</description>");

out.println(" <description kind=₩"short₩">Java Webstart demo</description>");

out.println(" <icon href=₩"/images/code.gif₩"/>");

out.println(" <offline-allowed/>");

out.println(" </information>");

out.println(" <security>”);

out.println(" <all-permissions/>”);

out.println(" </security>”);

out.println(" <resources>");

out.println(" <j2se version=₩"1.3+₩"/>");

out.println(" <jar href=₩"HelloWorld.jar₩" main=₩"true₩"

download=₩"eager₩"/>");

out.println(" </resources>");

out.println(" <application-desc main-class=₩"HelloWorld₩"/>");

Page 13: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

13

out.println("</jnlp>");

}

}

HelloWorld.java 끝 -------------------------------------------------

2. jar 파일을 인증합니다.

2-1) key 를 생성합니다.도스창을 열고 jar파일이 있는 디렉토리에서 아래와 같이 실행하십

시요. 질문이 나오면 차분히 여러분의 정보를 작성하여 주시기 바랍니다.

keytool -genkey -keyalg rsa -alias tstkey

Enter keystore password: ******* // 암호를 6자 이상 적습니다.

What is your first and last name?

[Unknown]: Your Name

What is the name of your organizational unit?

[Unknown]: YourUnit

What is the name of your organization?

[Unknown]: YourOrg

What is the name of your City or Locality?

[Unknown]: YourCity

What is the name of your State or Province?

[Unknown]: YS

What is the two-letter country code for this unit?

[Unknown]: KR

Is CN=Your Name, OU=YourUnit, O=YourOrg, L=YourCity, ST=YS, C=US

correct?

[no]: yes

Enter key password for tstkey

(RETURN if same as keystore password):

(press [enter])

2-2) export key를 생성합니다. key 이름은 tstcert.crt 입니다. 암호를 물어보면 아까 작성

한 암호를 입력합니다.

keytool -export -alias tstkey -file tstcert.crt

Page 14: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

14

Enter keystore password: *******

Certificate stored in file tstcert.crt

2-3) jar 파일에 sign 합니다. 도스창에서 아래와 같이 입력합니다.

jarsigner HelloWorld.jar tstkey

2-4) jar 파일을 verify 합니다. 도스창에서 아래와 같이 입력합니다.

jarsigner -verify -verbose -certs HelloWorld.jar

2-5) 이렇게 인증된 jar 파일을 JAVA WEB START로 실행하면 그림 8)과 같이 인증확인

창이 뜹니다. 인증창이 뜨면 YES 를 선택한 후 계속 하여 프로그램을 사용합니다.

그림 8

Page 15: JAVA WEB START sunny.sarang - Egloospds12.egloos.com/pds/200906/23/34/javawebstart.pdf · 2009. 6. 23. · JAVA WEB START sunny.sarang.net 2 * 오프라인 사용을 지원합니다

JAVA WEB START

sunny.sarang.net

15

JAVA WEB START 프로그램에서 이미지 사용하기

JAVA WEB START에서 이미지를 사용하기 위하여는 아래와 같이 ClassLoader를 이용

하여 작업을 해야 합니다.

ClassLoader cl = this.getClass().getClassLoader();

Icon cutIcon = new ImageIcon(cl.getResource("yourimage.gif"));

글을 마치며…….

이렇게 JAVA WEB START에 대하여 알아보았습니다. 여러분이 만들어 놓은 Application을

쉽게 배포할 수 있다는 것이 즐겁지 않습니까? 글을 읽고 도움이 되었다면

http://sunny.sarang.net 자유게시판에 글 하나 남겨주는 것도 좋을 것 같지요? ☺

좋은 하루 되십시요.

김 성 박.