Abstract— Java has been making its way into the embedded
systems and mobile devices like Android. The Java platform
specifies the Java Native Interface (JNI) which allows Java code
that runs within a JVM to interoperate with applications or
libraries that are written in other languages and compiled to the
host CPU. JNI plays an important role in embedded system as it
provides a mechanism to interact with libraries specific to the
platform and to take the advantage of fast execution of native
programs. To address the overhead incurred in the JNI due to
reflection and serialization, this paper proposes to cache class,
field, and method information obtained from reflection for
subsequent usage. It also provides a function to pin objects to
their memory locations such that they can be accesses through
the known reference. The Android emulator is used to evaluate
the performance of these techniques and we observed that there
was 10- 30 % performance gain in the Java Native Interface for
two Android applications.
I. INTRODUCTION
With the introduction of JavaME (Micro Edition) by Sun
Micro System for mobile and embedded devices, Java has
applied widely to embedded systems and mobile devices. A
notable application is the Android phone platform on which
mobile computing applications are developed in Java and run
on Dalvik virtual machine [1][2]. The applications like contact,
email, browser settings, Bluetooth etc., come with the Android
package. Additional applications can be acquired through
Android Market [3] and installed in individual phones.
While the Java applications on Android platform are
portable across various phone devices, there are several issues
to be considered for this approach:
• Standard Java libraries do not support hardware-platform
specific features that are needed by the applications,
including user interface and graphic rendering.
• The developers may want to use libraries written in
different languages because of the fact that these libraries
are more efficient than their Java counterparts.
The second issue has a profound impact to the user
experience not only in fast response time of application
operations, but also in energy consumption and battery life.
To address these issues, JNI (Java Native Interface) has
been specified and applied to integrate native code and Java
program in a single application [4][5]. It has played a major
role in developing application which needs to interact with
native code (C/C++). Android uses JNI in its NDK (Native
Development Kit) [6], which is a toolset that helps developers
to interact with native code components in their applications.
The NDK includes tools and builds files that can be used to
generate native code libraries from C and C++ sources, and to
embed native libraries into an application package file. Thus,
with NDK, libraries can be developed to build activity, handle
user inputs, manage hardware sensors, and invoke platform
specific operations by calling the drivers of the underlined
Linux system.
As more and more features and applications are being
added to the mobile devices, there is a need for an efficient JNI.
As illustrated in [7][8], the overhead incurred while making
JNI calls can be costly during the data transfer between the
JVM address space and the native address space. While it is
claimed in [7] that using the JNI with the native code is faster
than using Dalvik virtual machine, the communication delay in
JNI is not negligible, e.g., it takes 0.15 micro-second to pass a
บทคัดย่อโดย Java ได้ถูกทำทางเป็นที่ฝังตัว
ระบบและอุปกรณ์มือถือเช่น Android แพลตฟอร์ม Java
ระบุ Java ภาษาอินเทอร์เฟซ (JNI) ซึ่งช่วยให้รหัส Java
ที่รันภายใน JVM จะสามารถทำงานร่วมกับโปรแกรมประยุกต์ หรือ
ไลบรารีที่ถูกเขียนในภาษาอื่น และคอมไพล์
เจ้า CPU JNI มีบทบาทสำคัญในระบบฝังตัวตาม
มีกลไกให้สามารถโต้ตอบกับไลบรารีเฉพาะ
แพลตฟอร์มและ การใช้ประโยชน์จากการดำเนินการอย่างรวดเร็วของเจ้า
โปรแกรม ที่อยู่เหนือศีรษะที่เกิดขึ้นใน JNI เนื่อง
สะท้อนและอนุกรม กระดาษนี้เสนอแคคลาส,
ฟิลด์ และวิธีการข้อมูลที่ได้จากการสะท้อนใน
ต่อมาใช้ มันยังมีฟังก์ชันเพื่อวัตถุขา
ตำแหน่งหน่วยความจำเช่นที่พวกเขาสามารถเข้าถึงผ่าน
ทราบอ้างอิง ใช้ตัว Android emulator เพื่อประเมิน
ประสิทธิภาพของเทคนิคเหล่านี้ และเราสังเกตที่มี
ได้ 10-30% ทำในอินเทอร์เฟซภาษาจาวาสำหรับ
สองแอพพลิเคชัน Android
แนะนำ I.
ด้วยการแนะนำ JavaME (Micro Edition) โดยดวงอาทิตย์
ระบบ Micro สำหรับอุปกรณ์ฝังตัว และโทรศัพท์มือถือ มีจาวา
ใช้อย่างกว้างขวางกับระบบฝังตัวและอุปกรณ์โมบาย A
แอพลิเคชันที่โดดเด่นเป็นแพลตฟอร์มโทรศัพท์ Android ที่
ภาษาคอมพิวเตอร์ถูกพัฒนาใน Java และรัน
บน Dalvik เครื่องเสมือน [1] [2] โปรแกรมประยุกต์ต้องติดต่อ,
อีเมล์ การตั้งค่าเบราว์เซอร์ บลูทูธฯลฯ มาพร้อมกับ Android
แพคเกจ สามารถรับงานเพิ่มเติมผ่าน
ตลาด android [3] และโทรศัพท์ติดตั้งในแต่ละ
ขณะแอปพลิเคชัน Java บนแพลตฟอร์ม Android
แบบพกพาผ่านอุปกรณ์โทรศัพท์ต่าง ๆ มีปัญหาหลาย
เพื่อพิจารณาวิธีการนี้:
•จาวามาตรฐานไลบรารีสนับสนุนฮาร์ดแวร์แพลตฟอร์ม
คุณลักษณะเฉพาะที่จำเป็น โดยโปรแกรมประยุกต์,
รวมถึงส่วนติดต่อผู้ใช้และแสดงผลกราฟิก
•นักพัฒนาอาจต้องการใช้ไลบรารีที่เขียน
ภาษาแตกต่างกันเนื่องจากความจริงที่ไลบรารีเหล่านี้
จะมีประสิทธิภาพมากกว่าคู่ของ Java
ปัญหาที่สองมีผลกระทบอย่างลึกซึ้งผู้ใช้
ไม่เพียงในเวลาตอบสนองรวดเร็วของแอพลิเคชัน
การดำเนินการ แต่ในชีวิตแบตเตอรี่และปริมาณการใช้พลังงาน
เพื่อแก้ไขปัญหาเหล่านี้ มี JNI (Java อินเทอร์เฟซภาษา)
การระบุ และใช้เพื่อรวมเป็นรหัสและ Java
โปรแกรมในโปรแกรมประยุกต์เดียว [4] [5] จะได้เล่นเป็นหลัก
บทบาทในการพัฒนาโปรแกรมประยุกต์ที่จำเป็นต้องโต้ตอบกับ
รหัสภาษา (C/C) แอนดรอยด์ใช้ JNI NDK ของ (แม่
Development Kit) [6], ซึ่งเป็นงานที่ช่วยพัฒนา
เพื่อโต้ตอบกับคอมโพเนนต์ดั้งเดิมรหัสในโปรแกรมประยุกต์ของตน
NDK มีเครื่องมือ และสร้างไฟล์ที่สามารถใช้
สร้างไลบรารีภาษา C และ C แหล่ง และ
ฝังเป็นไลบรารีลงในแฟ้มแพคเกจสมัคร ดังนั้น,
กับ NDK ไลบรารีสามารถพัฒนาเพื่อสร้างกิจกรรม จัดการ
ผู้ใช้อินพุต จัดการเซ็นเซอร์ฮาร์ดแวร์ และเรียกใช้แพลตฟอร์
เฉพาะการดำเนินงาน โดยการเรียกโปรแกรมควบคุมของการขีดเส้นใต้
ระบบ Linux ได้
คุณลักษณะและการใช้งานมาก ขึ้นการ
เพิ่มอุปกรณ์มือถือ มีความจำเป็นสำหรับ JNI มีประสิทธิภาพ
ดังที่แสดงใน [7] [8], โสหุ้ยการผลิตเกิดขึ้นขณะทำ
เรียก JNI สามารถค่าใช้จ่ายในการโอนย้ายข้อมูลระหว่าง
JVM พื้นที่และพื้นที่ที่อยู่ดั้งเดิมได้ ในขณะที่
อ้างใน [7] ที่ ใช้ JNI ที่ มีรหัสภาษาได้เร็ว
ใช้ Dalvik เครื่องเสมือน การสื่อสารความล่าช้าใน
JNI ไม่ระยะ เช่น ใช้ 0.15 ไมโครวินาทีจะผ่านการ
การแปล กรุณารอสักครู่..
นามธรรม - Java ได้รับการหาทางลงฝังตัว
ระบบและอุปกรณ์มือถืออย่าง Android จาวาแพลตฟอร์ม
กำหนดอินเตอร์เฟซพื้นเมือง ( jni ) ซึ่งช่วยให้ Java รหัส
ที่วิ่งไปใน JVM เพื่อระบบที่มีการใช้งานหรือ
ห้องสมุดที่เขียนในภาษาอื่น ๆและรวบรวม
เจ้าภาพซีพียู jni มีบทบาทสำคัญในระบบสมองกลฝังตัวเป็น
มีกลไกที่จะโต้ตอบกับห้องสมุดเฉพาะ
แพลตฟอร์มและการใช้ประโยชน์จากการดำเนินการอย่างรวดเร็วของโปรแกรมพื้นเมือง
ที่อยู่ ค่าใช้จ่ายที่เกิดขึ้นในการ jni เนื่องจาก
การสะท้อนและการทำให้เป็นอนุกรม กระดาษนี้นำเสนอแคเรียน
สนาม , และวิธีการที่ข้อมูลที่ได้รับจากการสะท้อนสำหรับ
การใช้งานในภายหลัง นอกจากนี้ยังมีฟังก์ชันวัตถุ
พินตำแหน่งหน่วยความจำของพวกเขาเช่นที่พวกเขาสามารถเข้าถึงผ่าน
รู้จักอ้างอิง Android Emulator ที่ใช้ประเมินประสิทธิภาพของเทคนิคเหล่านี้และ
คือเราพบว่ามี 10 - 30 % สามารถเพิ่มสมรรถนะในพื้นเมือง
2 Android อินเตอร์เฟซสำหรับการใช้งาน
ผมแนะนำด้วยการ javame ( รุ่น Micro ) โดย Sun
ระบบไมโครสำหรับอุปกรณ์มือถือและฝังตัวJava มี
ใช้กันอย่างแพร่หลายในระบบฝังตัวและอุปกรณ์มือถือ โปรแกรม
เด่นเป็นแพลตฟอร์มโทรศัพท์ Android ที่พัฒนาโปรแกรมคอมพิวเตอร์มือถือ
ใน Java และรันบน Dalvik Virtual Machine [ 1 ] [ 2 ] การใช้งานเหมือนติดต่อ
อีเมล , เบราว์เซอร์การตั้งค่าบลูทูธ ฯลฯ มากับแพคเกจ Android
ข้อมูลเพิ่มเติมสามารถได้รับผ่าน
ตลาด Android [ 3 ] และติดตั้งในโทรศัพท์ของแต่ละบุคคล
ในขณะที่ Java โปรแกรมประยุกต์บนแพลตฟอร์ม Android เป็นแบบพกพาผ่านอุปกรณ์โทรศัพท์ต่างๆ
มีหลายประเด็นพิจารณาวิธีนี้ :
- มาตรฐาน Java ห้องสมุดไม่สนับสนุนฮาร์ดแวร์แพลตฟอร์มคุณสมบัติที่จำเป็นโดยเฉพาะ
รวมถึงโปรแกรมประยุกต์ ส่วนติดต่อผู้ใช้และกราฟิกแสดง
- นักพัฒนาอาจจะต้องการใช้ห้องสมุดที่เขียนในภาษาที่แตกต่างกัน เพราะความจริง
ที่ห้องสมุดเหล่านี้จะมีประสิทธิภาพมากขึ้นกว่า counterparts Java ของ
2 เรื่องที่มีผลกระทบอย่างยิ่งต่อผู้ใช้
ประสบการณ์ไม่เพียง แต่ในเวลาการตอบสนองอย่างรวดเร็วของการประยุกต์ใช้
, แต่ยัง ในการใช้พลังงานและแบตเตอรี่
เพื่อแก้ไขปัญหาเหล่านี้ให้ jni ( อินเตอร์เฟซพื้นเมือง
) ได้การระบุและการประยุกต์ใช้การรวมรหัสพื้นเมืองและโปรแกรม Java
ในโปรแกรมเดียว [ 4 ] [ 5 ] มันมีบทบาทสำคัญในการพัฒนาโปรแกรมที่ต้องการ
เพื่อโต้ตอบกับรหัสพื้นเมือง ( C / C ) Android ใช้ jni ใน ndk ( ชุดพัฒนาพื้นเมือง
) [ 6 ] ซึ่งเป็นชุดเครื่องมือที่ช่วยให้นักพัฒนา
เพื่อโต้ตอบกับรหัสพื้นเมืองส่วนประกอบในการใช้งานของพวกเขา
การ ndk รวมถึงเครื่องมือและสร้างไฟล์ที่สามารถใช้ในการสร้างห้องสมุด
รหัสพื้นเมืองจาก C และ C แหล่งที่มาและห้องสมุดพื้นเมือง
ฝังเป็นโปรแกรมแพคเกจแฟ้ม ดังนั้น
กับ ndk , ห้องสมุดสามารถพัฒนาเพื่อสร้างกิจกรรม จัดการ
กระผมผู้ใช้จัดการเซ็นเซอร์ฮาร์ดแวร์และแพลตฟอร์มการเรียก
โดยเฉพาะเรียกไดรเวอร์ของขีดเส้นใต้
Linux ระบบ
เป็นคุณสมบัติที่เพิ่มเติม และเพิ่มเติม และโปรแกรมจะถูก
เพิ่มไปยังอุปกรณ์มือถือ มีความต้องการให้ jni อย่างมีประสิทธิภาพ
เป็นภาพประกอบใน [ 7 ] [ 8 ] , ค่าใช้จ่ายที่เกิดขึ้นในขณะที่ทำ
jni เรียกสามารถค่าใช้จ่ายในการถ่ายโอนข้อมูลระหว่าง
JVM ที่อยู่พื้นที่ และพื้นที่ที่อยู่พื้นเมือง ในขณะที่มัน
อ้างใน [ 7 ] ที่ใช้ jni กับรหัสพื้นเมืองเร็ว
มากกว่าการใช้ Dalvik Virtual Machine , การสื่อสารที่ล่าช้า
jni ไม่ใช่กระจอก เช่นใช้เวลา 0.15 วินาทีผ่านไมโคร
การแปล กรุณารอสักครู่..