Raspberry PI上的任何Java体验



是否可以在复盆子pi上的jboss或glassfish服务器上运行普通的java应用程序服务器?有什么限制吗?有人在树莓派的Java开发方面有经验吗?

至少任何适合RPi的JVM都是不错的。

这是绝对可能的,但应该与具有更多内存的较新版本(例如512 MB版本的Pi)一起更好地工作。2012年12月,Oracle发布了针对ARM的Java SE 8开发人员预览版。发布公告的博客文章包含许多教程的链接,这些教程应该让你开始使用普通的JavaSE或JavaFX,这取决于你的界面应该有多花哨

  1. Quickie指南让Java嵌入式在Raspberry Pi上运行
  2. 树莓派上的JavaFX–3个简单步骤

如果您担心JavaFX在Raspberry Pi上的性能,请查看博客文章"JavaFX on Raspberrry Pi",其中包含一些关于JavaFX性能的信息,并将其与本地应用程序进行比较。

更新:在Pi上使用Java 8运行Tomcat 7后的测试结果
在我得到512mb版本的Pi(MODELL B)后,我安装了Java 8和Tomcat 7.0,没有任何问题。Tomcat示例正在运行,我能够毫无问题地使用Tomcat管理器应用程序。

显卡使用64MB的RAM,我仍然有291MB的可用内存(运行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进程总共使用了192MB。

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空间不能被垃圾回收。加载许多类只是为了支持初始化,但将永远保持加载状态。也许可以发现花呢为每个组件消耗更少的PermGen空间。

您确实可以。有一篇博客文章说,有人在树莓派上运行JBoss EAP(本质上是JBoss AS7)。

我在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的帖子。

  • 树莓派上的野生苍蝇(技术提示#25)
  • 树莓派上的WildFly管理域(技术提示#27)
  • 树莓派上的野生苍蝇集群(技术提示#28)

我在openjdk上运行了tomcat7,并使用sqlite数据库。处理速度大约是我笔记本电脑的四分之一,但打开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

最新更新