jni en el desarrollo de aplicaciones java. osgvp...

Post on 30-Sep-2018

225 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

JNI en el desarrollo de aplicaciones Java. osgVP Framework

Rafael GaitánSegundos Encuentros de Programadores Java

10 Abril 2008Universitat Jaume I

• Experiencia Profesional y Personal.

• Java Native Interface (JNI).

• Desarrollo Multiplataforma.

• Sistemas de Información Geográfica.

• OSG Virtual Planets

Contenidos

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

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.

ActualmenteDesarrollo 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

Sistema Operativo

Librería Dinámica

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 Clase C++

Clase Java (native)

JNI Clase Java-C++ en C

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

expone

se replica

creacompila

depende

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

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

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

core

planets

features

manipulator

viewer

OpenSceneGraph

osgVP: Core

Node

OSGObject

Referenced

Group

AutoTransform

LOD

...

Vec3

Vec2

Matrix

Vec4

Quat

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

Planet

TPLod

TPLod

...

TerrainTile

Tile Geometry Technique

Group

TPLod TPLod TPLod

PlanetLayers

TileLayers

RequestLayerEvent

osgVP: Features

osgVP: Manipulator

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

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

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

Rafael GaitánSegundos Encuentros de Programadores Java

10 Abril 2008Universitat Jaume I

• Preparación del Entorno de Trabajo

• Ejemplo-JNI

• Ejercicios Prácticos

Contenidos

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"); }

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

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

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

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

top related