java 为什么能够调用OpenCV?

OpenCV是用C++写的。但是java运行环境和C++运行环境不一样,那java是怎么调用OpenCV的?我看到还有个dll文件,原理是什么呢?

http://blog.sina.com.cn/s/blog_7b4a5b550101ifi7.html

http://www.cnblogs.com/zgqys1980/archive/2012/08/16/2641922.html

java可以通过jni调用c+=的库。

java可以通过native定义的方法与c++代码通讯,比如android系统中就是很多用c++写的。

谢谢大家,看了这些回答再结合自己找的一些资料已经弄明白了