Comecei a ler sobre o framework Java Native Access (JNA) e, realmente, ele facilita bastante o acesso a código nativo na forma de bibliotecas compartilhadas (dll/so) por uma aplicação Java.
No entanto não ficou claro pra mim se é possível trabalhar com dlls escritas em VB ou Delphi, por exemplo. Acho que as bibliotecas devem estar em código-objeto e portanto a linguagem, a princípio, não deveria ser um problema… Então existe alguma espécie de cabeçalho de funções ou objetos dentro da dll que permite saber a assinatura dos mesmos?? Este cabeçalho é em C ou C++ independente da linguagem em que a biblioteca foi escrita?
Se a DLL foi escrita em VB 6.0 ou mais antigo, ela provavelmente é um ActiveX DLL (ou seja, tem de ser registrada). Nesse caso é melhor usar a biblioteca Jacob, em vez da JNA, porque ela dá suporte melhor a ActiveX DLLs.
Se a DLL for escrita em alguma das linguagens .NET (como VB.NET, C#, J#, Javascript.NET, IronPython, Eiffel.NET, Managed C++ etc.), é necessário usar algum outro produto que suporte chamar .NET a partir do Java. Isso deve existir - é questão de procurar.
Andei lendo bastante e pelo que entendi, realmente, a princípio uma dll pode ser acessada independente da linguagem em que foi escrita ou da linguagem que a está acessando. O problema consiste em saber mapear os parâmetros das funções de uma linguagem para outra, o que pode ser bastante trabalhoso e difícil.
Pelo que vi o Jacob já faz o wrapp de ADOs e um monte de outras classes do VB e provavelmente deve ser o projeto que estou precisando.