Com DLL's present a full set of other problems. The biggest is that they return MS specific Objects and not just c data types. Another is that they aren't stand alone and need a host application to run. You can create a c or c++ (or VB for that matter) wrapper to execute and convert the MS Objects to C or Java types.
If your company doesn't want to go through the time and expense, Linar Ltd. out of Engalnd has a pure java product called Jintegra which can access a comm dll using dllhost.exe as the executable. For more information check out their site here
http://www.linar.com/ Hope this helps