折磨人的17章Release Your Code: packaging and deployment

ㄚ琪很少对深入浅出系列书籍大写特写,但是这一次读到深入浅出 Java 程式设计 第二版17章这里,终于有寻获至宝的感觉,因为在很多Java的书中,讨论发布程式的并不多,而且深入浅出的系列又浅显易懂,趁ㄚ琪在学会发布程式之前,一定要好好的大写特写一下,作为读后心得分享最好。

把程式包进JAR

如何建构可执行的JAR?这里有3个步骤,当然很多废话都省了,如果想看废话,请自行买书来看:

Step 1:确定所有的class档案都在classes目录下

Step2:建立manifest.txt来描述那个class带有main()

档案里会有这样一行:

Main-Class : MyApp

MyApp就是编译出来MyApp.class没有副档名的名称。

Step 3: 执行jar工具来建构带有所有class以及manifest的JAR档

%cd MiniProject/classes

%jar -cvmf manifest.txt app1.jar *.class

%jar -cvmf manifest.txt app1.jar MyApp.class

第一种方法如果是有很多class档案,会很方便,反之,第二种方法只能在有一个class档案时使用

执行JAR

当然很多人会知道这个操作,你可以直接在Windows下双击这个jar档,或是

%cd MyProject/classes

%java -jar app1.jar

把class包进package中

Step 1:选择package名称

ㄚ琪以com.blogspot.ijx为例。此class的名称为PackageExercise,因此完整的名称会是:com.blogspot.ijx.PackageExercise。

说起ijx.blogspot.com,ㄚ琪可是跑了一整天的程式才找到ijx是目前可以用的最简洁的网址了,有空去看看吧,不过现在可能没有东西。

Step 2:在class中加入package指令

这个ㄚ琪就不多说了。

Step 3:设定相对应的目录名称

编译与执行package

加上-d(directory)旗标来编译

%cd MyProject/source

%java -d ../classes com/blogspot/ijx/*.java

-d 旗标会要求编译器姜编译结果根据package的结构来建立目录与输出,如果目录还没有建好,编译器会自动的处理这些工作

执行程式

%cd MyProject/classes

%java com.blogspot.ijx.PackageExercise

 以package建构可执行的JAR

Step 1:确定所有的class档都放在classes目录下正确对应的package结构中

Step 2:建购manifest.txt档来描述哪个class带有main(),以及确认有使用完整的class名称!

在manifest.txt写入一行:

Main-Class : com.blospot.ijx.PackageExercise

然后把manifest档案放到class目录下

Step 3:执行jar工具来建构带有目录结构与manifest的JAR档案

%cd MyProject/classes

%jar -cvmf manifest.txt packEx.jar com

Java Web Start

使用者能透过点选网页上的某个连结来启动Java Web Start的应用程式。一旦程式下载后,它就能独立于浏览器之外来执行。事实上,Java Web Start应用程式只不过是透过网路来散布的应用程式而已。

Java Web Start的运作方式

Step 1:用户端点选某个网页上JWS应用程式的link(.jnlp档)

Step 2:网页伺服器收到request送出.jnlp档案(不是JAR)给用户端的浏览器

Step 3:浏览器启动Java Web Start,JWS的helper app读取.jnlp档案,然后向伺服器要求MyApp.jar

Step 4:网页伺服器送出.jar档

Step 5:JWS取得JAR并呼叫指定的main()来启动应用程式

之后使用者就可以在离线的情况下透过JWS来启动应用程式

.jnlp档案

.jnlp档案(Java Network Lanuch Protocol)来制作Java Web Start的应用程式。.jnlp档案是个简单的XML文件,会有这样的内容:

建构与布署Java Web Start的步骤

Step 1:将程式制作程可执行的JAR

Step 2:撰写.jnlp档案

Step 3:网站jnlp与JAR档案放到伺服器

Step 4:将网页伺服器设定新的mime类型
application/x-java-jnlp-file
这会让网页伺服器以正确的header送出.jnlp资料,如此才能让浏览器知道所接收的是什么

Step 5:设定网页连结到.jnlp档案
<HTML>
<BODY>
<a href=”MyApp2.jnlp”>Launch My Application</a>
</BODY>
</HTML>

呼,热吧!