TY - JOUR
T1 - Exception analysis in the Java Native Interface
AU - Li, Siliang
AU - Tan, Gang
PY - 2014/9/1
Y1 - 2014/9/1
N2 - A Foreign Function Interface (FFI) allows one host programming language to interoperate with another foreign language. It enables efficient software development by permitting developers to assemble components in different languages. One typical FFI is the Java Native Interface (JNI), through which Java programs can invoke native-code components developed in C, C++, or assembly code. Although FFIs bring convenience to software development, interface code developed in FFIs is often error prone because of the lack of safety and security enforcement. This paper introduces a static-analysis framework, TurboJet, which finds exception-related bugs in JNI applications. It finds bugs of inconsistent exception declarations and bugs of mishandling JNI exceptions. TurboJet is carefully engineered to achieve both high efficiency and accuracy. We have applied TurboJet on a set of benchmark programs and identified many errors. We have also implemented a practical Eclipse plug-in based on TurboJet that can be used by JNI programmers to find errors in their code.
AB - A Foreign Function Interface (FFI) allows one host programming language to interoperate with another foreign language. It enables efficient software development by permitting developers to assemble components in different languages. One typical FFI is the Java Native Interface (JNI), through which Java programs can invoke native-code components developed in C, C++, or assembly code. Although FFIs bring convenience to software development, interface code developed in FFIs is often error prone because of the lack of safety and security enforcement. This paper introduces a static-analysis framework, TurboJet, which finds exception-related bugs in JNI applications. It finds bugs of inconsistent exception declarations and bugs of mishandling JNI exceptions. TurboJet is carefully engineered to achieve both high efficiency and accuracy. We have applied TurboJet on a set of benchmark programs and identified many errors. We have also implemented a practical Eclipse plug-in based on TurboJet that can be used by JNI programmers to find errors in their code.
UR - http://www.scopus.com/inward/record.url?scp=84900317130&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84900317130&partnerID=8YFLogxK
U2 - 10.1016/j.scico.2014.01.018
DO - 10.1016/j.scico.2014.01.018
M3 - Article
AN - SCOPUS:84900317130
SN - 0167-6423
VL - 89
SP - 273
EP - 297
JO - Science of Computer Programming
JF - Science of Computer Programming
IS - PART C
ER -