掌握API和控制点(从Java到JNI接口)_39 JNI从C调用Java函数 02
2、 控制点与函数调用
- C调用Java函数,并不一定表示C层拥有控制点。
- 但是, C层拥有控制点的必备表现是: C调用Java层函数
EIT造形的典型:反向调用:Ioc
<T>也能(正向)调用<E>
Android范例
C层拥有控制点的比喻
- 底层提供服务给上层调用。
- User希望AP稳定不变。
- AP希望Java框架不变。
- Java框架期待C/C++模块不变。
- C/C++模块期待驱动稳定不变。
- 人人都期待底下的“平台”不变。
- 地位尊卑顺序相反。
- 行为决策相反。
- 老观点,人人争先恐后做 AP。
- 反之, 新观点,争先恐后做框架和API。
- 新观点,底层先获利。万里长城让关内居民先获利。有利于软硬整合厂家。
- 这不重视另一项流程:命令流程(Command Flow)。误认为请求流程 ==命令流程。
- 于是,命令来自业主或AP,底层硬件厂成为长工,难以实现软硬整合。
- 大家都知道命令的来源是紫禁城内,流向北京城外,再流到长城之外。
- 紫禁城内清朝皇帝的主导地位,必然会最第一道防线(即万里长城)设立关口,并重兵驻守,成为具有高度主导性的接口,例如山海关、居庸关等。
- 唯有主导性API(或称接口,或称关口)才能确保命令的传递和执行。在此平台里,硬件差异化才能凸显于API上,与App相会合。
- C/C++掌握主导权(话语权)、拥有控制点的更多表现:
除了C函数调用Java层函数之外,还有:
1. C函数存取Java对象的属性值。
2. C函数创建Java层的对象(object)。