2012-10-26 80 views
0

我正在開發一個需要進行一些計算並需要在線提供的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應用程序?

我很樂意提供建議。 謝謝你的時間!

安德烈

回答

0

電解金屬錳......相當多的抽象問題

我將嘗試回答一個小

所以......

  • 我怎麼能肯定的是代碼在JNLP 環境中執行,而不是在applet環境中執行?我看不到Java Web 開始徽標。這是正常的嗎?

如果您使用JNLP啓動它,並且啓動成功,您可以確定它是由JAWS啓動的; 我也沒有看到JAWS徽標......但這很正常。我不記得了,因爲什麼JRE升級消失,但看到你的小應用程序已被JRE運行,就可以簡單地看臨時互聯網文件緩存(看它的JNLP文件)

  • 我怎麼能提高初始和最大內存大小對更多人的價值?

我記得,有JNLP PARAM這使得這個...它是一樣的東西

<j2se version="1.3" initial-heap-size="64m" max-heap-size="128m"/> 

看到jnlp syntax瞭解更多詳情...

  • 我需要將此軟件嵌入到網頁中。因爲我不知道我使用的是一個applet還是一個java web start應用程序,所以我該如何改進我的用戶體驗?我說的是擴展 JApplet的或JFrame的例如。在我不能增加內存 的情況下,我應該如何轉換我的小程序到應用程序JWS

在JAWS申請的情況下,我記得,應用程序啓動時應顯示JAWS徽標。所以你可以很容易地分開applet和應用程序我猜...使用應用程序或applet它完全取決於你的項目需求...