android 開發淺談(JDK && NDK)
一、軟體開發(Android 開發)
android SDK開發(上層開發)
-------利用Android-SDK編寫的Java程式程式碼,生成的APK,很容易反編譯
android NDK(JNI)開發(其餘開發)
-------利用NDK
,可以開發純C&C++
的程式碼,然後編譯成庫,讓利用Android-SDK開發的Java
程式呼叫
-------利用NDK
開發的庫,不易被反編譯,保密性較高
-------很多開源工程和大型工程都是C&C++
程式碼,把它們轉換為純java
語言是不可能的,只能通過NDK
(JNI)間接呼叫
-------C&C++
的程式碼執行速度和效率都比java
快很多。
二、相關概念
JVM執行原理
-
Android SDK(Software Develop Kit) 指的是Android專屬的軟體開發工具包。
SDK:(software development kit)軟體開發工具包。被軟體開發工程師用於為特定的軟體包、軟體框架、硬體平臺、作業系統等建立應用軟體的開發工具的集合。
JAVA開發也有自己的Java SDK。Android SDK以zip壓縮包的格式下載(如第三章描述的一樣)。Android SDK主要是大量的檔案,包含文件、程式設計API、工具,其餘由示例組成。android SDK中API提供一些擴充套件的java 類庫,類庫分為若干個包,每個包中包含若干個類。具體的android sdk 介紹參見:http://wc0903.iteye.com/blog/599770 -
Android JDK(Java Develop Kit) 指的是Android。
它是一種用於構建在Java平臺上釋出的應用程式、applet 和元件的開發環境。其中包括了Java編譯器、JRE、大量的Java工具、Java基礎API裡面的Java類庫和Java的語言規範。
Sun公司在1998年發表JDK1.2版本的時候, 使用了新名稱Java 2 Platform
,即“Java2平臺”,修改後的JDK稱為Java 2 Platform Software Develping Kit,即J2SDK。並分為標準版(Standard Edition,J2SE), 企業版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。Java2平臺包括標準版(J2SE)、企業版(J2EE)和微縮版(J2ME)三個版本。[1] -
Android JRE(Java Runtime Environment )指的是java執行環境。
JRE是執行JAVA程式所必須的環境的集合,包含JVM
標準實現及Java核心類庫。JDK
的工具也是Java程式,所以也需要JRE才能執行。為了保持JDK的獨立性和完整性,在JDK
的安裝過程中,JRE
也是安裝的一部分。所以,在JDK
的安裝目錄下有一個名為jre的目錄,用於存放JRE
檔案。
當啟動java應用程式,java [xxx]
的時候,java.exe
的任務就是在極其上找到合適的JRE來執行[xxx]。 -
Android Jvm( java virtual machine )指的是java虛擬機器。
它是整個java實現跨平臺的最核心的部分,所有的java程式會首先被編譯為.class
的類檔案,這種類檔案可以在虛擬機器上執行,也就是說class
並不直接與機器的作業系統相對應,而是經過虛擬機器間接與作業系統互動,由虛擬機器將程式解釋給本地系統執行。
java虛擬機器包括一套位元組碼指令集、一組暫存器、一個棧、一個垃圾回收堆和一個儲存方法域。
當執行一個Java
應用程式的時候,就啟動了一個JVM
程式,也就是說產生了一個JVM
。
相關文章
- 淺談 Android 開發文化Android
- Android NDK開發之旅15 NDK Eclipse下NDK開發流程AndroidEclipse
- Ndk 初步開發 In AndroidAndroid
- Android SDK 開發經驗淺談Android
- Android NDK開發(二) 使用ndk-build構建工具進行NDK開發AndroidUI
- Android -- NDK開發入門Android
- [Android開發]Mac下NDK開發(JNI)AndroidMac
- Android NDK開發之旅29 NDK FFmpeg視訊播放Android
- android studio配置ndk開發Android
- Android Studio中NDK開發Android
- Android NDK開發之JNI基礎Android
- Android NDK開發Crash錯誤定位Android
- Android Studio搭建ndk開發流程Android
- Android NDK學習(2)Windows下NDK開發環境配置AndroidWindows開發環境
- 淺談模組化開發
- Android Studio NDK開發-環境配置Android
- Android NDK開發之旅26 C++ STLAndroidC++
- Android Studio NDK開發:自定義庫Android
- Android NDK開發之旅21 C++ 類AndroidC++
- Android Studio NDK開發:環境配置Android
- Android安全開發之淺談金鑰硬編碼Android
- Android Studio NDK開發-JNI呼叫Java方法AndroidJava
- Android NDK 開發之 CMake 必知必會Android
- Android Studio3.0 NDK配置與開發Android
- Mac之Android Studio開發NDK入門MacAndroid
- Android NDK開發之旅30 FFmpeg視訊播放Android
- Android NDK開發之旅22 C++ 類 & 物件AndroidC++物件
- Android ndk開發:fmod語音學習(二)Android
- Android ndk開發:fmod語音學習(一)Android
- Android NDK開發之旅14 JNI 快取策略Android快取
- Android Studio ndk-Jni開發詳解Android
- NDK學習筆記-NDK開發流程筆記
- 淺談 Android ServiceAndroid
- 淺談Android 事件分發機制(二)Android事件
- 【JDK原始碼分析】淺談HashMap的原理JDK原始碼HashMap
- jdk7:淺談 AIO NIO2.0JDKAI
- 淺談Android開發中記憶體洩露與優化Android記憶體洩露優化
- Android NDK開發之旅14 JNI 異常處理Android