edicion - JNI y Java: ¿cómo hacer o llamar a las hormigas llamando a hormiga?
deitel c++ y java (5)
Estoy a punto de hacer mi primer viaje al mundo de JNI (Java Native Interface) para proporcionar notificaciones de cambio del sistema de archivos desde el código C / C ++ específico de la plataforma a Java. Eso es a menos que alguien sugiera una biblioteca brillante para hacer esto que me he perdido.
Siendo nuevo en JNI, he logrado encontrar mucha documentación en el lado de la interfaz y el lado de la generación de la biblioteca, pero no he encontrado mucho en la construcción de la biblioteca nativa.
Tengo una compilación existente basada en ant para la fuente preexistente de Java, así que estoy tratando de averiguar si debo llamarme para crear la biblioteca o si es mejor hacer make para llamar a la hormiga después de crear ¿la biblioteca?
Ninguna de las dos opciones es tremendamente buena, pero ambas parecen mejores que intentar llamar al compilador para que compile el código y genere la biblioteca directamente.
No me gusta mucho make debido a su conjunto de reglas implícito y al tratamiento del espacio en blanco. Personalmente, utilizaría tareas cpp ( http://ant-contrib.sourceforge.net/cpptasks/index.html ) para hacer mi compilación C. No son tan flexibles como la marca, pero también son mucho menos complejos y significa que no tienes que cargar a tus desarrolladores con la marca de aprendizaje.
Como una alternativa más simple a JNI, intente con JNA: https://jna.dev.java.net/ , puede resolver esta molestia y ser más simple (suponiendo que puede hacer lo que quiera).
Me saltaría JNI por completo y usaré un programa externo que escribe notificaciones en salida estándar. Java puede simplemente leer de la secuencia de salida de los programas y generar cualquier evento que sea necesario. JNI es demasiado trabajo si lo único que desea es enviar notificaciones simples.
Además, en Linux puede simplemente iniciar "inotifywait" (con algunos parámetros adecuados, consulte "man inotifywait").
También puede probar las tareas terp C ++ en Codemesh . No son gratuitos, pero ofrecen un alto nivel de abstracción junto con la capacidad de descubrir / especificar el compilador de C ++ y la capacidad de iterar en más de una configuración de compilador / arquitectura de procesador / compilador para compilaciones multiplataforma.
Estoy trabajando en algo similar en este momento. Tenga en cuenta que usar swig de swig.org suele ser más fácil ya que genera los resguardos de la biblioteca nativa para usted.
La respuesta breve a su pregunta es que el archivo ant debe ejecutar el archivo make una vez que la biblioteca java ya se haya creado, ya que la biblioteca nativa depende del encabezado generado swig, que se genera a partir de los archivos de la clase java.
Si está muy familiarizado con la hormiga y no quiere aprender un nuevo sistema, entonces http://ant-contrib.sourceforge.net/cpptasks/index.html , también vinculado por otro afiche, le permitirá construir c ++ en hormiga.