Programación de sistemas integrados usando Java [cerrado]

0

¿El lenguaje Java es bueno para aprender para un ingeniero de software integrado que desarrolla principalmente firmware y controladores? Si no es tan útil, ¿por qué?

¿Qué lenguaje es más para ese propósito, C ++ o Java? Leí en muchos sitios web, que Java es el lenguaje de programación más pagado hoy en día, pero también que C ++ mezclado con C es muy usado en el desarrollo de software integrado.

Quiero saber de algunos ingenieros de software integrado sobre qué lenguaje de programación (C ++ o Java) se debe prestar atención al propósito que escribí anteriormente.

Creo que solo C no es suficiente y quiero ir en la dirección correcta, y no aprender algo que no usaré en sistemas integrados.

Gracias.

    
pregunta Junior

2 respuestas

7

Siempre utilizo el lenguaje de programación C para programar muchos módulos integrados y microcontroladores. He trabajado con los controladores STM PIC de Atmel y la programación con C siempre funciona bien. Aparte de esto, si planea crear una interfaz UI para su diseño integrado y está en Windows, puede hacerlo con C ++ / C # en Visual Studio o si está en Linux, puede hacerlo utilizando gtk / glade, lo que se puede hacer. en C. Por lo tanto, si desea diseñar firmware o escribir controladores, puede usar C. No necesita java. Nunca he escuchado a alguien usar java para hacer el controlador o el firmware

Así que creo que C es suficiente para comenzar con cualquier diseño integrado.

    
respondido por el Aircraft
3

Supongo que depende del tamaño del sistema incorporado qué idioma será realmente útil y utilizable.

Para dispositivos pequeños, simplemente no puedo ver que Java se ejecute en absoluto en ellos. Oracle dice que con 11MB puede ejecutar Java SE integrado en el dispositivo (1) . Hay un Java ME integrado más pequeño, que se cita para necesitar 1 MB de ROM y 128 KB de RAM (2) . Así que Java no es (para mí) un lenguaje muy escalable en la dirección descendente. No puedo decir lo agradable que es programar Java en dispositivos integrados, ya que todos mis proyectos fueron más pequeños que el mínimo para Java ME.

Por otro lado, C ++ ofrece una gran cantidad de funciones que tal vez quieras usar. No se trata de una diferencia de rendimiento y tamaño de código. Si no usa RTTI y excepciones, el código crecerá unos pocos kilobytes sin ganar mucho a primera vista. El entorno de tiempo de ejecución de C ++ será un poco más grande, hay algunas variantes de C ++ incrustadas que reducen estos gastos generales a números apenas visibles pero previenen incluso más construcciones de C ++ como las plantillas.

Pero C ++ le ofrece la capacidad de implementar clases y herencia, básicamente todo lo bueno de OOP. Puede escribir controladores de hardware completamente en C ++, por lo que no es necesario volver a C en ningún punto de su sistema, incluso el código de inicio puede escribirse en C ++.

Diría que en los sistemas integrados no podrás jugar todas las cartas fuertes de C ++, ya que algunas funciones no se pueden utilizar o no se pueden usar. Como ejemplo: está prohibida la creación de instancias dinámicas para aplicaciones críticas para la seguridad (al menos en mi entorno). Las plantillas también son un tema discutible para las aplicaciones críticas de seguridad, ya que las pruebas son un poco complicadas, ya que se crean dinámicamente para cada tipo de datos y debe probar que sus pruebas cubren todos los tipos de datos utilizados.

Desde la perspectiva del código fuente, creo que C ++ crea un concepto más claro de quién hace qué y una estructura más clara, y es preferible a C

Aunque si está ejecutando en dispositivos realmente muy pequeños, probablemente termine cambiando de nuevo a C o al ensamblador.

    
respondido por el Arsenal

Lea otras preguntas en las etiquetas