Friday, July 6, 2012

Apache Pivot初探

Apache Pivot是用來建立IIA(Installable Internet Application)應用程式的java函式庫,它最大的特點是元件優美而且執行流暢,而且可以使用Java Web Start的方式進行啟動(也可以當成一般的桌面AP來啟動,或是使用Applet的方式內嵌入網頁中)。
Apache Pivot的位階等同於Java FX、Microsoft Silverlight或是Adobe Flash。本文將介紹三種不同啟動Pivot程式的方法。



首先,我們先照官網上的範例建立一個HelloWorld.java程式。

import java.awt.Color;
import java.awt.Font;

import org.apache.pivot.collections.Map;
import org.apache.pivot.wtk.*;

public class HelloWorld implements Application {

    private Window window = null;

    @Override
    public void startup(Display display, Map<String, String> properties) {
        window = new Window();

        Label label = new Label();
        label.setText("Hello World!使用Apache Pivot呈現中文!新細明體(PMingLiU)");
        label.getStyles().put("font", new Font("PMingLiU", Font.BOLD, 24));
        label.getStyles().put("color", Color.RED);
        label.getStyles().put("horizontalAlignment",
                HorizontalAlignment.CENTER);
        label.getStyles().put("verticalAlignment",
                VerticalAlignment.CENTER);

        window.setContent(label);
        window.setTitle("Hello World!");
        window.setMaximized(true);

        window.open(display);
    }

    @Override
    public boolean shutdown(boolean optional) {
        if (window != null) {
            window.close();
        }

        return false;
    }

    @Override
    public void suspend() {
    }

    @Override
    public void resume() {
    }

}

1.使用桌面應用程式的方式啟動:在HelloWorld.java中加入public void main(String[] args),如下。

//使用桌面應用程式方式啟動
    public static void main(String[] args) {
        DesktopApplicationContext.main(HelloWorld.class, args);
    }

2.使用Applet方式進行啟動:

假設將HelloWorld.java建置成HelloWorld.jar,並且放在lib的資料夾中(意即該資料夾中包含了pivot*.jar以及HelloWorld.jar),所以在lib的上一層資料夾中建立一個HelloWorld.html頁面,網頁原始碼如下:

<applet code="org.apache.pivot.wtk.BrowserApplicationContext$HostApplet"
    archive="lib/pivot-core-2.0.1.jar,lib/pivot-wtk-2.0.1.jar,lib/pivot-wtk-terra-2.0.1.jar,lib/HelloWorld.jar"
    width="160" height="80">
    <param name="application_class_name" value="HelloWorld">
</applet>

3.同樣使用Applet方式啟動,但是為了瀏覽的相容性問題,使用Java官網上建議JavaScript來處理。

<script type="text/javascript" src="http://java.com/js/deployJava.js">
</script><script type="text/javascript">
            
            var attributes = {
                code:"org.apache.pivot.wtk.BrowserApplicationContext$HostApplet",
                width:"240",
                height:"80"
            };
   
            var libraries = [];
            libraries.push("lib/pivot-core-2.0.1.jar");
            libraries.push("lib/pivot-wtk-2.0.1.jar");
            libraries.push("lib/pivot-wtk-terra-2.0.1.jar");
            libraries.push("lib/HelloWorld.jar");
                

            attributes.archive = libraries.join(",");

            
            var parameters = {
                codebase_lookup:false,
                application_class_name:'HelloWorld'
            };

            
            var javaArguments = ["-Dsun.awt.noerasebackground=true",
                "-Dsun.awt.erasebackgroundonresize=true"];

            

            parameters.java_arguments = javaArguments.join(" ");

            
            

            deployJava.runApplet(attributes, parameters, "1.6");
 </script>

4.如果在程式中有使用@BXML annotation的話,則要將applet進行簽章才得以在網頁上正常執行。

我們將在下一篇文章中介紹使用JNLP的方式來啟動Apache Pivot應用程式。




No comments:

Post a Comment