我正在開發一個需要進行一些計算並需要在線提供的java應用程序。通過jnlp啓動的applet增量內存
我從2005年開始用Java開發,但從來不必在網上放任何東西,我總是用RMI。
我學習如何創建applet和成功轉換我的桌面應用程序到一個小應用程序(applet的應用生命週期,轉換成的JFrame JApplet的,等等)
我注意到什麼是性能確實慢了下來,所以我嘗試替代方法。我閱讀了Java Web Start,並開始思考它。
發現這篇文章: http://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/runAppletFunction.html和它後面跟我做了如下的事情(寫入所有下來未來的讀者參考):
- 使我的應用程序的罐子並簽上了(顯然名稱被改變)
寫了下面的JNLP:
<?xml version="1.0" encoding="UTF-8"?> <jnlp href="appJNLP.jnlp"> <information> <title>Software title</title> <vendor>Society name</vendor> <offline-allowed /> </information> <resources> <j2se version ="1.6+" initial-heap-size="256m" max-heap-size="1024m" href="http://java.sun.com/products/autodl/j2se" /> <jar href="app.jar" main="true" /> <jar href="mysql-connector-java-5.1.20-bin.jar"/> <jar href="poi-3.8-20120326.jar"/> <jar href="forms-1.3.0.jar"/> </resources> <applet-desc name="Name" main-class="mainClass" width="1024" height="700"/> </jnlp>
寫了下面的HTML頁面:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Titolo</title> </head> <body> <script src="http://www.java.com/js/deployJava.js"></script> <script> var attributes = {code:'mainClass.class', archive:'app.jar,mysql-connector-java-5.1.20-bin.jar,poi-3.8-20120326.jar,forms-1.3.0.jar', width:1024, height:700} ; var parameters = {jnlp_href:'appJNLP.jnlp'} ; var version = '1.6' ; deployJava.runApplet(attributes, parameters, version); </script> <noscript>This page requires JavaScript.</noscript> </body> </html>
把下面的文件結構,我的Tomcat Web應用程序文件夾:
webapps\app app.jar appJNLP.jnlp page.html mysql-connector-java-5.1.20-bin.jar poi-3.8-20120326.jar forms-1.3.0.jar
正如你可以看到我選擇了混合部署方式這種方式之前發佈的鏈接(陳述使小程序運行在舊版和下一代Java Plug-in軟件上)。 我覺得我做得很好。該小程序加載在網頁中,但它非常慢... 我在jnlp部分添加了以下響應後的內存參數:How can I start an Java applet with more memory?(initial-heap-size =「256m」max-heap-size =「1024m」)但他們似乎被忽略。我嘗試在我的2GB內存機器上放置假值,比如initial-heap-size =「5000m」,但該小程序仍然加載並且仍然很慢。 控制檯顯示該JNLP文件的破敗之後,但在小程序仍然運行:
Match: selecting maxHeap: 8388608000
Match: selecting InitHeap: 5242880000
Match: digesting vmargs: null
Match: digested vmargs: [JVMParameters: isSecure: true, args: ]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: ]
Match: digest LaunchDesc: http://localhost:8090/TestServer/gestioneoneri.jnlp
Match: digest properties: []
Match: JVM args: [JVMParameters: isSecure: true, args: ]
Match: endTraversal ..
security: --- parseCommandLine converted : -Xms5000m
into:
[-Xms5000m]
Match: JVM args final: -Xmx8000m -Xms5000m
不應該拋出異常?
現在我的問題是:
- 我怎麼能肯定的是,代碼在JNLP環境applet環境中得到執行,而不是?我看不到Java Web Start標誌。這是正常的嗎?
- 如何將初始和最大內存大小增加到更多人類值?
- 我需要將此軟件嵌入到網頁中。由於我不知道我使用的是applet還是java web start應用程序,我如何改善用戶體驗?我說的是擴展JApplet或JFrame例如..在我不能增加內存的情況下,我應該如何將我的applet轉換成jws應用程序?
我很樂意提供建議。 謝謝你的時間!
安德烈