Introdu o programa o orientada a objetos com java
This presentation is the property of its rightful owner.
Sponsored Links
1 / 19

Introdução à Programação Orientada a Objetos com Java PowerPoint PPT Presentation


  • 66 Views
  • Uploaded on
  • Presentation posted in: General

Introdução à Programação Orientada a Objetos com Java. Java Native Interface JNI. Adeline de Sousa Silva Centro de Informática Universidade Federal de Pernambuco. O que é JNI ?.

Download Presentation

Introdução à Programação Orientada a Objetos com Java

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Introdu o programa o orientada a objetos com java

Introdução à ProgramaçãoOrientada a Objetos com Java

Java Native Interface

JNI

Adeline de Sousa Silva

Centro de Informática

Universidade Federal de Pernambuco


O que jni

O que é JNI ?

É uma interface que permite executar código nativo (dependente da máquina local) escrito em outra linguagem dentro da sua JVM.

O objetivo desta aula é mostrar

os passos básicos para executar um método nativo


Quando usar m todos nativos

Quando usar métodos nativos?

  • Quando já existe uma grande quantidade decódigo extensivamente testado e depurado escrito em outra linguagem e levaria tempo para portá-lo para Java, depurá-lo e testá-lo.

  • Quando a aplicação requer acesso a recursos da máquina

  • Quando a performance é parte crucial da aplicação


Passos para escrever um m todo nativo

Passos para escrever um método nativo

  • Escrever o arquivo java, contendo a assinatura de um método nativo

  • Compilar o programa java, usando o javac

  • Gerar o arquivo de cabeçalho com o aplicativo javah

  • Alterar o arquivo de cabeçalho, para dar nome aos parâmetros do método


Passos para escrever um m todo nativo cont

Passos para escrever um método nativo (cont.)

  • 5. Escrever o arquivo C, que implementa o método definido no arquivo de cabeçalho

  • 6. Compilar o arquivo C e gerar uma biblioteca (Unix, Linux) ou uma DLL(Windows)

  • 7. Alterar o programa Java, para que ele possa carregar a biblioteca gerada no passo anterior

  • 8. Recompilar o programa Java


Declarando o m todo nativo

Declarando o método nativo

public class HelloNative {

...

public native void sayHello();

}

A classe em Java só possui a assinatura do método nativo

Modificador “native” indica que o método é nativo


Compilando o programa java e gerando o arquivo de cabe alho

Compilando o programa Java e gerando o arquivo de cabeçalho

Agora, basta compilar o programa:

javac HelloNative.java

E gerar o arquivo de cabeçalho:

javah HelloNative


O arquivo de cabe alho

O arquivo de cabeçalho

#include <jni.h>

#ifndef _Included_HelloNative

#define _Included_HelloNative

#ifdef __cplusplus

extern "C" {

#endif

JNIEXPORT void JNICALL Java_HelloNative_sayHello

(JNIEnv *, jobject);

#ifdef __cplusplus

}

#endif

#endif

Falta dar nome aos parâmetros


O arquivo em c

O arquivo em C

#include <stdio.h>

#include "HelloNative.h"

JNIEXPORT void JNICALL Java_HelloNative_sayHello

(JNIEnv *env, jobject obj) {

printf("\nHelloWorld!!!\n");

}

Código que será executado, quando o método java for chamado.


Compilando o arquivo no unix

Compilando o arquivo no Unix

gcc –G –I/usr/local/java/jdk1.2.2/include \

-I/usr/local/java/jdk1.2.2/include/solaris \ HelloNative.c –o hello.lib


Compilando o arquivo no windows ms visual c

Compilando o arquivo no Windows (MS Visual C++)

  • No menu File, escolha new

  • Na Wizard New, escolha DLL

  • Na Wizard DLL, escolha Empty DLL

  • No menu project, escolher Add to Project, depois Files

  • Inserir os arquivos .c e .h


Compilando o arquivo no windows ms visual c1

Compilando o arquivo no Windows (MS Visual C++)

  • No menu Tools, escolher Options, depois Directories e adicionar os paths do jdk1.2.2\include e jdk1.2.2\include\win32

  • No menu Build, escolher Build DLL

  • São gerados vários arquivos, mas você só precisa importar a DLL.


Reescrevendo o programa java

Reescrevendo o programa Java

public class HelloNative {

public native void sayHello();

static {

System.load(“/home/adss/Hello.lib”);

}

}

Bloco estático. É executado antes do primeiro uso da classe


Tipos

Tipos

  • É preciso fazer conversões de tipos entre a linguagem Java e a linguagem C. Principalmente porque Java tem um sistema de tipos forte e o tamanho em bytes dos tipos para Java independe de plataforma, enquanto que em C isso não é verdade.


Tipos java x tipos c

boolean

byte

char

short

int

long

float

double

jboolean

jbyte

jchar

jshort

jint

jlong

jfloat

jdouble

Tipos Java X Tipos C

Java

C


Tipos java x tipos c cont

boolean[]

int []

double[]

Object[]

jbooleanArray

jintArray

jdoubleArray

jobjectArray

Tipos Java X Tipos C (cont.)


Tipos1

Tipos

  • Matrizes

    • São tratados como jobjectArray, onde cada jobject é um jxxxArray

  • Strings

    • Precisam ser tratadas de forma especial pois Strings em Java são bem diferentes de Strings em C


Algumas fun es jni

Algumas funções JNI

  • Toda função JNI é invocada através do ponteiro env, que é passado sempre como primeiro argumento em um método nativo e é um ponteiro para várias funções.

  • Toda função invocada, tem como primeiro argumento o ponteiro env.

    • Ex: (*env) -> GetObjectClass(env,obj);


Algumas fun es jni1

Algumas funções JNI

  • Funções que permitem acessar informações a respeito da classe:

    • getObjectClass(env, ref_obj)

    • getFieldID(env,ref_classe,nome_attr,

      tipo_attr)

    • getXXXField(env, ref_obj,field_ID)

    • getMethodID(env, ref_classe,nome_met, assinatura)


  • Login