Bem, é isso mesmo…Do ponto de vista do programador, pa que servem esses arquivos? Quando preciso gerar uma DLL, por exemplo? E, se eu precisar, como posso fazer uma DLL (ou SO)?
Pra que servem os arquivos DLL e SO?
4 Respostas
À grosso modo para uma explicação rápida, uma DLL nada mais é do que um executável do windows, que contém código como se fosse um .exe. Mas a diferença da DLL e de um .exe, é que a DLL pode ser invocada à qualquer momento por um outro componente…por exemplo:
Eu tenho uma DLL que trata de capturar a memória física do sistema (implementada em C++), Só que eu quero criar um programinha em Java que capture a memória do sistema e apresente numa tela. Aí que está o problema, não será possível fazer isso Java, pois Java não é uma linguagem de baixo nível como C++ ou assembly, pois há uma “camada” que separa a linguagem do baixo nível, que é a JVM, ou seja é impossível esse tipo de informação somente utilizando Java.
Voltando à DLL criada em C++, essa é minha alternativa…lembra que eu disse logo acima que a DLL nada mais é do que um programinha, mas que pode ser utilizada com outros componentes?! Esses componentes podem ser outras linguagens que necessitam de informações como essa da memória, por exemplo. E em Java é a mesma coisa, você pode carregar essa DLL e trabalhar com métodos nativos. Os métodos nativos nada mais são métodos em Java que na verdade está chamando uma função implementada em C++ “dentro” da DLL, assim capturando o retorno dessa função e usando dentro do código Java. Parace estranho mas é isso aí.
Para criar uma DLL, você pode usar o Visual C++ ou mesmo o DEV. Um exemplo bem simples… Você pode criar um programinha em C++ que calcule a soma de dois números, e retornar um inteiro nessa função. Usando umas técnicas que depois vc pode pesquisar no Google, ao invés de simplesmente criar um arquivo .cpp e um executável pra rodar o programinha, vc vai criar uma DLL. Assim usando JNI (pesquise sobre isso), vc carrega a DLL em Java e obtém o retorno da DLL.
Ahhh…“SO” seria a “DLL” do Linux…basicamente isso!
Essa breve explicação talvéz o ajude a pesquisar mais detalhadamente sobre cada parte. Mas do mais, é isso aí!
QQ coisa só responder…
Valeu!
A dll e o so(de sistemas unix) são a mesma coisa. São bibliotecas de ligações dinâmica, isto é, arquivos que contêem funções. Elas usam o conceito de distribuição. Isso permite que vários softwares compartilhem as mesmas funções sem que elas estejam implementadas diretamente nele. Na verdade, tudo isso (o conceito e a idéia) vieram dos sistemas unix.
Obrigado pelo esclarecimento, colegas…
Gostaria que o pessoal me indicasse uma fonte segura para aprender mais sobre JNI.
Em relação à implementação de DLL’s, como faria? É um prgrama em C, por exemplo, compilado de maneira específica?
Obrigado…
Olha, vou te dar uma idéia. Se for para usar código nativo, escreva a aplicação inteira nativa. O jni funciona bem, mas vai te dar muita dor cabeça para escrever.