Java C bytes

Propaganda
JAVA/C
Disciplina: Ambientes de Execução Paralela
Profs. Dr. Celso Maciel da Costa
Dr. Cesar de Rose
Dr. Fernando Dotti
Alunos:
Alessandro Copetti
Caio Graco P. Alegretti
1
Sumário

Abordagens para Integração Java/C

JNI - Métodos Nativos

Considerações da integração

Etapas de desenvolvimento Java/C

Passagem de parâmetros

Bibliografia
2
Abordagens para Integração Java/C

a) Java Native Interface (JNI)
– baixo nível
– faz parte do JDK

b) TwinPeaks da SunSoft e Ilog Inc.
– acessa bibliotecas C++ automaticamente

c) Java/COM
– usa ActiveX (Microsoft Windows)

d) CORBA
– Joe da Sun; OrbixWeb da Iona.
3
JNI - Métodos Nativos

Código Nativo: código escrito em outra
linguagem

Necessita uma interface entre Java e o código
nativo (“binding”)
– stub: ponto de entrada de uma biblioteca C/C++ que
pode ser chamada a partir do Java.
4
Considerações da Integração
Vantagens:

possibilidade de acrescentar funções não
presentes nas classes padrão.

Reaproveitar código disponível

acessar características do sistema ou
dispositivos

maximizar a velocidade do código
5
Considerações da Integração - cont.
Desvantagens:

Perda de portabilidade de aplicativos.

Applets não podem executar métodos nativos
por default, mas o gerenciador de segurança
pode ser customizado

[HOR98]: “última escolha”
6
Etapas de desenvolvimento Java/C

1) Escrever o código Java

2) Compilar código Java (javac ListDirJava.java)

3) javah para gerar header C. Há 2 opções:
– javah ListDirJava (.h) e javah -stub ListDirJava (.c)
– javah -jni ListDirJava (.h)

4) Escrever o código C (ListDirC.cpp)
7
Etapas de desenvolvimento Java/C - cont

5) Criar uma biblioteca dinâmica
– bcc32 -I. -Ic:\jdk1.2beta4\include Ic:\jdk1.2beta4\include\win32 -tWD ListDirC.cpp
– cl /I\arquiv~1\devstudio\vc\include /I\jdk1.1.6\include
/I\jdk1.1.6\include\win32 /LD ListDirC.cpp /Felibdestino.dll

6) Executar o programa
– java Main
8
Código
Java
javac
*.class
execução
javah -jni
*.h
Código
C
*.DLL
Compilador C
include JDK
9
Passagem de parâmetros

A JNI define tipos de dados compatíveis entre C
e Java: Java
C
bytes
–
–
–
–
–
–
–
–
boolean
byte
char
short
int
long
float
double
jboolean
jbyte
jchar
jshort
jint
jlong
jfloat
jdouble
1
1
2
2
4
8
4
8
10
Bibliografia

[NEW97] NEWMAN, Alexander. Usando Java. Rio de
Janeiro: Campus, 1997.

[HOP96] HOPSON, K. C., INGRAM, S. E. Desenvolvendo
Applets com Java, Rio de Janeiro: Campus, 1996.

[HOR98] HORSTMANN, Cay S, CORNELL, Gary. Core
Java, vols. 1 e 2. Palo Alto: Prentice Hall, 1998.

Http://www.performancecomputing.com/unixreview/backis
su/9707/9707f1.htm. Harley Davis. UNIX Review Combining Java with C++. 1998.
11
Bibliografia - cont.

TwinPeaks: http://www.ilog.com

SUN. http://java.sun.com
12
Merci beaucoup par votre attention !
----------------------------------------------------
13
Download