News

กูเกิ้ลปล่อย Android NDK (Native Development Kit)

เจ้าหุ่นเขียวแอนดรอยด์มีข้อดีอย่างหนึ่งสำหรับ Developer คือเขียนโปรแกรมง่ายมากด้วยภาษาจาวาที่หลายคนคุ้นเคย แต่มันก็มีข้อเสียอยู่ในข้อดีนั้นด้วยคือเราไม่สามารถเขียนโปรแกรมที่ดึงพลัง CPU ออกมาใช้อย่างเต็มที่ได้เช่น Real Time Image Processing

ทางกูเกิ้ลเห็นปัญหาตรงนี้เลยปล่อย Android NDK (Native Development Kit) ออกมาเพื่อให้นักพัฒนาสามารถเขียนโปรแกรมลงบนแอนดรอยด์ด้วยภาษา C/C++ ได้

แต่ทั้งนี้ เราไม่สามารถเขียนโปรแกรมด้วยภาษา C/C++ ทั้งหมดได้ เพราะโปรแกรมจะยังทำงานบน Dalvik VM อยู่เหมือนเดิม เพียงแต่ว่าเราสามารถเขียนตัวเชื่อมระหว่างภาษาจาวากับภาษา C/C++ ผ่านทาง JNI ได้ดังรูป

เจ้าหุ่นเขียวแอนดรอยด์มีข้อดีอย่างหนึ่งสำหรับ 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

5 Comments

  1. mossila

    mossila Post on June 27, 2009 at 12:13 am

    #1862

    บน ubuntu ต้องเปลี่ยน sh เป็น bash ก่อนติดตั้งครั้งแรก ไม่ประทับใจเมื่อแรกพบเลย – -'

  2. kanatorn

    kanatorn Post on June 27, 2009 at 8:04 am

    #1870

    ช้าไปมั้ยเนี่ย

  3. mossila

    mossila Post on June 30, 2009 at 9:16 pm

    #1920

    มันมีทั้ง dalvik native c/c++ และ native c/c++ เลยหรอ งงรูปอ่ะ

    • nuuneoi Post on June 30, 2009 at 9:55 pm

      #1921

      Dalvik Native C/C++ คือตัว DVM นั่นแหละ ส่วนไอ่ฝั่งซ้ายคือส่วนที่เราเขียนเพิ่มขึ้นมาเองได้

  4. maddog Post on March 22, 2011 at 9:27 am

    #110273

    ผมเพิ่งเริ่มศึกษา พบภาพที่พอจะทำความเข้าใจได้ง่ายขึ้นที่ http://www.tbray.org/ongoing/When/201x/2010/11/14/What-Android-Is

    แต่ผมเองก็ยังไม่ได้ลอง ขอดูเรื่อง Android SDK ก่อนดีกว่า

Leave a Reply

To Top