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

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

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

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

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