어플리케이션 기동용 Web 페이지의 작성 - xrath.com 에서 번역됨

# 어플리케이션 기동용 Web 페이지의 작성

이 장에서는, 다음의 토픽에 대해 설명합니다.

- 처음에
- Netscape 상에 Java Web Start 가 인스톨 되고 있는지 어떤지를 확인한다
- IE 상에 Java Web Start 가 인스톨 되고 있는지 어떤지를 확인해, 인스톨 되고 있는 경우는 그 버젼을 확인한다
- Java Web Start 가 인스톨 되고 있는 경우는 어플리케이션을 기동해, 그렇지 않은 경우는 자동 인스톨 페이지 또는 범용 다운로드 페이지로의 링크를 표시한다
- 자동 인스톨 페이지를 작성한다

### 처음에

어느 Web 페이지로부터 JNLP 경유로 어플리케이션을 기동하려면 , 그 페이지내에 JNLP 파일에의 링크가 포함되어 있을 필요가 있습니다. 예를 들어, Web 사이트 `http://www.MySite.com` 상에 있는 어플리케이션 `app.jnlp` 를 기동할 수 있도록(듯이) 하려면 , 페이지내에 다음의 링크를 포함할 필요가 있습니다.

> `<a href=http://www.MySite.com/app.jnlp>Launch the application</a>`

다만, 사용자의 컴퓨터에 Java Web Start 가 인스톨되어 있지 않은 경우도 있습니다. 따라서, 페이지내에, 그러한 경우에 대응하기 위한 논리 (스크립트)를 포함할 필요가 있습니다. 실제, 페이지내에 다음과 같은 논리를 포함할 필요가 있습니다.

Java Web Start 가 인스톨 되고 있는지 어떤지를 확인한다

- 인스톨 되고 있는 경우, 어플리케이션을 기동한다
- 인스톨되어 있지 않은 경우, 사용자가 Windows 상에서 IE 를 실행하고 있을지 어떨지를 확인한다
  - 실행하고 있는 경우, Windows 용 JRE 의 자동 인스톨이 가능한 페이지로의 링크를 표시한다
  - 그렇지 않은 경우, SDK/JRE 의 범용 다운로드 페이지로의 링크를 표시한다

이하로, 스크립트 및 자동 인스톨 페이지의 HTML 에 대해 설명합니다.

### Netscape 상에 Java Web Start 가 인스톨 되고 있는지 어떤지를 확인한다

JNLP 경유에서의 어플리케이션 기동시에 Web 페이지상에서 최초로 실행할 필요가 있는 스크립트를, 다음에 나타냅니다.

>     <SCRIPT LANGUAGE="JavaScript">
>     var javawsInstalled = 0;
>     var javaws142Installed=0;
>     var javaws150Installed=0;
>     var javaws160Installed = 0;
>     isIE = "false";
>     if (navigator.mimeTypes && navigator.mimeTypes.length) {
>        x = navigator.mimeTypes['application/x-java-jnlp-file'];
>        if (x) {
>           javawsInstalled = 1;
>           javaws142Installed=1;
>           javaws150Installed=1;
>           javaws160Installed = 1;
>       }
>     }
>     else {
>        isIE = "true";
>     }
>     </SCRIPT>

이 스크립트는,`navigator.mimeTypes` 객체와 그 변수 `navigator.mimeTypes.length` 를 검색해, 브라우저가 Netscape, IE 의 어디에서 있을까를 판단합니다. `length` 가 0 이었을 경우, 그 브라우저는 IE 이다고 보입니다. 그렇다고 하는 것도, IE 에서는 `navigator.mimeTypes` 배열은 정의되고 있습니다만, 그 내용은 항상 빈 상태(empty)이기 때문입니다. length 가 0 이외에서 만났을 경우, 그 브라우저는 Netscape 이다고 보여 한층 더 그 Netscape 상에 있어서의 JNLP MIME 타입의 존재 유무가 체크됩니다. 존재하고 있었을 경우,`javawsInstalled`,`javaws142Installed`,`javaws150Installed`, 및 `javaws160Installed` 의 모두에게, 1 이 설정됩니다. Netscape 의 경우, 어느 버젼의 Java Web Start 가 인스톨 되고 있을까는 판단할 수 없기 때문에, 4 개의 변수의 모두에게 1 이 설정됩니다.

### IE 상에 Java Web Start 가 인스톨 되고 있는지 어떤지를 확인해, 인스톨 되고 있는 경우는 그 버젼을 확인한다

상기 JavaScript 의 후에, 다음과 같은, Internet Explorer 브라우저 관련의 변수를 설정하는 VBScript 를 기술할 필요가 있습니다.

>     <SCRIPT LANGUAGE="VBScript">
>     on error resume next
>     If isIE = "true" Then
>       If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then
>          javawsInstalled = 0
>       Else
>          javawsInstalled = 1
>       End If
>       If Not(IsObject(CreateObject("JavaWebStart.isInstalled. 1.4. 2.0"))) Then
>          javaws142Installed = 0
>       Else
>          javaws142Installed = 1
>       End If
>       If Not(IsObject(CreateObject("JavaWebStart.isInstalled. 1.5. 0.0"))) Then
>          javaws150Installed = 0
>       Else
>          javaws150Installed = 1
>       End If
>       If Not(IsObject(CreateObject("JavaWebStart.isInstalled. 1.6. 0.0"))) Then
>          javaws160Installed = 0
>       Else
>          javaws160Installed = 1
>       End If
>     End If
>     </SCRIPT>

이 VBScript 가 실행되는 것은, 앞의 JavaScript 로 설정된 변수 `isIE` 가 `"true"` 인 경우, 즉, 최종 사용자의 브라우저가 Internet Explorer 인 경우입니다. 이 스크립트는,`JavaWebStart.dll` 내의 `isInstalled` COM 객체를 인스턴스화해, 이것을 사용해 다음의 4 개를 판단합니다.

- 클라이언트 머신에, Java Web Start 의 몇개의 버젼이 인스톨 되고 있는지 어떤지
- 클라이언트 머신에, Java Web Start 1.2 가 인스톨 되고 있는지 어떤지
- 클라이언트 머신에, Java Web Start 1.4. 2 가 인스톨 되고 있는지 어떤지
- 클라이언트 머신에, Java Web Start 1.5. 0 이 인스톨 되고 있는지 어떤지
- 클라이언트 머신에, Java Web Start 1.6. 0 이 인스톨 되고 있는지 어떤지

상기 2 개의 스크립트의 실행이 완료하면(자), 다음에 나타내도록(듯이), 변수 `javawsInstalled`,`javaws142Installed`,`javawsInstalled150`, 및 `javawsInstalled160` 에 1, 0 중 한쪽이 설정된 상태가 됩니다.

> Browser | `javawsInstalled` | `javaws142Installed` | `javaws150Installed` | `javaws160Installed`
> Internet Explorer | 임의의 버젼의 Java Web Start 가 인스톨 되고 있는 경우는 1, 그렇지 않은 경우는 0 | Java Web Start 1.4. 2 가 인스톨 되고 있는 경우는 1, 그렇지 않은 경우는 0 | Java Web Start 1.5. 0 이 인스톨 되고 있는 경우는 1, 그렇지 않은 경우는 0 | Java Web Start 1.6. 0 이 인스톨 되고 있는 경우는 1, 그렇지 않은 경우는 0.
> Netscape Navigator | 임의의 버젼의 Java Web Start 가 인스톨 되고 있는 경우는 1, 그렇지 않은 경우는 0 | 임의의 버젼의 Java Web Start 가 인스톨 되고 있는 경우는 1, 그렇지 않은 경우는 0 | 임의의 버젼의 Java Web Start 가 인스톨 되고 있는 경우는 1, 그렇지 않은 경우는 0 | 임의의 버젼의 Java Web Start 가 인스톨 되고 있는 경우는 1, 그렇지 않은 경우는 0

### Java Web Start 가 인스톨 되고 있는 경우는 어플리케이션을 기동해, 그렇지 않은 경우는 자동 인스톨 페이지 또는 범용 다운로드 페이지로의 링크를 표시한다

한층 더 다른 JavaScript 를 사용해, 다음의 머지않아를 실행할까를 판단할 수가 있습니다.

- 어플리케이션의 jnlp 파일에의 링크를 표시한다 (Java Web Start 가 인스톨 되고 있는 경우)
- Java Web Start 가 포함되어 있는 JRE 6.0 의 자동 다운로드를 기동한다 (Java Web Start 가 인스톨 되지 않고, 사용자가 Windows 상에서 IE 를 실행하고 있는 경우)
- 6.0 SDK/JRE 의 범용 다운로드 페이지로의 링크를 표시한다 (Java Web Start 가 인스톨 되지 않고, 사용자가 Windows 상에서 IE 를 실행하고 있는 경우)

이러한 시나리오를 처리하는 JavaScript 를, 다음에 나타냅니다.

>     <script language="JavaScript">
>     /* Note that the logic below always launches the JNLP application
>      *if the browser is Gecko based.  This is because it is not possible
>      *to detect MIME type application/x-java-jnlp-file on Gecko-based browsers.
>      */
>     if (javawsInstalled || (navigator.userAgent.indexOf("Gecko") ! =-1)) {
>         document.write("<a href=http://www.MySite.com/app.jnlp>Launch
>             the application</a>");
>     } else {
>         document.write("Click ");
>         document.write("<a href=http://java.sun.com/PluginBrowserCheck?
>             pass=http://www.MySite.com/download.html&
>             fail=http://java.sun.com/javase/downloads/ea.jsp>here</a> ");
>         document.write("to download and install JRE 5.0 and
>             the application. ");
>     }
>     </SCRIPT>

주 -

1. 이 스크립트로 사용되고 있는 것은,`javawsInstalled` 뿐입니다. `javaws142Installed`,`javaws150Installed`,`javaws160Installed` 는 사용되고 있지 않습니다.
2. 「`?` 」와「`&`」의 직후에 있는 개행은, 코드를 읽기 쉽게하기 위해(때문에)인 만큼 삽입되고 있습니다. 실제의 스크립트에서는,`href` 캐릭터 라인내에 개행을 포함하지 말아 주세요.

`javawsInstalled` 가 1 인 경우 (Java Web Start 가 벌써 클라이언트상에서 이용 가능하게 되어 있는 경우), 스크립트는, 어플리케이션의 `jnlp` 파일에의 링크를 표시합니다. Java Web Start 가 클라이언트상에 인스톨되어 있지 않은 경우, 스크립트는 대신에,`java.sun.com` Web 사이트상의 `PluginBrowserCheck` 프로그램에의 링크를 표시합니다. `PluginBrowserCheck` 는, 클라이언트가 Microsoft Windows 플랫폼상에서 Internet Explorer 를 실행하고 있을지 어떨지를 체크합니다. 실행하고 있는 경우,`PluginBrowserCheck` 는, 자동 인스톨 페이지 `http://www.MySite.com/download.html` 에 사용자를 리다이렉트(redirect) 합니다 (Windows 상에서 동작하는 IE 향해의 자동 인스톨 페이지의 작성 방법에 대해서는, 다음의 섹션「자동 인스톨 페이지를 작성한다」를 참조). PluginBrowserCheck 는, 사용자가 Microsoft Windows 상에서 Internet Explorer 를 사용하고 있지 않다고 판단했을 경우,`java.sun.com` 상의 6.0 JRE 범용 다운로드 페이지에 사용자를 리다이렉트(redirect) 합니다.

### 자동 인스톨 페이지를 작성한다

주: 다음의 `codebase` 속성으로 지정되었다 `. cab` 파일이 이용 가능하게 되는 것은, 6.0 SDK/JRE 의 GA 릴리스가 공개후입니다. 이하의 방법으로 `. cab` 파일로서 자동 다운로드 가능한 JRE 릴리스의 완전한 일람에 대해서는,자동 다운로드 파일 (Windows 마셔)을 참조해 주세요.

`download.html` 파일은, 서버 측에 배치할 필요가 있습니다. 이 파일에 포함되는 특수한 `OBJECT` 태그와 `PARAM` 태그에 의해, JRE 6.0 의 자동 인스톨러가 클라이언트에 다운로드됩니다. Java Web Start 에 가세해 ActiveX 컨트롤이, 클라이언트에 다운로드됩니다. ActiveX 컨트롤은, 새롭고 인스톨 된 Java Web Start 를 사용해 어플리케이션을 기동합니다. `download.html` 파일의 샘플을, 다음에 나타냅니다.

>     <HTML>
>     <BODY>
>     <OBJECT codebase="http://java.sun.com/update/1. 6.0/jinstall-1_6-windows-i586.cab#Version=6, 0,0,0"
>     classid="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" height=0 width=0>
>     <PARAM name="app" value="http://www.MySite.com/app.jnlp">
>     <PARAM name="back" value="true">
>     <! -- Alternate HTML for browsers which cannot instantiate the object -->
>     <A href="http://java.sun.com/javase/downloads/ea.jsp">
>     Download Java Web Start</A>
>     </OBJECT>
>     </BODY>
>     </HTML>

> `OBJECT` 태그에 의해, JRE 6.0 의 자동 인스톨러를 거둘 수 있었다 `. cab` 파일이 취득됩니다.

> > `http://java.sun.com/update/1. 6.0/jinstall-1_6-windows-i586.cab` 의 URL 가, Java SE 6 릴리스로 사용할 수 있는 최신판의 릴리스를 돌려줍니다.

> > `Version=6, 0,0,0` 의 캐릭터 라인은, 상기의 CLSID 로 등록된 wsdetect.dll 버젼의 비교에 사용합니다. 로컬 머신에 dll 가 인스톨 되고 있어 그 버젼이 지정의 Version 이상이면, 로컬 머신에 dll 를 로드할 뿐입니다. 그 이외는, 지정의 코드 베이스로부터 Java 를 다운로드해 인스톨 합니다.

> 클라이언트에의 JRE 의 인스톨 완료 후에 어플리케이션이 자동적으로 기동되도록(듯이), 어플리케이션의 `jnlp` 파일의 장소가 `PARAM` 태그로 지정되고 있습니다.

> > `app`:Java Web Start 의 Active X 컨트롤이 인스톨 (또는 로드) 되면(자), Java Web Start 가 불려 가 이 URL 로 지정된 어플리케이션이 기동합니다.

> > `back`:어플리케이션 기동 후의 브라우저의 동작을 제어합니다. 현재의 페이지를 계속할 수도 성과 (이 경우, download.html), 이전의 페이지에 돌아올 수도 있습니다.

어플리케이션 개발에 관련하는 문제의 자세한 것은, 다음의 장,「어플리케이션 개발시의 고려점」을 참조해 주세요.