Download JNI en el desarrollo de aplicaciones Java. osgVP Framework
Document related concepts
no text concepts found
Transcript
JNI en el desarrollo de aplicaciones Java. osgVP Framework Rafael Gaitán Segundos Encuentros de Programadores Java 10 Abril 2008 Universitat Jaume I Contenidos • Experiencia Profesional y Personal. • Java Native Interface (JNI). • Desarrollo Multiplataforma. • Sistemas de Información Geográfica. • OSG Virtual Planets Experiencia Profesional Administrador de Sistemas en el Instituto de Ingeniería Energética (IEE). Desarrollo de IMSTART en el IEE. Creación de Entornos Virtuales en el Mediclab (Proyecto EMMA). Proyecto VirtualMobile en el Grupo de Informática Gráfica (DSIC). Experiencia Personal DemoScene Gráficos por Computador A demo(nstration) in a demoscene sense, is a piece of free software that shows realtime rendered graphics, while playing music. Often, the music is tightly connected/synced to the visuals. Modern pc demos run linear from start to finish and are non-interactive. There is no whatsoever rule what a demo must/can show. The creator is free to decide whether he wants to show stylish and/or impressive effects, an epic story, funny/bizarre/satirical audiovisual artwork or a distorted mindfuck. Actualmente Desarrollo de la extensión 3D para gvSIG en el instituto AI2 y en colaboración con IVER. Java Native Interface Funcionamiento de JNI Funcionamiento de JNI Aplicación Java Java Runtime Sistema Operativo Funcionamiento de JNI Aplicación Java JNI Java Runtime Librería Dinámica Sistema Operativo Introducción a JNI • API del JDK para llamadas nativas. • Definición de métodos nativos en java • • public native void myNativeMethod(); Carga de librerías nativas en Java • • System.loadLibrary(“myNativeLibrary”); Nombre estándar de funciones de la librería dinámica en C. • Java_packagename_classname_methodname(...); Introducción a JNI Librería Dinamica expone Clase C++ depende se replica Librería Dinámica JNI compila System.loadLibrary() JNI Clase JavaC++ en C Clase Java (native) crea Desarrollos con JNI (Eclipse SDK) Desarrollos con JNI (JOGL) Desarrollos con JNI (gvSIG [3D - Raster - Proj]) Desarrollo Multiplataforma Buenas Prácticas • Control de Versiones. • Tests Unitarios. • Sistema de Construcción. • Release early, Release often. • Gestión Online del Proyecto. • Análisis, Diseño y Documentación. Maven • Gestión de Dependencias. • Compilación y Distribución. • Tests Unitarios. • Gestión de Versiones. • Integración con Servidores de Construcción Continua. • Proyectos de Eclipse y NetBeans. CMake • Gestión de Proyectos Nativos. • Generador de Proyectos (CMake). • Makefile, Visual Studio, Xcode, etc. • Búsqueda de dependencias. • Tests Unitarios (CTest). • Integración con Servidor de Construcción Continua (CDash). • Empaquetado de Proyectos (CPack). Sistemas de Información Geográfica SIG Base de Datos Geográfica Información Territorial Raster OrtoFotos Elevaciones Vectorial Líneas Puntos Polígonos Un Sistema de Información Geográfica (SIG o GIS, en su acrónimo inglés) es una integración organizada de hardware, software, datos geográficos y personal, diseñado para capturar, almacenar, manipular, analizar y desplegar en todas sus formas la información geográficamente referenciada con el fin de resolver problemas complejos de planificación y gestión. También puede definirse como un modelo de una parte de la realidad referido a un sistema de coordenadas terrestre y construido para satisfacer unas necesidades concretas de información. OSG Virtual Planets OSG Virtual Planets • Librerías: core, viewer, planets, features, manipulator. • Aplicaciones: appGeoviewer (swing), geoviewer-rcp, editor-rcp, examples. • Plugins de eclipse: viewer-plugin, geoviewer-plugin, editor-plugin, layer(s)plugin(s) osgVP: Arquitectura planets manipulator core viewer features OpenSceneGraph osgVP: Core Vec2 Referenced Vec3 OSGObject Vec4 Node Matrix Group Quat AutoTransform LOD ... osgDB Optimizer osgVP: Viewer • Creación de Contextos de Render en Java • Basado en JOGL • GLCanvas y GLJPanel. • Utilidades para control de la escena. osgVP: Planets PlanetLayers Planet ... RequestLayerEvent TPLod TileLayers Terrain Tile Tile Geometry Technique Group TPLod TPLod TPLod TPLod osgVP: Features osgVP: Manipulator osgVP - GIS Base de Datos Geográfica OrtoFotos Elevaciones Vectorial Líneas Puntos Polígonos osgvp-planets osgvp-features osgvp-manipulator osgvp-viewer osgvp-core Información Territorial Raster Aplicaciones osgVP • gvSIG 3D. • OSGEditor-RCP. • GeoViewer3D. Referencias • Sun Microsystems • http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jni.html • http://java.sun.com/j2se/1.3/docs/guide/jni/spec/jniTOC.doc.html • OpenSceneGraph • • http://www.openscenegraph.org OSGVirtualPlanets • http://jira.ai2.upv.es/confluence/display/JVP/HOME Referencias • Apache Maven • • http://maven.apache.org/ CMake • http://www.cmake.org/ Carga y Visualización de Objetos 3D mediante JNI y OpenSceneGraph Rafael Gaitán Segundos Encuentros de Programadores Java 10 Abril 2008 Universitat Jaume I Contenidos • Preparación del Entorno de Trabajo • Ejemplo-JNI • Ejercicios Prácticos Entorno de Trabajo • Descomprimir encuentrosjava-taller-jni.tar.gz • Abrir Eclipse y seleccionar como Workspace el directorio recién creado. • Añadir external-tools: • mvn eclipse:add-maven-repo • mvn eclipse:eclipse • mvn install • Reiniciar Eclipse Ejemplo JNI package es.uji.jornadas; public class App { static { System.loadLibrary("jni-example"); } Librería Dinamica expone Clase C++ depende se replica Librería System.loadLibrary()Clase Java Dinámica JNI (native) public native void helloWord(); compila public static void main( String[] args ) { App app=new App(); app.helloWord(); } } crea JNI Clase Java-C++ en C Ejemplo JNI Librería Dinamica expone Clase C++ depende se replica Librería Dinámica JNI System.loadLibrary() Clase Java (native) crea compila JNI Clase Java-C++ en C • Generar Cabecera JNI • • javah es.uji.jornadas.App Hacer uso de externaltools para ejecutar. Ejemplo JNI Librería Dinamica expone Clase C++ se replica depende • Compilar Librería Dinámica JNI • • System.loadLibrary() Librería Clase Java Dinámica JNI (native) mvn install Ejecutar Ejemplo. crea compila JNI Clase Java-C++ en C PATH=${workspace_loc}\binaries\win32 Ejercicios Prácticos • Ampliación Ejercicio 1. • JNI de la función para cargas de escenas 3D (osgDB). • JNI del Viewer de escenas 3D (osgViewer). Ejercicio 3