Java的部署

Java程序是由一组类所组成的,那就是开发过程的输出。
部署的选择:

1.本机:整个程序都在用户的计算机上以独立、可携的GUI执行,并以可执行的Jar来部署。
2.两种之间的组合:应用程序被分散为在用户本地系统运行的客户端,以及连接到执行应用程序服务的服务器部分。
3.远程:整个应用程序都在服务器端执行,客户端通过非Java形式,可能是浏览器的装置来存取。

组织类

1.组织类就是讲源文件与类文件分离。
2.编译时加上“-d”选项,可以指定编译过的程序要摆在哪里。

1.编译
%cd MyProject/source
%javac -d ../classes MyApp.java
2.编译全部的.java文件
%javac -d ../classes *.java
3.执行程序
%cd MyProject/classes
%java MyApp

目录层次:

JAR

1.JAR就是JavaARchive,这是一个pkzip格式的文件,它把一组类文件包装起来。所以交付时只需要一个JAR文件。
2.全大写的JAR是说包装起来的文件,全小写的jar是用来整理文件的工具。
3.想要创建出可执行的JAR,需要创建出manifest文件。
创建可执行的JAR:
1.确定所有的类文件都在classes目录下。
2.创建manifest.txt来描述哪个类带有main()方法。该文件内容如下:

Main-Class:
MyApp//后面没有.class

3.执行jar工具来创建带有所有类以及manifest的JAR文件。

%cd MiniProject/classes
%jar -cvmf manifest.txt app1.jar *.class
或者
%jar -cvmf manifest.txt app1.jar MyApp.class

关于-cvmf:

-c:创建新的归档文件
-v:在标准输出中生成详细输出
-m:包含指定manifest文件
-f:指定归档文件名

执行JAR:
1.有些系统直接双击就可以,如Windows和Mac OS X。
2.

%cd MyProject/classes
%java -jar app1.jar

包可以防止命名冲突,但这只会在包名称保证不会重复的情况下起作用。最好的方法是在前面加上domain名称。
把类包进包中:
1.选择包名称
2.在类中加入包指令。这条指令必须比import还要靠上

package com.headfirstjava;
import javax.swing.*;
public class PackageExercise {}

3.设定相对应的目录结构:你必须把类放在与包层次结构相对应的目录结构下

编译与执行包:
1.加上-d来编译:

%cd MyProject/source
%javac -d ../classes com/headfi rstjava/PackageExercise.java

2.执行程序:

%cd MyProject/classes
%java com.headfi rstjava.PackageExercise

3.如果classes目录下包的目录结构没有建好,-d会帮你建好。
包创建JAR:
1.确定所有类文件都在classes目录下对应的包结构中。
2.创建manifest.txt文件来描述哪个类带有main()。

Main-Class:
com.headfi rstjava.PackageExercise

3.执行jar工具

%cd MyProject/classes
%jar -cvmf manifest.txt packEx.jar com

manifest文件:

1.将JAR内容列出:% jar -tf packEx.jar
2.解压:% cd Skyler
% jar -xf packEx.jar

jar会自动创建META-INF目录和MANIFEST.MF文件。

Java Web Start

用户通过单击Web页面中的链接来启动Java Web Start应用程序。一旦应用程序下载,它就会在浏览器之外运行,就像其他独立的Java应用程序一样。实际上,Java Web Start应用程序只是一个在Web上分发的可执行JAR。
Java Web Start 工作方式:
1.客户端单击Web页面的JWS应用程序链接(.jnlp文件)。
2.Web服务器(HTTP)获取请求并返回一个.jnlp文件(不是JAR)。
3.Java Web Start由浏览器启动,JWS助手应用程序读取.jnlp文件,并向服务器请求MyApp.jar文件。
4.Web服务器发送请求的. jar文件。
5.Java Web Start获取JAR并通过调用指定的main()方法启动应用程序(就像可执行的JAR一样)。
.jnlp文件:

<?xml version=”1.0” encoding=”utf-8”?><jnlp spec=”0.2 1.0”codebase=”http://127.0.0.1/~kathy”href=”MyApp.jnlp”><information><title>kathy App</title><vendor>Wickedly Smart</vendor><homepage href=”index.html”/><description>Head First WebStart demo</description><icon href=”kathys.gif”/><offline-allowed/></information><resources><j2se version=”1.3+”/><jar href=”MyApp.jar”/></resources><application-desc main-class=”HelloWebStart”/>
</jnlp>

创建与部署Java Web Start的步骤:
1.将程序制作成可执行的JAR。
2.编写.jnlp文件。
3.把.jnlp与JAR文件放到Web服务器。
4.对Web服务器设定新的mime类型。

application/x-java-jnlp-file

5.设定网页连接到.jnlp文件。

<HTML><BODY><a href=”MyApp2.jnlp”>Launch My Application</a></BODY>
</HTML>

Head First Java学习笔记(17):包、jar存档文件和部署相关推荐

  1. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  2. java学习笔记(八)----包,jar文件

    包  //建立包后同一个文件中的类都属于这个包,所有的类都必须按包名所对应的目录,在硬盘中存放.同一个包中的类在相互调用时,是不用指定包名的.    ---在编译时对于下面这个类,用这样的方法  ja ...

  3. Java学习笔记17

    Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看关于finali ...

  4. Java学习笔记17:Java_Set集合_TreeSet集合_二叉树_HashSet集合

    文章目录 1.Set集合 1.1Set集合概述和特点[应用] 1.2Set集合的使用[应用] 2.TreeSet集合 2.1TreeSet集合概述和特点[应用] 2.2TreeSet集合基本使用[应用 ...

  5. Java学习笔记17(面向对象十:综合案例)

    在面向对象这个专题的最后 结合前面多篇文章,用到了面向对象的很多方面知识,做了一个简单的案例: 饭店案例: package hotel;/** 酒店的员工类* 员工共同特点:姓名,工号,工作方法*/ ...

  6. Java学习笔记——JDBC读取properties属性文件

    Java 中的 properties 文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件. 文件的内容是格式是"键=值"(key-valu ...

  7. Java学习笔记:检测一堆图片文件中是否有包含二维码的

    案例一 package part2;import com.google.zxing.Result; import com.yzk18.commons.IOHelpers; import com.yzk ...

  8. java学习笔记十三

    11. 凡是继承了FilterOutputStream或FilterInputStream的类都是过滤流,也就是说他们不能直接跟目标(键盘,文件,网络等,节点流可以)数据打交道,只能包装 Intput ...

  9. java学习笔记 head first java

    文章目录 golang to java Head First Java final 一些与众不同的设计 staic初始化 primitive类型的包装 format 静态的import 内部类 常用包 ...

最新文章

  1. Toad 登陆数据库
  2. python需要php吗-学python需要学linux吗
  3. SPList和SPDocumentLibrary 通过代码更新审批状态
  4. CVPR 2019 | 国防科大提出双目超分辨算法,效果优异代码已开源
  5. pytorch查看loss曲线_pytorch loss总结与测试
  6. c语言一年日历程序,c语言日历程序
  7. pytorch 入门学习反向传播-4
  8. _MSC_VER简介与使用
  9. 猎豹网校 java,猎豹网校JAVA编程思想高级视频教程
  10. 2018大华软件竞赛——模拟赛——第二题
  11. 小管家进销存_管家婆物联宝微订货V2.3发版公告
  12. 云计算与大数据” 研讨会:迎来新的科学价值
  13. 超牛逼的几款轻量级笔记软件!
  14. FAGL_FCV 外币评估 原因代码替代
  15. 贪心算法实例(五):小船过河问题
  16. 【CSDN博客频道携手图灵教育】“移动开发之我见”主题征文活动
  17. 跨平台应用 Qt 对决 HTML5
  18. 用友文件服务器恢复,用友U8账套数据恢复及备份.doc
  19. 多线程使用jxcell 解密xls文件,xlxs文件不支持.暴力破解6位数的Excel密码,jxcell下载
  20. win10无法播放测试音调怎么办?

热门文章

  1. sql多维度组合排序
  2. 流星雨html5,HTML5-流星雨
  3. 3Com控股华为3Com 合资公司将面临新轮调整
  4. 【思维与逻辑】有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?
  5. 2019百度地图离线地图制作
  6. Android通讯录(联系人)-ContentProvider
  7. nfcwriter写入_NFC 标签联系人写入教程:Tagstand Writer
  8. BackTrack3 硬盘安装教程
  9. Hdoj 2190.悼念512汶川大地震遇难同胞——重建希望小学 题解
  10. 关于输入法,想说点什么了