前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
- JWS讓用戶可以下載服務器端的Java Application到本機運行,并且沒有安裝、配置等繁瑣的操作
- JWS的運行原理:瀏覽器運行Java Application的鏈接指向的不是程序本身,而是一個*.jnlp(Java Network Launching Protocol,java網絡加載協議 ),該文件包含了Java Application的一些配置信息。瀏覽器解讀這個文件的信息,將服務器端的Java Application下載到本機上,然后運行。由于第一次運行需要下載程序,所以運行比較慢。第二次運行只是檢查版本是否有沒有更新,如果沒有直接在本地運行,如果更新則會自動更新這個程序。
?
Java Web Start實例搭建
- 新建一個Java Project,命名為JavaWebStart
package jws;import javax.swing.*;public class HelloWord {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() { public void run() {JFrame jFrame = new JFrame("HelloWorld"); JLabel label = new JLabel("Hello, world!"); JPanel jPanel = new JPanel(); jPanel.add(label); jFrame.add(jPanel); jFrame.pack(); jFrame.setSize(400, 150); jFrame.setLocation(400, 300); jFrame.setVisible(true); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }});}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
-
打成可執行的Jar包?
JavaWebStart->Export->Runnable JAR file->選擇存放位置和jar名(如:C:\Users\Desktop\JavaWebStart:/HelloWorld.jar)和運行的main方法所在的類(jws.HelloWord)->finish -
數字簽名?
對打成可執行文件的HelloWorld.jar包用下面的命令來簽名:?
1、到Dos狀態下,,進入你們需發布應用程序的jar包所在的目錄,運行下面這句話:?
keytool -genkey -keystore myKeystore -alias jwstest?
(它們將會提示你們輸入用戶名、密碼等,,不用理它們,,按照提示隨便輸入即可,,但一定要記住密碼..運行結束它們將會在當前路徑下創建名為myKeystore(的)文件..)?
說明:keytool是JDK自帶的一個用于數字簽名的工具。該語句的意思是生成一個證書,并且其文件名是:myKeystore。?
2、用證用為應用程序簽名?
jarsigner -keystore myKeystore HelloWorld.jar jwstest?
(其中HelloWorld.jar是你們(的)jar包名(這里就是HelloWorld.jar),你們需要修改它們,,別(的)就不必修改了..運行時會提示你們輸入密碼,,就是你們剛才在生成myKeystore文件時設定(的)密碼..) -
在tomcat的webapps文件夾下新建一個JavaWebStart文件夾,將HelloWorld.jar文件拷入到它里面。
- 在JavaWebStart的文件下創建一個helloWorld.jnlp文件。
<?xml version="1.0" encoding="UTF-8"?>
<!--codebase 屬性指出搜索應用程序資源的頂級URL, 下面的icon/jar元素都是以這個URL為基本. -->
<jnlp codebase="http://localhost:8080/JavaWebStart/"><information><!-- 在"開始"-"運行"菜單中輸入"javaws"或"javaws -viewer"啟動Web Start, 會看到客戶端已經安裝的webstart應用程序 --><!-- title:應用程序標題 vendor:供應商;title/vendor元素是必須, 會顯示在用"javaws -viewer"命令打開的應用程序緩存查看器(Java Application Cache Viewer)中 --><title>Hello World</title><vendor>Lively Corporation</vendor><description>HelloWorld Test Example</description><!--homepage :存放有關應用程序的相關文檔的URL,如help文件等,僅僅是description作用--><homepage href="http://127.0.0.1:8080/JavaWebStart/index.html" mce_href="http://127.0.0.1:8080/JavaWebStart/index.html" /> <!-- icon 指定圖標會顯示在應用程序緩存查看器中(作為java web應用程序的圖標),在查看器中新建JavaWebStart快捷方式到桌面時也會顯示為快捷方式圖標,只支持GIF/JPEG格式,其它格式無效 --><icon kind="splash" href="images/Fish13.jpg" mce_href="images/Fish13.jpg" /> <!-- 允許離線啟動,可以使用javaws -offline命令--> <offline-allowed/> </information><resources><!-- 指定客戶端需要安裝的j2se版本,下面指定為1.5,也可以用1.5+表示1.5版本以上的, 如果這里設置版本為1.5,而我機裝的是1.6(所以我這里設置為1.7也會出現后面的問題),那么提示正在請求 JRE 1.5,過一段時間提示:無法啟用該應用程序,提示手動更新j2se版本 改為1.5+就可以用1.6的JRE來運行它了 --> <j2se version="1.5+" /> <!-- 指定要下載到本地的jar文件(注意,所有的文件都需要打包才能夠下載), 可以包含一些資源文件,如icons/configuration files,可以使用getResource方法取得 --> <jar href="HelloWorld.jar" mce_href="HelloWorld.jar" /> </resources> <!-- 此項是指開放用戶本機的所有權限給應用程序,這一項會導致彈出一個數字簽名對話框。--><security><all-permissions/></security><!--application-desc 必須,指定JavaWebStart啟動時執行jar文件中的哪個類--> <application-desc main-class="jws.HelloWord" />
</jnlp>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 新建一個index.html文件
<a href="HelloWorld.jnlp">Launch Application</a>
- 1
- 啟動Tomcat服務器,輸入http://localhost:8080/JavaWebStart/index.html然后點擊Launch Application。就可以訪問HelloWorld.jnlp文件。服務器根據HelloWorld.jnlp文件來加載HelloWorld.jar文件,就可以在客戶端直接運行服務器的資源,它工作過程是先將服務器資源下載到客戶機,再運行,每一次訪問都會到服務器去看看可執行jar包是否為最新的,本地若不是最新的就重新加載最新的,再運行,保持資源的最新版本。
- 如果彈出應用程序安全設置阻止(java應用程序已被阻止的問題并不是由于瀏覽器的安全設置所導致的,而是由于java應用程序的安全設置所產生的,特別是在新版本的java中)解決的辦法是。在操作系統的控制面板中點擊程序,找到程序中Java,點擊進入。Java控制面板中的安全選項卡里,點擊編輯站點列表。輸入需要訪問還有java程序的頁面地址,點擊添加,忽略安全風險,點擊繼續。再次在瀏覽器中運行還有java的頁面時,點擊運行即可。
?