วันพฤหัสบดีที่ 9 ธันวาคม พ.ศ. 2553

อะไรคือ JNI

JNI (Java Native Interface) คือ วิธีการในจาวาที่ทำให้เราสามารถเรียกใช้งาน native code (ส่วนของโปรแกรมที่เขียนขึ้นโดยใช้ภาษา C หรือ C++) จากโปรแกรมจาวาที่เราเขียนขึ้นได้ หรือในทางกลับกันก็ได้ คือเรียกใช้ส่วนของโปรแกรมที่เขียนขึ้นด้วยภาษาจาวาจากโปรแกรมที่เขียนขึ้นด้วยภาษา C หรือ C++
จะเห็นว่า JNI จะเป็น interface แบบสองทางที่ทำให้ส่วนของโปรแกรมจาวาและส่วนของโปรแกรมที่เขียนด้วย C หรือ C++ ทำงานร่วมกันได้ภายใต้ process เดียวกัน (ทำงานแบบเป็นโปรแกรมเดียวกัน ไม่ใช่เป็นแบบสองโปรแกรมทำงานร่วมกัน)
เรามักใช้ JNI ในกรณีที่
  • เราต้องการใช้งาน native code หรือ library บางอย่างที่มีอยู่แล้ว ซึ่ง native code เหล่านี้เขียนขึ้นโดยใช้ภาษา C หรือ C++ 
  • เราต้องการทำงานบางอย่างที่ต้องการการประมวลผลอย่างรวดเร็ว ทั้งนี้เพราะ native code สามารถทำงานได้เร็วกว่าจาวา code
  • เราต้องการใช้งาน feature บางอย่างที่ไม่มีบน Java Platform แต่มีบน platform ที่เรารันโปรแกรมจาวาอยู่ อย่างเช่น ถ้าเราต้องการให้เพิ่มโปรแกรมจาวาของเราเข้าไปใน system tray ของ Windows (J2SE 6 ทำได้แล้ว) หรือ ต้องการรู้อุณหภูมิของ CPU และความเร็วของพัดลม CPU ของเครื่อง PC ที่ใช้ Windows เป็นต้น

แต่ JNI ก็ทำให้โปรแกรมจาวาที่เราเขียนมีข้อจำกัดเหมือนกัน โปรแกรมจาวาที่มีการใช้งาน JNI จะไม่สามารถทำงานบน platform อื่นได้ จะทำงานเฉพาะบน platform ที่ native code นั้นสามารถทำงานได้เท่านั้น อย่างเช่น ถ้าเราเขียนโปรแกรมจาวาที่มีการใช้งาน native code (.dll) บน Windows โปรแกรมจาวาที่เราเขียนก็จะทำงานได้เฉพาะบน Windows เท่านั้น นอกจากนี้ถ้ามีข้อผิดพลาดเกิดขึ้นในส่วน native code มักจะทำให้ Java VM crash ซึ่งมีผลทำให้โปรแกรมเรา

ไม่มีความคิดเห็น:

แสดงความคิดเห็น