Java進階應用程式開發經驗分享

來源:互聯網
上載者:User

出處: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軟體開發的工程師掙得多,唉。。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.