• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Alucard

[Java] Tutorial Nativo Java

4 mensagens neste tópico

Olá, vou tentar explicar algo, bem interessante em java.

Java é uma linguagem multi-plataforma, ou seja, roda em qualquer

sistema operacional, mas java tem suas restrições, como por

exemplo, não poder acessar o registro do windows, usar apis

dentro outras restrições...

Mas para resolver esse problemas a sun, fez uma "melhoria"

incluindo JNI (Java Native Interface), com isso você pode

programar para o sitema operacional, e não para a máquina

virtual. Para mais informações sobre JNI consulte:

http://www.javafree.org/javabb/viewtopic.jbb?t=13913

http://java.sun.com/j2se/1.4.2/docs/guide/jni/

Bem o meu objetivo nesse tutorial não é explicar como fazer

JNI em java, mas sim como fazer uma aplicação nativa dentro

de um código em java, como por exemplo uma biblioteca ou

até mesmo um executável, ficar dentro de uma aplicação java.

Juntando isso com a multi-plataforma de java, poderia

ser criado um trojam multi-plataforma, com apenas um

"executável", byte code.

O básico é: colocar um arquivo, dentro de um vetor.

Em java é possivél tem um vetor de bytes, e baseado

nisso gravar esse vetor em disco. Pois é isso que vou fazer.

Primeiramente, vamos criar um arquivo executavel nativo.

Eu escolhi uma aplicação bem simples feita em vb6, mas

poderia ser qualquer tipo de aplicação, essa minha aplicação

ele apenas aparece um form, nada mais.

O segundo passo agora é transformar a cadeia de bytes do

arquivo em vetor, de bytes. Para isso criei uma aplicação

simples que me fornesse essa informação, ainda está incompleta

mas, vai atender a nossa necessidade. Os códigos fontes, está

disponivel no link abaixo, usei a IDE NetBeans:

http://geocities.yahoo.com.br/alucard_dxs/TutorialNativoJava/BinarioVetor.zip

O uso dessa ferramente é bastante simples, abrar um arquivo

que deseja incluir no arquivo java, demora um pouco para carregar,

mas quando terminar, será mostra uma classe chamada Binario1 que

contém um vetor, e o metodo main.

TelaPrincipal.JPG

Lembrando que uma classe java tem um tamanho máximo, ou seja,

tem um número restrito de linhas, não sei ao certo a quantiade,

por isso aconçelho que para essa fase de teste abra um arquivo

bem pequeno. Quando esse erro ocorre aparece algo do tipo:

"C:\Documents and Settings\Danilo\Meus documentos\Projetos\Java\BinarioVetor\src\Binario1.java:5: code too large

public class Binario1 {

1 error

FALHA NA EXECUÇÃO (tempo total: 3 segundos)"

ErroTamanhoArquivo.JPG

Bem para resolvermos esse problema, é só criar um outra classe java

e criar outro vetor, selecionando um pedaço do vetor que esta na

classe 1 colocamos o restante na classe 2, apenas dividimos o vetor

em classes. Deixa cada classe com aproximadamente 500 linhas.

Após abrir o arquivo e ser gerado o código-fonte, peça para salvar

o código-fonte, eu fiz algo simples. Será gerado no c:\ um aquivo

chamado Binario1.java.

Agora compile e execute, esse arquivo. Será gerando novamente o arquivo

que você pediu para incluir, mas com outro nome, Saida.(extenção do arquivo).

Estou disponiblizando o exemplo citado a cima, no qual apenas aparece um form

feito em vb6, o link dessa aplicação e os códigos-fontes estão em

http://geocities.yahoo.com.br/alucard_dxs/TutorialNativoJava/Exemplo.zip

Nesse exemplo, para ver se funciona execute apenas "java Binario1"

ele retorna uma menssagem de texto dissendo que o arquivo foi gerado.

CompilacaoCorreta.JPG

Acesse o c:\ e encontre um arquivo chamada Saida.exe. Pronto o arquivo foi gerado

apartir de uma classe java.

CodigoGerado.JPG

Pronto, imagine agora você cria uma dll, em c, com funções nativas para

um sitema operacional, e usando JNI, você terá o controle total da maquina

atravez de um executável e usando a portabilidade de java, poderiamos

verificar qual é o sistema operacional e incluir o arquivo para o sistema adequado.

Espero ter ajudado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou seja se bem percebi é colocar o código do programam nativo em um byte array e depois usar o java para criar recriar o exe.

Ora ai está uma coisa engraçada :P

Relativamente ao JNI há um artigo na Revista de Maio (Autoria minha :P LOL)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é, só nao entendi porque seria engraçado... assim imagino que tiraria a limitação da maquina virutual...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde é que em todo o artigo se usa JNI? E qual a utilidade, prática ou académica, para o artigo apresentado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora