เจ้าหุ่นเขียวแอนดรอยด์มีข้อดีอย่างหนึ่งสำหรับ Developer คือเขียนโปรแกรมง่ายมากด้วยภาษาจาวาที่หลายคนคุ้นเคย แต่มันก็มีข้อเสียอยู่ในข้อดีนั้นด้วยคือเราไม่สามารถเขียนโปรแกรมที่ดึงพลัง CPU ออกมาใช้อย่างเต็มที่ได้เช่น Real Time Image Processing
ทางกูเกิ้ลเห็นปัญหาตรงนี้เลยปล่อย Android NDK (Native Development Kit) ออกมาเพื่อให้นักพัฒนาสามารถเขียนโปรแกรมลงบนแอนดรอยด์ด้วยภาษา C/C++ ได้
แต่ทั้งนี้ เราไม่สามารถเขียนโปรแกรมด้วยภาษา C/C++ ทั้งหมดได้ เพราะโปรแกรมจะยังทำงานบน Dalvik VM อยู่เหมือนเดิม เพียงแต่ว่าเราสามารถเขียนตัวเชื่อมระหว่างภาษาจาวากับภาษา C/C++ ผ่านทาง JNI ได้ดังรูป
ดังนั้นหากถามว่า NDK จะทำให้อะไรเปลี่ยนไปมากหรือไม่? ก็ตอบว่าไม่ถึงกับพลิกหน้ามือเป็นหลังเท้าแต่ก็เป็นนิมิตหมายที่ดีที่อาจจะได้เห็นอะไรที่แปลกๆจากการดึงประสิทธิภาพ CPU มาใช้อย่างเต็มที่เช่นการประมวลผลภาพแบบทันควัน (Real Time Image Processing) บนโทรศัพท์มือถือแอนดรอยด์หรือแม้กระทั่งการเขียน Video Decoder เองด้วยภาษา C/C++ และอีกหนึ่งอย่างที่สำคัญคือ Open Source บนโลกลินุกซ์ส่วนใหญ่จะเป็น C/C++ เจ้า NDK จะช่วยให้นักพัฒนา Port โปรแกรมจากลินุกซ์มาลงบน Android ได้ง่ายขึ้นมาก
ซึ่งสิ่งที่มีมาให้กับ NDK จะมีดังนี้
- เครื่องมือสำหรับการพัฒนา (Development Tools)
– Cross Compiler ที่ใช้ในการคอมไพล์โปรแกรมเป็น Native ARM Binary
– Header ของ Standard Library ต่างๆบนลินุกซ์- libc (C library) headers
- libm (math library) headers
- JNI interface headers
- libz (Zlib compression) headers
- liblog (Android logging) header
- A Minimal set of headers for C++ support
- เอกสาร (Documentation) เพื่อใช้ในการลงโปรแกรมและคอมไพล์
- ตัวอย่างโปรแกรมสองโปรแกรมได้แก่ hello-jni และ two-libs
โดยเราสามารถแพครวมไฟล์ ARM Binary ที่คอมไพล์เสร็จเข้าไปในไฟล์ apk เพื่อนำไปลงในเครื่องปลายทางด้วยวิธีปกติได้ทันที
ใครสนใจลองไปดาวน์โหลด Android NDK ได้จาก Android 1.5 NDK, r1 ไม่ใหญ่มากแค่เพียง 21 MB เท่านั้น
Source: ZDNet.com
บน ubuntu ต้องเปลี่ยน sh เป็น bash ก่อนติดตั้งครั้งแรก ไม่ประทับใจเมื่อแรกพบเลย – -'
ช้าไปมั้ยเนี่ย
มันมีทั้ง dalvik native c/c++ และ native c/c++ เลยหรอ งงรูปอ่ะ
Dalvik Native C/C++ คือตัว DVM นั่นแหละ ส่วนไอ่ฝั่งซ้ายคือส่วนที่เราเขียนเพิ่มขึ้นมาเองได้
ผมเพิ่งเริ่มศึกษา พบภาพที่พอจะทำความเข้าใจได้ง่ายขึ้นที่ http://www.tbray.org/ongoing/When/201x/2010/11/14/What-Android-Is
แต่ผมเองก็ยังไม่ได้ลอง ขอดูเรื่อง Android SDK ก่อนดีกว่า