Javaアプリサーバーを実行することは可能ですか?制限はありますか?Java raspberryの開発に経験がありますか?パイ?
少なくとも、RPiに適切なJVMであれば、どれでもいいでしょう。
それは絶対に可能ですが、より多くのメモリを備えた新しいバージョン(たとえば、512 MBバージョンのPi)でよりよく機能するはずです。 2012年12月に、Oracleは Java SE 8 for ARM)の開発者プレビュー をリリースしました。発表のあるブログ投稿には、始めるためのチュートリアルへのリンクが含まれています。プレーンJava SEまたはJavaFX、インターフェースのファンシー度に応じて。
Raspberry PiでのJavaFXのパフォーマンスについて懸念がある場合は、ブログの記事 "JavaFX on Raspberry Pi" をチェックしてください。JavaFXのパフォーマンスに関する情報が含まれており、ネイティブアプリケーションと比較しています。
更新:Tomcat 7をJava 8 on the Piで実行した後のテスト結果
512MBバージョンのPi(MODELL B)を入手した後、Java 8とTomcat 7.0を問題なくインストールしました。Tomcatの例は機能しており、使用することができました。問題なくTomcatマネージャーアプリケーション。
64 MBのRAMグラフィックカードに使用)でも、291 MBの空きメモリがありました(sshdが実行中):
pi@raspberrypi ~/ $ free -m
total used free shared buffers cached
Mem: 438 146 291 0 10 74
-/+ buffers/cache: 60 377
Swap: 99 0 99
pmap
は、Tomcatプロセスによって使用されている合計192 MBを報告しました。
Raspberry Piでは、JVM全体で185MBしか使用できません。 (ブート後、16MBからビデオ処理まで)。
次に、積極的で正確なメモリオプションを使用する必要があります(-Xmx120M -XX:MaxPermSize=55M -XX:ReservedCodeCacheSize=4M -Djava.awt.headless=true
)
Jetty、Spring 3、Hibernate/JPAをベースにしたアプリケーションを作成しました。デプロイ直後は、約15MBのヒープスペースと32MBの非ヒープスペースに収まります(JProfilerメモリ分析を使用)。
PermGenスペースはガベージコレクションできないため、ロードされた各クラスは永続的なメモリが失われます。多くのクラスは初期化サポートのためにのみロードされますが、永久にロードされたままになります。おそらく、tweeksは、各コンポーネントのPermGenスペースをより少なく消費することがわかります。
確かにできます。 Raspberry PiでJBoss EAP(基本的にはJBoss AS 7)を実行している ブログ投稿 があります。
JRE 1.7のRaspberry PiでTJWSを使用していますが、非常に高速に動作し、メモリの問題はありません。
現在、pi上のJVMは可能ですが、Java SEエディションは見つけるのが困難です。ARM = Oracleからですが、試したことがありません(私のpiはまだその途中です)。メモリが機能する場合は、壁の後ろにあります。
Piのもう1つの制限は、使用可能なRAMです。 jbossやglassfishなどのアプリは、非常に制約されたデプロイメントを除いて、piが提供するよりも多くのRAM=が必要になります。
Arun GuptaがRaspberry PiでのJBoss Wildflyの実行についていくつか投稿しました。
私は、sqliteデータベースを備えたopenjdkでTomcat7を実行しました。私のラップトップの約1/4の速度で問題なく処理されますが、jspページを開くには10〜15秒かかります。理由はまだわかりません。
Java 11とjavafxを使用したい場合、これはBellSoftのLiberica JDKで確実に可能であることがわかりました: https://bell-sw.com/pages/Java- 11.0.
インストールスクリプトとデモアプリケーションは私のブログで入手できます: https://webtechie.be/2019/04/16/pijava-overview-Java-11-and-javafx-11-on-raspberry-pi =
JDK 11.0.2をインストールするには:
# Make sure we are in the home directory
cd /home/pi
# Download the Java 11.0.2 distribution from BellSoft
wget https://download.bell-sw.com/Java/11.0.2/bellsoft-jdk11.0.2-linux-arm32-vfp-hflt.tar.gz
# Move the downloaded file to /opt
Sudo mv bellsoft-jdk11.0.2-linux-arm32-vfp-hflt.tar.gz /opt
# Use the /opt directory
cd /opt
# Untar the downloaded file
Sudo tar -xvzf bellsoft-jdk11.0.2-linux-arm32-vfp-hflt.tar.gz
# Remove the downloaded file
Sudo rm bellsoft-jdk11.0.2-linux-arm32-vfp-hflt.tar.gz
テストと実行Javaコンパイルなしのファイル:
cd /home/pi
nano HelloWorld.Java
public class HelloWorld {
public static void main (String[] args) {
System.out.println("Hello World");
}
}
/opt/jdk-11/bin/Java /home/pi/HelloWorld.Java
Hello World