Pra que servem os arquivos DLL e SO?

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)?

À 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.