Hay dos tipos de interfaces de programación de aplicaciones (API) del lenguaje de programación Java :
La siguiente es una lista parcial de interfaces de programación de aplicaciones (API) para Java.
A continuación se muestra una lista muy incompleta, ya que la cantidad de API disponibles para la plataforma Java es abrumadora.
Java en tiempo real es un término general para una combinación de tecnologías que permite a los programadores escribir programas que satisfagan las demandas de los sistemas en tiempo real en el lenguaje de programación Java.
La sofisticada gestión de memoria de Java, el soporte nativo para subprocesos y concurrencia, la seguridad de tipos y la relativa simplicidad han creado una demanda para su uso en muchos dominios. Sus capacidades se han mejorado para satisfacer las necesidades computacionales en tiempo real:
Para superar las dificultades típicas del tiempo real, la Comunidad Java introdujo una especificación para Java en tiempo real, JSR001. Han surgido varias implementaciones de la Especificación en Tiempo Real para Java (RTSJ) resultante, incluida una implementación de referencia de Timesys, WebSphere Real Time de IBM, Java SE Real-Time Systems de Sun Microsystems, [1] Aonix PERC o JamaicaVM de aicas.
La RTSJ abordó los problemas críticos al exigir una especificación mínima (solo dos) para el modelo de subprocesos (y permitir que se conecten otros modelos a la máquina virtual) y al proporcionar áreas de memoria que no están sujetas a la recolección de basura, junto con subprocesos que el recolector de basura no puede interrumpir. En cambio, estas áreas se administran mediante la administración de memoria basada en regiones.
La Especificación en Tiempo Real para Java (RTSJ) es un conjunto de interfaces y mejoras de comportamiento que permiten la programación informática en tiempo real en el lenguaje de programación Java. La RTSJ 1.0 se desarrolló como JSR 1 en el marco del Proceso Comunitario Java, que aprobó el nuevo estándar en noviembre de 2001. La RTSJ 2.0 se está desarrollando en el marco de la JSR 282. Hay una versión preliminar disponible en la página JCP de la JSR 282. Puede encontrar más información en RTSJ 2.0
La biblioteca de ventanas es un conjunto de clases disponibles en la API de C++ del entorno de ejecución del lenguaje de procesamiento de flujos (SPL) y en la API de operadores de Java™ del lenguaje de procesamiento de flujos. La biblioteca se utiliza para implementar operadores primitivos que necesitan ventanas que sigan la semántica de ventana del lenguaje de procesamiento de flujos. El uso de la biblioteca de ventanas proporciona una semántica de política de ventanas coherente entre operadores y simplifica la implementación de los mismos.
SPL ofrece ventanas tanto deslizantes como con volteo. Ambos tipos de ventanas mantienen todos los datos entrantes en la memoria hasta que se activa su política de expulsión de tuplas. Utilice la compatibilidad de SPL con ventanas cuando la funcionalidad requerida por el operador primitivo se pueda crear utilizando la semántica proporcionada por las construcciones de ventanas de SPL.
Un operador de ejemplo del kit de herramientas estándar de SPL que utiliza la biblioteca y la sintaxis de ventanas es el Aggregateoperador. Un operador de ejemplo que almacena en búfer las tuplas recibidas recientemente pero que no utiliza la biblioteca y la sintaxis de ventanas es el DeDuplicateoperador. Esta acción se produce porque este operador tiene una semántica de desalojo y activación diferente a la proporcionada por SPL. Este operador necesita mantener solo tuplas únicas y descarta todas las tuplas repetidas que se reciben dentro de una ventana de tiempo.
Con la biblioteca de ventanas, los desarrolladores pueden especificar diferentes políticas de desalojo y activación, pero pueden implementar las acciones de manejo de eventos independientemente de los detalles de la política de ventanas. Existen algunas diferencias al implementar operadores primitivos en C++ y Java que aprovechan la cláusula de ventana de SPL.
En la implementación de C++, los desarrolladores no tienen obligación de usar la biblioteca de ventanas (la práctica preferida es usar la biblioteca). Tienen libertad de usar la API de generación de código de operador SPL solo para obtener la política de ventanas especificada para una instancia de operador determinada. Luego, pueden generar código usando otros contenedores. Además, los desarrolladores pueden verificar configuraciones de ventanas válidas durante el tiempo de generación de código.
En la implementación de Java, los desarrolladores deben utilizar la biblioteca de ventanas. Esta acción se puede lograr registrando una clase que implemente com.ibm.streams.operator.window.StreamWindowListener<T>que maneje eventos generados por una ventana (com.ibm.streams.operator.window.StreamWindow<T>. Este uso es necesario porque los operadores de Java no se basan en la generación de código. Como resultado, las ventanas son administradas automáticamente por el entorno de ejecución para garantizar la semántica de ventana de SPL. Los desarrolladores pueden verificar configuraciones de ventana válidas durante el entorno de ejecución verificando la política de ventana asociada a un puerto de entrada determinado.