关于java jni的疑惑

小弟才开始接触java jni ,有些疑惑不解,貌似通过编译java文件生成class,再通过javah 这个class生成。h的头文件,之后C++什么的去实现这个头文件,java程序再调用。
这样的话c++之类的必须按照一定的格式去实现。
但是如果是标准的dll呢?该如何调用?又或者厂商已经写好的dll,java又该如何去调用?

有JNI规范的,C/C++中的数据类型与Java数据类型转换要通过JNI API来实现,标准C/C++的DLL,Java当然不能直接调用DLL,要用JNI再代理一下,Java调用JNI实现,JNI实现中再调用标准DLL API。

推荐一本书《Java核心技术 2nd Edition》sun公司出版