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