JNI en el desarrollo de aplicaciones Java. osgVP...

40
JNI en el desarrollo de aplicaciones Java. osgVP Framework Rafael Gaitán Segundos Encuentros de Programadores Java 10 Abril 2008 Universitat Jaume I

Transcript of JNI en el desarrollo de aplicaciones Java. osgVP...

Page 1: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

JNI en el desarrollo de aplicaciones Java. osgVP Framework

Rafael GaitánSegundos Encuentros de Programadores Java

10 Abril 2008Universitat Jaume I

Page 2: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

• Experiencia Profesional y Personal.

• Java Native Interface (JNI).

• Desarrollo Multiplataforma.

• Sistemas de Información Geográfica.

• OSG Virtual Planets

Contenidos

Page 3: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Experiencia ProfesionalDesarrollo de IMST-

ART en el IEE.

Creación de Entornos Virtuales en el Mediclab (Proyecto EMMA).

Administrador de Sistemas en el Instituto de Ingeniería Energética (IEE).

Proyecto VirtualMobile en el Grupo de Informática Gráfica (DSIC).

Page 4: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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.

Page 5: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

ActualmenteDesarrollo de la extensión 3D para gvSIG en el instituto AI2 y en colaboración con IVER.

Page 6: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Java Native Interface

Page 7: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Funcionamiento de JNI

Page 8: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Funcionamiento de JNI

Aplicación Java

Java Runtime

Sistema Operativo

Page 9: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Funcionamiento de JNI

Aplicación Java JNI

Java Runtime

Sistema Operativo

Librería Dinámica

Page 10: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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(...);

Page 11: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Introducción a JNI

Librería Dinamica Clase C++

Clase Java (native)

JNI Clase Java-C++ en C

Librería Dinámica JNI System.loadLibrary()

expone

se replica

creacompila

depende

Page 12: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Desarrollos con JNI (Eclipse SDK)

Page 13: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Desarrollos con JNI (JOGL)

Page 14: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Desarrollos con JNI (gvSIG [3D - Raster - Proj])

Page 15: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Desarrollo Multiplataforma

Page 16: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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.

Page 17: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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.

Page 18: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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).

Page 19: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Sistemas de Información Geográfica

Page 20: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

SIG

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.

Raster

Vectorial

Base

de

Dat

os G

eogr

áfica

OrtoFotos

Elevaciones

Líneas

Puntos

Polígonos

Info

rmac

ión

Terr

itoria

l

Page 21: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

OSG Virtual Planets

Page 22: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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)

Page 23: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

osgVP: Arquitectura

core

planets

features

manipulator

viewer

OpenSceneGraph

Page 24: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

osgVP: Core

Node

OSGObject

Referenced

Group

AutoTransform

LOD

...

Vec3

Vec2

Matrix

Vec4

Quat

osgDB

Optimizer

Page 25: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

osgVP: Viewer

• Creación de Contextos de Render en Java• Basado en JOGL

• GLCanvas y GLJPanel.• Utilidades para control de la escena.

Page 26: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

osgVP: Planets

Planet

TPLod

TPLod

...

TerrainTile

Tile Geometry Technique

Group

TPLod TPLod TPLod

PlanetLayers

TileLayers

RequestLayerEvent

Page 27: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

osgVP: Features

Page 28: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

osgVP: Manipulator

Page 29: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

osgVP - GIS

Raster

Vectorial

Base

de

Dat

os G

eogr

áfica

OrtoFotos

Elevaciones

Líneas

Puntos

Polígonos

Info

rmac

ión

Terr

itoria

l osgvp-core

osgvp-planets

osgvp-features

osgvp-manipulator

osgvp-viewer

Page 30: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Aplicaciones osgVP• gvSIG 3D.

• OSGEditor-RCP.

• GeoViewer3D.

Page 31: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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

Page 33: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Carga y Visualización de Objetos 3D mediante JNI y OpenSceneGraph

Rafael GaitánSegundos Encuentros de Programadores Java

10 Abril 2008Universitat Jaume I

Page 34: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

• Preparación del Entorno de Trabajo

• Ejemplo-JNI

• Ejercicios Prácticos

Contenidos

Page 35: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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

Page 36: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Ejemplo JNI

package es.uji.jornadas; public class App { static { System.loadLibrary("jni-example"); }

public native void helloWord();

public static void main( String[] args ) { App app=new App(); app.helloWord(); } }

Librería Dinamica Clase C++

Clase Java (native)

JNI Clase Java-C++ en

C

Librería Dinámica JNI

System.loadLibrary()

expone

se replica

creacompila

depende

Page 37: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Ejemplo JNI

• Generar Cabecera JNI• javah es.uji.jornadas.App

• Hacer uso de external-tools para ejecutar.

Librería Dinamica Clase C++

Clase Java (native)

JNI Clase Java-C++ en

C

Librería Dinámica JNI

System.loadLibrary()

expone

se replica

creacompila

depende

Page 38: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Ejemplo JNI

• Compilar Librería Dinámica JNI

• mvn install

• Ejecutar Ejemplo.

Librería Dinamica Clase C++

Clase Java (native)

JNI Clase Java-C++ en

C

Librería Dinámica JNI

System.loadLibrary()

expone

se replica

creacompila

depende

PATH=${workspace_loc}\binaries\win32

Page 39: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

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).

Page 40: JNI en el desarrollo de aplicaciones Java. osgVP …encuentrosjava.uji.es/SegundosEncuentros/materiales/encuentrosjava... · JNI en el desarrollo de aplicaciones Java. osgVP Framework

Ejercicio 3