2012-08-23 35 views
27

¿Es posible ejecutar un servidor de aplicaciones java promedio, p. servidor jboss o glassfish en Raspberry pi? ¿Alguna limitación? ¿Alguien tiene una experiencia en el desarrollo de Java para raspberry pi?¿Alguna experiencia Java en Raspberry PI?

Al menos cualquier JVM apropiada para RPi será agradable.

+0

Tal vez esto es más adecuado para 'programmers.stackexchange.com' – SJuan76

+2

Al igual que con muchas preguntas RPI, la respuesta es "¿por qué no? ". Es una caja ARM-Linux como cualquier otra. – slim

Respuesta

27

Es absolutamente posible, pero debería funcionar mejor con las versiones más nuevas que tengan más memoria (por ejemplo, la versión de 512 MB del Pi). En diciembre de 2012 Oracle lanzó un Developer Preview of Java SE 8 for ARM. La entrada del blog con el anuncio contiene enlaces a una serie de tutoriales que deberían comenzar con Java SE o JavaFX, dependiendo de lo sofisticadas que sean sus interfaces.

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

Si usted está preocupado por el rendimiento de JavaFX en el Raspberry Pi, comprobar la entrada de blog "JavaFX on Raspberry PI", que contiene alguna información sobre el rendimiento de JavaFX, comparándolo con aplicaciones nativas.

Actualización: Resultados de la prueba después de ejecutar Tomcat 7 con Java 8 en el Pi
Después llegué a la versión 512 del Pi (MODELL B), he instalado Java 8 y Tomcat 7.0 sin ningún problema. Los ejemplos de Tomcat estaban funcionando, y pude utilizar la aplicación de administrador Tomcat sin ningún problema.

Con 64 MB de memoria RAM utilizados para la tarjeta gráfica, todavía tenía 291 MB de memoria libre (con sshd en ejecución):

[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 reportaron un total de 192 MB de ser utilizado por el proceso de Tomcat.

+0

¿Ya ha realizado alguna prueba con la versión Java SE 8 ARM? –

+0

Todavía no, solo vaya a la versión de 512 MB hoy y lo probaremos con ella. Informaré los resultados aquí. –

+2

Nota: necesitarás uno de los kernels más nuevos para acceder a 512Mb. Los kernels más antiguos, como el raspbian actual para softfloat (2012-08-08) solo son compatibles con 256Mb. Sin embargo, puedes evitar esto usando rpi-update para actualizar tu kernel. – TheDuke

2

En este momento, una JVM en el pi es posible pero una edición Java SE es difícil de encontrar. Puede haber uno para ARM de Oracle, pero no lo he probado (mi pi todavía está en camino) y si la memoria sirve está detrás de una pared.

Otra limitación para el pi es la RAM disponible; aplicaciones como jboss y glassfish necesitarán más memoria RAM de la que provee pi, excepto en implementaciones muy restringidas.

+0

Estoy desarrollando una aplicación web con Spring y Jetty. Creo que Raspberry Pi podrá ejecutarlo, pero no lo prueba, todavía estoy esperando recibirlo :) – Toilal

+0

Debería poder ejecutarlo mientras la JVM sea capaz. Hay JVMs que proporcionan JavaSE para ARM: http://www.oracle.com/technetwork/java/embedded/downloads/javase/index.html pero como aún no tengo el pi, no puedo probar nada. :) –

+0

Mi pi está aquí, y de hecho ejecuta el ejre de Oracle. Esté atento al consumo de memoria, como se detalla en otra parte, pero eso es parte de la forma en que el mundo es para dispositivos empotrables. –

8

De hecho, puede. Hay un blog post de alguien ejecutando JBoss EAP (esencialmente JBoss AS 7) en una pi raspberry.

12

Raspberry Pi solo tiene 185 MB disponibles para toda la JVM. (después del arranque, con 16 MB para el procesamiento de video).

Entonces, es necesario utilizar las opciones de memoria agresivos y precisos (-Xmx120M -XX:MaxPermSize=55M -XX:ReservedCodeCacheSize=4M -Djava.awt.headless=true)

He hecho una aplicación basada en el embarcadero, Primavera 3 y Hibernate/JPA. Justo después de la implementación, cabía en aproximadamente 15MB de espacio de Heap y 32MB de espacio no dinámico (usando el análisis de memoria de JProfiler)

Cada clase cargada es una pérdida de memoria permanente, porque el espacio PermGen no puede ser basura. Muchas clases se cargan solo para soporte de inicialización, pero se mantendrán cargadas para siempre. Tal vez se puedan encontrar tweeks que consumen menos espacio PermGen para cada componente.

+0

¿Qué pasa con -XX: + CMSClassUnloadingEnabled -XX: + CMSPermGenSweepingEnabled, cuando se utiliza con la configuración de GC corrent, entonces debería poder eliminar clases de permgen, al menos lo hace en máquinas x86 normales. No estoy seguro de cuán diferente es ARM JVM. –

4

Uso TJWS en Raspberry Pi bajo JRE 1.7, funciona increíblemente rápido y no hay problemas de memoria.

0

Ive got tomcat7 ejecutándose en openjdk con bases de datos sqlite. Procesando bien a una velocidad casi cuatrimestral de mi computadora portátil, pero abrir páginas jsp toma entre 10 y 15 segundos. Aún no estoy seguro de por qué.

Cuestiones relacionadas