Skip to main content

ชุดพัฒนาพื้นเมืองคืออะไร?

ในการเขียนโปรแกรมคอมพิวเตอร์และการพัฒนาซอฟต์แวร์ชุดพัฒนาดั้งเดิม (NDK) มักจะเป็นอินเทอร์เฟซการเขียนโปรแกรมนามธรรม (API) ที่ให้นักพัฒนามีความสามารถในการใช้ฟังก์ชั่นหรือเรียกใช้รหัสโดยตรงผ่านระบบปฏิบัติการหลักวิธีการดำเนินการโปรแกรมนี้แตกต่างอย่างชัดเจนจากการเรียกใช้รหัสที่มีการจัดการหรือโปรแกรมที่ตีความซึ่งรหัสที่เขียนถูกดำเนินการโดยเครื่องเสมือนหรือล่ามที่ทำหน้าที่เป็นเลเยอร์ซอฟต์แวร์ระหว่างฟังก์ชั่นระบบปฏิบัติการหลักและรหัสที่เขียนโดยผู้ใช้.การใช้ชุดพัฒนาแบบดั้งเดิมอาจเป็นสิ่งจำเป็นในแอปพลิเคชันที่ต้องใช้เวลาดำเนินการและการประมวลผลที่เร็วที่สุดเท่าที่จะเป็นไปได้เนื่องจากสามารถให้การเข้าถึงโดยตรงไปยังฮาร์ดแวร์และไลบรารีที่ระบบปฏิบัติการใช้ขึ้นอยู่กับประเภทของโปรแกรมที่เขียนและระบบปฏิบัติการเป้าหมายการใช้ชุดพัฒนาดั้งเดิมอาจไม่เพิ่มความเร็วของโปรแกรมเลยและสามารถสร้างรหัสที่ยากต่อการบำรุงรักษาอ่านและพอร์ตไปยังระบบอื่น ๆ

แอปพลิเคชันที่ถูกเขียนขึ้นสำหรับอุปกรณ์บางอย่างเช่นสมาร์ทโฟนหรือใช้ภาษาคอมพิวเตอร์ที่ตีความไม่ได้ดำเนินการโดยตรงโดยกระบวนการระบบปฏิบัติการหลักหรือเคอร์เนลแต่รหัสโปรแกรมจะดำเนินการโดยโปรแกรมแยกต่างหากที่เรียกว่าเครื่องเสมือน (VM) หรือล่ามเครื่องเสมือนอ่านรหัสขยายและแก้ไขคำสั่งและอินเทอร์เฟซด้วยเคอร์เนลเพื่อเรียกใช้งานรหัสสิ่งนี้อาจเป็นประโยชน์สำหรับนักพัฒนาบางคนเนื่องจากมีเลเยอร์ที่เป็นนามธรรมสำหรับการพกพาและออกจากรายละเอียดที่ซับซ้อนมากมายเช่นการจัดการทรัพยากรและการจัดการไฟล์ให้กับผู้สร้างเครื่องเสมือนจริง

ในบางกรณีอย่างไรก็ตามเสมือนจริงเครื่องอาจเป็นอุปสรรคต่อโปรแกรมบางประเภทVM สามารถดำเนินการช้าลงหรือไม่สามารถเข้าถึงฟังก์ชั่นบางอย่างภายในเคอร์เนลโฮสต์ชุดพัฒนาดั้งเดิมสำหรับระบบปฏิบัติการเป้าหมายหรืออุปกรณ์จะเปิดเผยฟังก์ชั่นของเคอร์เนลไปยังแอปพลิเคชันที่เขียนขึ้นอยู่กับขอบเขตของชุดสิ่งนี้สามารถอนุญาตให้โปรแกรมเข้าถึงฮาร์ดแวร์โดยตรงโหลดไลบรารีที่กำหนดเองของตัวเองลงในเคอร์เนลหรือใช้การปรับให้เหมาะสมเฉพาะระบบ

ชุดพัฒนาดั้งเดิมมักใช้สำหรับส่วนที่สำคัญของโปรแกรมสิ่งเหล่านี้อาจเป็นการคำนวณการประมวลผลกราฟิกเอาต์พุตไปยังการแสดงผลหรืออินพุตและเอาต์พุตไม่ใช่ทุกโปรแกรมที่ใช้ฟังก์ชั่นเนทีฟหรือรูทีนจะเห็นประโยชน์ความเร็วเนื่องจากเครื่องเสมือนอาจทำการปรับให้เหมาะสมกับรหัสที่ได้รับการจัดการดังนั้นรหัสเครื่องที่ได้นั้นจะเหมือนกันโดยไม่คำนึงว่าจะใช้ฟังก์ชั่นดั้งเดิมหรือไม่นอกจากนี้โค้ดเนทีฟเชื่อมโยงโปรแกรมกับการใช้งานระบบปฏิบัติการเฉพาะและบางครั้งก็เป็นเวอร์ชันเฉพาะของอุปกรณ์ซึ่งหมายความว่ารหัสที่ใช้ชุดพัฒนาดั้งเดิมอาจไม่สามารถส่งผ่านระบบอื่นได้อย่างง่ายดาย