Te sugerimos que pruebes esta solución en un ambiente controlado antes de enviarlo a producción, saludos.
Solución:
Soy ingeniero de software de aviónica. Pude participar en varios proyectos de desarrollo. Los lenguajes que utilicé en esos proyectos son: C, C++ y Java en tiempo real.
C es genial. C++ no es tan malo, pero C/C++ requiere estándares de codificación estrictos para las consideraciones de seguridad, como DO-178B.
Creo que Java en tiempo real es el camino a seguir, pero todavía no veo muchas aplicaciones de aviónica.
El avión de entrenamiento coreano T-50 tendrá una computadora de misión que ejecuta la aplicación RT Java que sirve pantallas HUD y MFD, y todas las funciones críticas de la misión.
La especificación en tiempo real para Java ahora tiene varias implementaciones de grado comercial:
- JavaRTS de Sun
- WebSphere en tiempo real de IBM
- Aonix PERC
- aicas JamaicaVM
- Afelio apogeo
Estos productos abarcan desde la compilación hasta el código nativo (Aonix), pasando por J2ME (aicas, apogee), hasta J2SE completo (Sun, IBM). La mayoría, si no todos, han visto implementaciones en pequeñas cantidades de sistemas de seguridad o de misión crítica, pero se está generando un impulso. Los ejemplos incluyen la modernización del radar de vigilancia espacial de Eglin AFB y el uso de RTSJ por parte de la Marina de los EE. UU. en el destructor DDG-1000/Zumwalt. Sun también reclama la implementación en el dominio de procesamiento de transacciones financieras.
Si está interesado en RTSJ, le sugiero el de Peter Dibble. Programación de plataforma en tiempo real, o programación concurrente y en tiempo real del profesor Wellings en Java.
En una nota relacionada, también se está trabajando para proporcionar un perfil de seguridad crítica para el lenguaje de programación Java, creado como un subconjunto de RTSJ. Además, se formó un grupo de expertos para explorar un RTSJ DRTSJ distribuido, pero el trabajo está estancado.
El libro cubre el uso de Ada 95, Java Real-Time System y extensiones POSIX en tiempo real (programadas en C). Ninguno de estos es directamente un lenguaje específico de dominio.
Ada 95 es un lenguaje de programación comúnmente usado a finales de los 90 y (AFAIK) todavía se usa ampliamente para programación en tiempo real en las industrias aeroespacial y de defensa. Hay al menos un DSL construido sobre Ada, SparkAda, que es un sistema de anotaciones que describen las características del sistema a una herramienta de verificación de programas.
Esta entrevista del 6 de abril de 2006 indica algunos de los cambios en las clases y máquinas virtuales que componen el Sistema de tiempo real de Java. No menciona ninguna extensión de idioma específica del dominio. No me he encontrado con el uso de Java en sistemas en tiempo real, pero no he estado mirando el tipo de sistemas donde esperaría encontrarlo (trabajo en simulación aeroespacial, donde es C++, Fortran y ocasionalmente Ada para sistemas in-the-loop en tiempo real).
Realtime POSIX es un conjunto de extensiones de las instalaciones del sistema operativo POSIX. Como extensiones del sistema operativo, no requieren nada específico en el idioma. Dicho esto, puedo pensar en un DSL basado en C para describir sistemas integrados, SystemC, pero no tengo idea si también se usa para generar los sistemas integrados.
No se menciona en el libro a Matlab, que en los últimos años ha pasado de ser una herramienta de simulación a un sistema de desarrollo basado en modelos para sistemas en tiempo real. Matlab/Simulink es, en efecto, un DSL para programación lineal, máquinas de estado y algoritmos. Matlab puede generar C o HDL para sistemas embebidos y en tiempo real. Es muy raro ver un anuncio de trabajo en tiempo real en aviónica, EW u otra industria de defensa que no requiera cierta experiencia en Matlab. (No trabajo para Matlab, pero es difícil enfatizar lo omnipresente que realmente es en la industria)
Nos encantaría que puedieras dar difusión a este escrito si te fue de ayuda.