是否可以在树莓派上运行普通的 java 应用服务器,例如 jboss 或 glassfish 服务器?有什么限制吗?有人有树莓派的Java开发经验吗?
至少任何适合 RPi 的 JVM 都会很好。
是否可以在树莓派上运行普通的 java 应用服务器,例如 jboss 或 glassfish 服务器?有什么限制吗?有人有树莓派的Java开发经验吗?
至少任何适合 RPi 的 JVM 都会很好。
这绝对是可能的,但对于具有更多内存的新版本(例如 512 MB 版本的 Pi)应该会更好。2012 年 12 月,Oracle 发布了适用于 ARM 的 Java SE 8 开发者预览版。带有公告的博客文章包含指向许多教程的链接,这些教程应该可以帮助您开始使用普通的 Java SE 或 JavaFX,具体取决于您的界面应该有多花哨。
如果您担心 JavaFX 在 Raspberry Pi 上的性能,请查看博客文章“Raspberry PI 上的 JavaFX”,其中包含一些有关 JavaFX 性能的信息,并将其与本机应用程序进行比较。
更新:在 Pi 上运行带有 Java 8 的 Tomcat 7 后的测试结果在
获得 512mb 版本的 Pi(型号 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 只有 185MB 可用于整个 JVM。(启动后,有 16MB 用于视频处理)。
然后,您需要使用积极和精确的记忆选项 ( -Xmx120M -XX:MaxPermSize=55M -XX:ReservedCodeCacheSize=4M -Djava.awt.headless=true
)
我做了一个基于 Jetty、Spring 3 和 Hibernate/JPA 的应用程序。刚刚部署后,它适合大约 15MB 的堆空间和 32MB 的非堆空间(使用 JProfiler 内存分析)
每个加载的类都是永久内存丢失,因为 PermGen 空间不能被垃圾收集。加载很多类只是为了支持初始化,但会永远保持加载状态。也许可以发现 tweeks 为每个组件消耗更少的 PermGen 空间。
你确实可以。有人在树莓派上运行 JBoss EAP(本质上是 JBoss AS 7)的博客文章。
我在 JRE 1.7 下的 Raspberry Pi 上使用 TJWS,它运行得非常快而且没有内存问题。
目前,pi 上的 JVM 是可能的,但很难找到 Java SE 版本。可能有一个来自 Oracle 的 ARM,但我还没有尝试过(我的 pi 仍在路上),如果记忆有用,它就在一堵墙后面。
pi 的另一个限制是可用的 RAM。像 jboss 和 glassfish 这样的应用程序需要比 pi 提供的更多 RAM,除非在非常受限的部署下。
Arun Gupta 发表了几篇关于在 Raspberry Pi 上运行 JBoss Wildfly 的文章。
我已经用 sqlite 数据库在 openjdk 上运行了 tomcat7。以我笔记本电脑的四分之一速度处理可以,但打开 jsp 页面需要 10-15 秒。还不知道为什么。
如果您想使用 java 11 和 javafx,我发现这绝对可以使用 BellSoft 的 Liberica JDK:https ://bell-sw.com/pages/java-11.0.3
我的博客上提供了安装脚本和演示应用程序: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