JVM 32 bits versus 64 bits

3 respostas
R

Pessoal, bom dia!

Estou com o seguinte problema:

Desenvolvi uma aplicação que utiliza uma biblioteca nativa (DLL). Esta aplicação foi desenvolvida numa arquitetura 32 bits (tanto JVM e DLL quanto processador), agora, esta aplicação precisa rodar numa arquitetura 64 bits (tanto JVM e DLL quanto processador).

Pergunta: Eu precisaria recompilar meu código neste ambiente 64 bits? Eu penso que não, pois essa aplicação seria portavel entre as arquiteturas, mas ao carregar a biblioteca a aplicação lança a seguinte exceção:

[java.lang.UnsatisfiedLinkError] [%1 is not a valid Win32 application]

Desde já, obrigado pela ajuda!

3 Respostas

T

A biblioteca NATIVA precisa ser recompilada e ter versões diferentes para cada processador e cada modo de operação (32 x 64 bits, Sparc X Intel/AMD X Itanium, etc.) se você for usar JVMs diferentes.

Você só não precisará recompilar a biblioteca nativa de 32 para 64 se você usar a JVM de 32 bits no Windows de 64 bits; mas aí você não irá aproveitar a capacidade extra de memória e processamento da JVM de 64 bits.

L

acho que teria que recompilar somente a dll…

sjoaquim

Bibliotecas nativas compiladas nada mais são do que uma seqüência de instruções em linguagem de máquina específica da plataforma/SO em que ela foi compilada. Portanto, sempre que trocar a arquitetura da máquina, ela precisa ser recompilada (e, em alguns casos, reescrita para se adequar ao novo ambiente).

Classes Java compiladas não têm esse problema, a JVM é que se vira para transformar o código em linguagem de máquina de acordo com o sistema em que estiver rodando.

Criado 22 de agosto de 2008
Ultima resposta 22 de ago. de 2008
Respostas 3
Participantes 4