Si no tienes experiencia en el campo de la programación de microprocesadores/microcontroladores, probablemente deberías aprender primero C, para poder entender cuándo y por qué Java es una mala opción para la mayoría de los proyectos de microcontroladores.
¿Has leído las restricciones de la JVM que has enlazado? Incluye los siguientes problemas:
- Tan sólo 512 bytes de memoria de programa (no KB, y definitivamente no MB)
- Tan sólo 768 bytes de RAM (donde van tus variables. Está limitado a 768 caracteres de cadenas por esta restricción).
- Unos 20k opcodes Java por segundo en un AVR de 8 Mhz.
- Sólo incluye java.lang.Object, java.lang.System, java.io.PrintStream, java.lang.StringBuffer, una clase de control de JVM y una clase nativa de IO. No podrás hacer un import java.util.*; y obtener todas las clases que no estén en esta lista.
Si no estás familiarizado con lo que significan estas restricciones, asegúrate de tener un plan B si resulta que no puedes realizar el proyecto con Java debido a las restricciones de espacio y velocidad.
Si todavía quieres ir con Java, tal vez porque esperas que el dispositivo sea programado por un montón de gente que sólo sabe Java, yo sugeriría fuertemente conseguir un hardware más grande, probablemente algo que ejecute Linux embebido. Ver esta página de Oracle para algunas especificaciones para ejecutar la JVM embebida, en el FAQ de su discusión recomiendan un mínimo de 32MB de RAM y 32MB de Flash. Eso es unas 32.000 veces la RAM y 1.0000 veces la Flash del AVR que estás viendo. Oracle's Introducción a Java Embedded entra en más detalles sobre las restricciones de la JVM. Su tono de voz es, como puedes adivinar, bastante más amigable con Java que el mío. Ten en cuenta que este tipo de hardware es mucho más difícil de diseñar que un AVR de 8 bits.
Soy un estudiante de ingeniería informática con una especialización en ciencias de la computación. El departamento de ciencias de la computación de mi universidad se ha bebido el Kool-aid de Java, por lo que muchos estudiantes del programa de ingeniería llegan sabiendo sólo Java (lo cual es una triste situación para un programador, al menos aprende algo de Python o C++ si no quieres aprender C...), así que uno de mis profesores publicó un Hoja de trucos C para estudiantes con un año de experiencia en Java. Sólo tiene 75 páginas; le sugiero que lo lea o lo hojee antes de tomar una decisión. En mi opinión, C es el lenguaje más eficiente, duradero y profesional para desarrollar un proyecto embebido.
Otra alternativa a considerar es el Arduino marco. Utiliza una versión reducida de la Cableado que es como C++ sin objetos ni cabeceras. Puede funcionar en muchos chips AVR, definitivamente no está restringido a su hardware. Te dará una curva de aprendizaje más fácil que saltar directamente a C.
En conclusión,
Texto alternativo: Me costó cinco intentos encontrar el correcto, pero al final conseguí salvar nuestra noche, aunque no el barco.