简体   繁体   中英

Any Java experience on Raspberry PI?

Is it possible to run average java app server on eg jboss or glassfish server on Raspberry pi? Any limitations? Does anyone have an experience in Java development for raspberry pi?

At least any appropriate JVM for RPi will be nice.

It's absolutely possible, but should work better with newer versions having more memory (eg the 512 MB version of the Pi). In December 2012 Oracle released a Developer Preview of Java SE 8 for ARM . The blog post with the announcement contains links to a number of tutorials which should get you started with plain Java SE or JavaFX, depending on how fancy your interfaces should be.

  1. Quickie Guide Getting Java Embedded Running on Raspberry Pi
  2. JavaFX on Raspberry Pi – 3 Easy Steps

If you are concerned about the performance of JavaFX on the Raspberry Pi, check the blog post "JavaFX on Raspberry PI" , which contains some information about the performance of JavaFX, comparing it to native applications.

Update: Test results after running Tomcat 7 with Java 8 on the Pi
After I got the 512mb version of the Pi (MODELL B), I installed Java 8 and Tomcat 7.0 without any problems. Tomcat examples were working, and I was able to use the Tomcat manager application without any problems.

With 64 MB of RAM used for the graphics card, I still had 291 MB of free memory (with sshd running):

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 reported a total of 192 MB being used by the Tomcat process.

Raspberry Pi has only 185MB available for the whole JVM. (after boot, with 16MB to video processing).

Then, you need to use aggresive and precise memory options ( -Xmx120M -XX:MaxPermSize=55M -XX:ReservedCodeCacheSize=4M -Djava.awt.headless=true )

I have made an application based on Jetty, Spring 3 and Hibernate/JPA. Just after deployment, it fit in about 15MB of Heap space and 32MB of non heap space (using JProfiler memory analysis)

Each loaded class is permanent memory lost, because PermGen space can't be garbage collected. A lot of classes are loaded only for initialization support, but will stay loaded forever. Maybe tweeks can be found to consume less PermGen space for each component.

You can indeed. There is a blog post of someone running JBoss EAP (essentially JBoss AS 7) on a raspberry pi.

我在JRE 1.7下的Raspberry Pi上使用TJWS,它的工作速度非常快,没有内存问题。

Right now, a JVM on the pi is possible but a Java SE edition is hard to find. There may be one for ARM from Oracle, but I haven't tried it (my pi is still on it's way) and if memory serves it's behind a wall.

Another limitation for the pi is the available RAM; apps like jboss and glassfish are going to want more RAM than the pi provides, except under very constrained deployments.

Ive got tomcat7 running on openjdk with sqlite databases. Processing ok at around a quater speed of my laptop, but opening jsp pages takes 10-15 seconds. Not sure why yet.

in case you want to use java 11 and javafx I found this is definitely possible with the Liberica JDK of BellSoft: https://bell-sw.com/pages/java-11.0.3

Install scripts and demo application are available on my blog: https://webtechie.be/2019/04/16/pijava-overview-java-11-and-javafx-11-on-raspberry-pi

To install 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

Testing and running Java file without compiling:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM