0

私は、いくつかの計算を行う必要があり、オンラインで利用できる必要がある Java アプリケーションを開発しています。

私は 2005 年から Java で開発を行っていますが、何もオンラインにする必要はなく、常に RMI を使用していました。

アプレットの作り方を勉強し、デスクトップアプリのアプレット化に成功しました(アプレットライフサイクルの適用、JFrameからJAppletへの変換など)。

私が気付いたのは、パフォーマンスが非常に遅くなっていることです。そのため、別の方法を試しました。私は Java Web Start について読み、それについて考え始めました。

この記事を見つけました: http://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/runAppletFunction.htmlそしてそれに従って、次のことを行いました (将来の読者の参照のためにすべて書き留めます):

  • アプリケーションの jar を作成して署名しました (明らかに名前が変更されています)
  • 次の 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 webapp フォルダーに配置します。

    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 ソフトウェアでアプレットを実行できるようにする前に投稿されたリンクに記載されています)。私はすべてうまくやったと思います。アプレットは Web ページに読み込まれますが、非常に遅いです... 次の応答に続いて、jnlp セクションにメモリ パラメータを追加しました: How can I start an Java applet with more memory? (initial-heap-size="256m" max-heap-size="1024m") しかし、それらは無視されるようです。私の 2GB RAM マシンに 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 環境で実行されていることを確認するにはどうすればよいですか? Java Web Start のロゴが表示されません。それは正常ですか?
  • 初期および最大メモリサイズをより人間的な値に増やすにはどうすればよいですか?
  • このソフトウェアを Web ページに埋め込む必要があります。使用しているものがアプレットなのか Java Web Start アプリケーションなのかわからないため、ユーザー エクスペリエンスを向上させるにはどうすればよいですか? たとえば、JApplet や JFrame の拡張について話しています。メモリを増やすことができない場合、アプレットを jws アプリに変換するにはどうすればよいですか?

私は提案を受け入れます。お時間をいただきありがとうございます!

アンドレア

4

1 に答える 1

0

ええと...かなり多くの抽象的な質問

少しお答えしようと思います

それで...

  • コードがアプレット環境ではなくJNLP環境で実行されていることをどのように確認できますか?JavaWebStartのロゴが表示されません。正常ですか?

JNLPで開始し、開始が成功した場合は、JAWSによって開始されたことを確認できます。JAWSのロゴも表示されません...しかし、それは正常です。どのJREアップグレードが表示されなくなったのかは覚えていませんが、アプレットがJREで実行されていることを確認するには、インターネット一時ファイルのキャッシュを確認するだけです(jnlpファイルを確認できます)。

  • 初期メモリサイズと最大メモリサイズをより人間的な値に増やすにはどうすればよいですか?

私が覚えているように、これを作るjnlpparamがあります...それは次のようなものです

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

詳細については、 jnlp構文を参照してください。

  • このソフトウェアをWebページに埋め込む必要があります。使用しているのがアプレットなのかJavaWebStartアプリケーションなのかわからないので、どうすればユーザーエクスペリエンスを向上させることができますか?たとえば、JAppletまたはJFrameを拡張することについて話しています。メモリを増やすことができない場合、アプレットをjwsアプリに変換するにはどうすればよいですか。

JAWSアプリケーションの場合、私が覚えているように、アプリの起動時にJAWSロゴを表示する必要があります。したがって、アプレットをアプリケーションから簡単に分離できます...アプリケーションまたはアプレットを使用すると、すべてプロジェクトの要件によって異なります...

于 2012-10-27T02:03:13.827 に答える