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