以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  Java高级应用开发经验分享[灌水]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=77387)


--  作者:多翻空什
--  发布时间:9/23/2009 7:51:00 PM

--  Java高级应用开发经验分享[灌水]
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软件开发的工程师挣得多,唉。。。
如果大家也有兴趣,我给大家介绍2个网站:
Gphone Android可以去这里看看http://bbs.android123.com/。有很多开发经验交流内容。
Ophone官方网站http://www.ophonesdn.com, 上面的大量的入门资料, 适合初、中,高级开发者, 包括了地图, 声效, 视频等方面资料应用,收获的效果可能超出你的想像。比如他在 开发社区上天天有资料更新, 有时用百度,谷歌看看搜不到资料,因为现在Ophone开发者越来越多, 而且他目前不断的在在丰富他的开发群,官网就成开发者的天堂,同时他也注重JNI的应用的推广, 我看了几次发现JNI在Ophone, Android 使用起来也比较得简单。



--  作者:像雨又像雾
--  发布时间:9/26/2009 11:15:00 AM

--  
感觉他们网站还是有点技术含量。起码提供的技术文档,按着方法试了试。http://www.ophonesdn.com/forum/forum.do。OPhone开发文档都很全面,对我刚接触这个平台的时候,所碰到的问题,在线专业工程师都能够给我解答。

--  作者:稻飞虱D
--  发布时间:9/30/2009 10:15:00 AM

--  
上面的JNI源码我已经放在ECLIPSE 里面运行过了,太简单了。哈我喜欢我解答。
--  作者:稻飞虱D
--  发布时间:10/6/2009 3:40:00 PM

--  
跟确切地说,除非你的J2ME程序超级简单,否则它基本不跨平台--换一台手机执行就要移植一次。
或许J2ME技术在跨平台上却做的很不能让人满意,但Ophone OS上的Java似乎要好一点,至少系统是完全统一的。
--  作者:aghgeig
--  发布时间:10/8/2009 11:20:00 AM

--  
JAVA依旧是个强大的语言。顶了此贴必火。
--  作者:稻飞虱D
--  发布时间:10/12/2009 10:06:00 AM

--  
ophone讲座都听了没?谁听了,?
--  作者:稻飞虱D
--  发布时间:10/13/2009 9:50:00 AM

--  
广州站现场人太多,挤不进去。
--  作者:小男孩123
--  发布时间:10/16/2009 10:23:00 AM

--  
ophoneOS入门还是很容易的。但是要作深,还是得多听听最近开展的讲座了。也就ophone刚推。
--  作者:稻飞虱D
--  发布时间:10/19/2009 4:10:00 PM

--  
目前最主流的开发系统就是Android OphoneOS IphoneOS,但国内这三种平台开发个人或团队都不多。主要还是集中于2G傻瓜系统symbian。智能机在全球数量的增加与被人们的热捧。Symbian系统本身已经很难满足现在智能机的要求了。
--  作者:猪猪887
--  发布时间:10/22/2009 9:32:00 AM

--  
如若说这个对于新手具有一定的帮主,移动市场的趋势流行化,让我们更加关注移植方面的技术问题。
--  作者:稻飞虱D
--  发布时间:10/24/2009 8:31:00 PM

--  
感谢。应对于我目前的一个问题,略有帮助。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms