2012-08-23 11 views
27

È possibile eseguire mediamente il server delle app java su es. server jboss o glassfish su Raspberry pi? Eventuali limitazioni? Qualcuno ha esperienza nello sviluppo di Java per il raspberry pi?Qualche esperienza Java su Raspberry PI?

Almeno qualsiasi JVM appropriata per RPi sarà piacevole.

+0

forse questo è più adatto per 'programmers.stackexchange.com' – SJuan76

+2

Come con molte domande RPI, la risposta è "il motivo per cui non è vero? ". È una scatola ARM-Linux come qualsiasi altra. – slim

risposta

27

È assolutamente possibile, ma dovrebbe funzionare meglio con le versioni più recenti che hanno più memoria (ad esempio la versione da 512 MB del Pi). Nel dicembre 2012 Oracle ha rilasciato uno Developer Preview of Java SE 8 for ARM. Il post del blog con l'annuncio contiene collegamenti a un numero di esercitazioni che dovrebbero iniziare con Java SE o JavaFX, a seconda di quanto dovrebbero essere fantasiose le tue interfacce.

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

Se siete preoccupati per le prestazioni di JavaFX sul Raspberry Pi, controllare il post sul blog "JavaFX on Raspberry PI", che contiene alcune informazioni sulle prestazioni di JavaFX, confrontandolo applicazioni native.

Aggiornamento: I risultati dei test dopo l'esecuzione di Tomcat 7 con Java 8 sul Pi
Dopo aver ottenuto la versione da 512 MB del Pi (MODELL B), ho installato Java 8 e Tomcat 7.0 senza problemi. Gli esempi di Tomcat funzionavano e sono riuscito a utilizzare l'applicazione di gestione Tomcat senza problemi.

Con 64 MB di RAM utilizzati per la scheda grafica, avevo ancora 291 MB di memoria libera (con sshd in esecuzione):

[email protected] ~/ $ free -m 
      total  used  free  shared buffers  cached 
Mem:   438  146  291   0   10   74 
-/+ buffers/cache:   60  377 
Swap:   99   0   99 

pmap riportato un totale di 192 MB utilizzati dal processo di Tomcat.

+0

Hai già eseguito test con la versione di Java SE 8 ARM? –

+0

Non ancora, basta andare oggi alla versione 512 MB e fare qualche test con esso. Riferirò i risultati qui. –

+2

Nota: avrai bisogno di uno dei nuovi kernel per accedere a 512 Mb. I kernel più vecchi, come l'attuale raspbian for softfloat (2012-08-08) supportano solo 256 Mb. Puoi aggirare questo usando rpi-update per aggiornare il tuo kernel. – TheDuke

2

In questo momento, una JVM sul pi è possibile ma un'edizione di Java SE è difficile da trovare. Ce ne può essere uno per ARM da Oracle, ma non l'ho provato (il mio pi è ancora sulla stessa strada) e se la memoria serve è dietro un muro.

Un'altra limitazione per il pi è la RAM disponibile; app come jboss e glassfish vorranno più RAM di quante ne fornisce il pi, eccetto in caso di implementazioni molto limitate.

+0

Sto sviluppando un'applicazione web con Spring e Jetty. Penso che Raspberry Pi sarà in grado di eseguirlo, ma non ha provato, sto ancora aspettando di riceverlo :) – Toilal

+0

Dovrebbe essere in grado di eseguirlo finché la JVM è in grado. Esistono JVM che forniscono JavaSE per ARM: http://www.oracle.com/technetwork/java/embedded/downloads/javase/index.html ma poiché non ho ancora il pi non posso provare nulla. :) –

+0

Il mio pi è qui, e in effetti esegue l'ejre da Oracle. Guarda il consumo di memoria, come spiegato altrove, ma fa parte del modo in cui il mondo è destinato a dispositivi incorporabili. –

8

Si può davvero. C'è un blog post di qualcuno che esegue JBoss EAP (essenzialmente JBoss AS 7) su un raspberry pi.

12

Raspberry Pi ha solo 185 MB disponibili per l'intera JVM. (dopo l'avvio, con 16 MB di elaborazione video).

Quindi, è necessario utilizzare le opzioni aggressivi e precisi di memoria (-Xmx120M -XX:MaxPermSize=55M -XX:ReservedCodeCacheSize=4M -Djava.awt.headless=true)

ho fatto un'applicazione basata sul molo, Spring 3 e Hibernate/JPA. Subito dopo la distribuzione, si adatta a circa 15 MB di spazio di heap e 32 MB di spazio non heap (utilizzando l'analisi della memoria JProfiler)

Ogni classe caricata è una memoria permanente persa, poiché lo spazio PermGen non può essere raccolto. Molte classi vengono caricate solo per il supporto di inizializzazione, ma resteranno caricate per sempre. Forse si possono trovare tweek per consumare meno spazio PermGen per ciascun componente.

+0

Che dire -XX: + CMSClassUnloadingEnabled -XX: + CMSPermGenSweepingEnabled, quando lo si utilizza con le corrette impostazioni GC, dovrebbe essere in grado di rimuovere classi da permgen, almeno lo fa su macchine x86 normali. Non sono sicuro di quanto sia diversa ARM JVM. –

4

Io uso TJWS su Raspberry Pi sotto JRE 1.7, funziona incredibilmente veloce e senza problemi di memoria.

0

Ive ha tomcat7 in esecuzione su openjdk con database SQLite. Elaborazione ok a circa una quater velocità del mio laptop, ma l'apertura delle pagine jsp richiede 10-15 secondi. Non so perché ancora.