JNI y Java: ¿las llamadas a ants hacen o hacen llamadas a ant?

Estoy a punto de hacer mi primer viaje al mundo de JNI (Java Native Interface) para proporcionar notificaciones de cambios en el sistema de archivos del código C / C ++ específico de la plataforma a Java. Eso es, a menos que alguien sugiera alguna biblioteca shiny para hacer esto que he echado de menos.

Al ser nuevo en JNI, he logrado encontrar mucha documentación en el lado de la interfaz y en el lado de la generación de bibliotecas, pero no he encontrado mucho en la construcción de la biblioteca nativa.

Tengo una comstackción basada en ant para la fuente Java preexistente, así que estoy tratando de averiguar si debo hacer que ant sea llame a make para crear la biblioteca o si es mejor hacer make to call ant después de crear ¿la biblioteca?

Ninguna de las opciones salta a ser terriblemente agradable, pero ambas parecen ser mejores que intentar que ant se llame a un comstackdor para comstackr el código y generar la biblioteca directamente.

No me gusta mucho hacer debido a su conjunto de reglas y tratamiento implícitos del espacio en blanco. Personalmente usaría las tareas de cpp ( http://ant-contrib.sourceforge.net/cpptasks/index.html ) para hacer mi comstackción de C. No son tan flexibles como make, pero también son mucho menos complejos y significará que no tendrá que cargar a sus desarrolladores con el aprendizaje de make.

Como una alternativa más simple a JNI, intente JNA: https://jna.dev.java.net/ , puede resolver este problema para usted y ser más simple (asumiendo que puede hacer lo que quiera).

Me saltearía JNI por completo y usaría un progtwig externo que escribe notificaciones en la salida estándar. Java puede simplemente leer de la secuencia de salida de los progtwigs y generar cualquier evento que sea necesario. JNI es demasiado trabajo si lo único que deseas es enviar notificaciones simples.

Además, en Linux, simplemente puede iniciar “inotifywait” (con algunos parámetros adecuados, consulte “man inotifywait”).

Estoy trabajando en algo similar ahora mismo. Tenga en cuenta que usar swig de swig.org a menudo es más fácil, ya que genera los apéndices en la biblioteca nativa para usted.

La respuesta breve a su pregunta es que el archivo ant debe ejecutar el archivo make después de que la biblioteca java ya haya sido comstackda, ya que la biblioteca nativa depende del encabezado swig generado, que se genera a partir de los archivos de clase java.

Si está muy familiarizado con ant y no quiere aprender un nuevo sistema, http://ant-contrib.sourceforge.net/cpptasks/index.html , también vinculado por otro póster, le permitirá crear c ++ en ant.

También puedes probar las tareas terp C ++ en Codemesh . No son libres, pero ofrecen un alto nivel de abstracción junto con la capacidad de descubrir / especificar el comstackdor de C ++ y la capacidad de iterar sobre más de una configuración de comstackdor / architecture de procesador / comstackdor para construcciones multiplataforma.