Java高级应用开发经验分享

出处:http://blog.csdn.net/ddrr2009/article/details/4768505

Java的优点有: 跨平台性很强的,一次编译到处运行,一边编译一边执行, 不受病毒的干扰。但是美中不足,运行速度比C,C++ 等语言慢, 访问硬件底层比不上C++,C,一些应用需求却需要执行纯 Java 程序无法完成的一些任务。为此SUN公司为了突破JAVA的瓶颈, 就引入了JNI 的作用, JNI就是能够兼容C,扬长避短, 快速的访问硬件底层, 扩展我们软件的功能, 随心所欲的进行开发。对于移动开发而言, BREAW, SYMBIAN,等就是以C和C++为基础的, 而现在市场的新兴智能平台ANRDOID 和中国移动的Ophone也是以JAVA 开发为主, 也用到了JNI。而为什么笔者在本文力也推JNI 呢? 原因如下 :J2ME作为手机应用开发的先驱,由于它的出发点考虑比较低,开发出来的手机应用软件处处受到限制,特别是在底层方面比如手机壁纸,声音均衡器,声音的捕捉等是不能通过软件来设置。不能让我们随心所欲的开发、策划我们的软件。而我们从Android Library或Ophone Library的组成来看, 他是由一系列的c/c++库组成,这些库的能力通过JNI封装成java接口,由Application Framework层提供给开发者。这样JNI为的们访问手机的硬件底层提供接口和方便。这些底层有:声音均衡器,视频,地图,3D, 驱动编写,网络底层等,这样就可以用JAVA 做UI界面,JNI来调用系统的底层, 这样两结合起来就是既提高开发的速度,又提高了软件的运行速度。不久将来Android 或Ophone只要实现了J2me API(大势所趋),这样大量现有的J2ME的应用可以很容易的移植到Android 或Ophone上来,而且通过JNI可以很容易的增加调用底层的高级功能。市场前景很宽阔。下面我就介绍一下:java 调用JNI示例:class HelloWorld {  public native void displayHelloWorld();//声明调用C的方法    static {  System.loadLibrary("hello");//导入C的文件,并运行C的MAIN() 方法.  }    public static void main(String[] args) {// 运行主程序  new HelloWorld().displayHelloWorld();//生成   }  }声明native方法:如果你想将一个方法做为一个本地方法的话,那么你就必须声明改方法为native的,并且不能实现。其中方法的参数和返回值在后面讲述。    Load动态库:System.loadLibrary("hello");加载动态库.C 的代码:   #include  /* Header for class HelloWorld */    #ifndef _Included_HelloWorld //声明C文件( 标识为C,语言代码)  #define _Included_HelloWorld  #ifdef __cplusplus  extern "C" { //调用C的标志  #endif  JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld // 方法主体  (JNIEnv *, jobject);    #ifdef __cplusplus  }  #endif  #endif  从以上的代码我们可以看出, 调用JNI 就是首先是写好C文件, 然后在要调用它的JAVA文件声明调用方法, 在方法里面调用 System.loadLibrary() 即可。这样方便,代码量少, 实用, 有一定的C语言基础的人, 几分钟就可以入门了, 根本不用那么长的时间来看。 没有C语言的人看了几天的C入门, 也很快上手的。 JNI 调用功能,目前只在中国移动OPHONE和ANDROID 被引入了,Symbian 、Wm、Brew等平台,还不能通过JNI方式很好的调用底层硬件,影响了软件体验的完美程度。这一点仅仅是平台差异对未来软件人性化设计的影响差异。软件的人性化差异,会影响用户的规模,市场的规模,这点大家都很清楚。如果再加上市场因素,比如,Symbian、Wm虽然现在很流行,但是后来居上的Android和Ophone,尤其是Ophone,借助中国移动在7亿手机用户市场70%的市场占有率和大把的商业、企业客户,未来在这2个市场上销售手机娱乐软件和行业移动自动办公软件,市场的商机肯定比其它光有产品而没有市场控制力的国外厂家要强,这一点也很明显。所以我们了解熟悉JNI的用法,也可以很方便把我们现有的软件产品,快速移植到Android或Ophone平台上来。最近看新闻,说移动在广州和几个自由软件作者刚签约,在移动的MM在线软件销售商店上卖。3,7分成,工程师拿7成,看着挺让人羡慕。以后自己有灵感开发个有意思的手机娱乐软件卖卖,又多了条生财之路。3G市场起来,估计后面跟风的软件开发公司也会多,移动软件工程师比咱们做pc软件开发的工程师挣得多,唉。。。

即使爬到最高的山上,一次也只能脚踏实地地迈一步。

Java高级应用开发经验分享

相关文章:

你感兴趣的文章:

标签云: