从编程到设计之路:Java 与 C/C++整合的JNI设计
2015-08-17 10:04
555 查看
从编程到设计之路:
Java 与 C/C++整合的JNI设计
<< 高焕堂演讲主题 >>
主题:从编程到设计之路:Java 与 C/C++整合的JNI设计地点:杭州.浙江大學 (2014/6/5)下载:高焕堂的演讲PPT
<< 內容說明 >> ☆ 无论是C++或Java,都是从C语言的struct数据结构和function代码结构为基础,而发展出来的。因此,Java与C/C++可以进行无缝对接的设计。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/3fba8240c1a203b63cab7183dc35c957.jpg)
☆ 以上是两个观点(视角)的交叉,C语言是从函数观点切入,看到了函数的代码指挥计算机硬件去处理(Process)数据。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/02acccc61d6c51269516b0b064372567.jpg)
☆ 在这C语言函数视角里,人们的思维和表达形式为:请电脑打开Led灯,或关闭Flash灯。电脑代码则可表示为:turnOn(Led灯),或者:turnOff(Flash灯)。☆ 现在,可变换成为Java语言的对象(数据)视角。此时,人们的思维和表达形式转变成为:请Led灯自己打开,或请Flash灯自己关闭。电脑代码则可表示为:Led灯.turnOn,或者:Flash灯.turnOff。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/ff00e34c7a0042a7b0c1e08b3f0aad7b.jpg)
☆ 于是,把原来C语言的函数(如turnOn)打包进去Light类里,然后创建Light类的对象,再透过Light对象去调用turnOn()函数来打开自己。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/4afaf8bc5506735608a07461dca60653.jpg)
☆ 上图里的turnOn()和turnOff()函数里的代码,可以使用Java来写,也可以使用C/C++语言来写。 ☆ 如果使用C/C++来写,就定义了JNI来建立Java与C/C++之间的沟通接口标准了。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/a0edbed815547e5961a4e69c5fcfd360.jpg)
☆ 还有许多重要技术。例如,无论是C或Java都必须将目前对象(Current Object)指针传给C函数。让C函数可指向目前对象,以便存取对象的内部属性质或调用类里的其它函数。☆ 请下载高老师的PPT,有详细说明,下载:高焕堂的演讲PPT
高老师的先进课程(请点击此图)…
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/ecace0085db8566eb97297e59d834402.jpg)
Java 与 C/C++整合的JNI设计
<< 高焕堂演讲主题 >>
主题:从编程到设计之路:Java 与 C/C++整合的JNI设计地点:杭州.浙江大學 (2014/6/5)下载:高焕堂的演讲PPT
<< 內容說明 >> ☆ 无论是C++或Java,都是从C语言的struct数据结构和function代码结构为基础,而发展出来的。因此,Java与C/C++可以进行无缝对接的设计。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/3fba8240c1a203b63cab7183dc35c957.jpg)
☆ 以上是两个观点(视角)的交叉,C语言是从函数观点切入,看到了函数的代码指挥计算机硬件去处理(Process)数据。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/02acccc61d6c51269516b0b064372567.jpg)
☆ 在这C语言函数视角里,人们的思维和表达形式为:请电脑打开Led灯,或关闭Flash灯。电脑代码则可表示为:turnOn(Led灯),或者:turnOff(Flash灯)。☆ 现在,可变换成为Java语言的对象(数据)视角。此时,人们的思维和表达形式转变成为:请Led灯自己打开,或请Flash灯自己关闭。电脑代码则可表示为:Led灯.turnOn,或者:Flash灯.turnOff。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/ff00e34c7a0042a7b0c1e08b3f0aad7b.jpg)
☆ 于是,把原来C语言的函数(如turnOn)打包进去Light类里,然后创建Light类的对象,再透过Light对象去调用turnOn()函数来打开自己。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/4afaf8bc5506735608a07461dca60653.jpg)
☆ 上图里的turnOn()和turnOff()函数里的代码,可以使用Java来写,也可以使用C/C++语言来写。 ☆ 如果使用C/C++来写,就定义了JNI来建立Java与C/C++之间的沟通接口标准了。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/a0edbed815547e5961a4e69c5fcfd360.jpg)
☆ 还有许多重要技术。例如,无论是C或Java都必须将目前对象(Current Object)指针传给C函数。让C函数可指向目前对象,以便存取对象的内部属性质或调用类里的其它函数。☆ 请下载高老师的PPT,有详细说明,下载:高焕堂的演讲PPT
高老师的先进课程(请点击此图)…
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/26/ecace0085db8566eb97297e59d834402.jpg)
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序