C2JNI: An Embedded C to JNI Translator

C2JNI: 내장 C 언어에서 JNI 코드를 생성하는 변환기

  • Published : 2004.11.01

Abstract

Java, a platform independent object-oriented programming language, is widely used, however it should be integrated with JNI to use system services or to reuse legacy systems. Though JNI provides the standard APIs which allow Java to be combined with C/$C^{++}$, it is very hard and cumbersome for developers to use JNI APIs. In order to address this problem, we introduce a translator named C2JNI, which converts the embedded C program into a JNI compatible C program. With C2JNI, developers can Integrate Java and C programs without JNI APIs, and it will reduce the complexity caused by JNI APIs.

자바는 플랫폼에 독립적인 객체지향 프로그래밍 언어로서 널리 사용되고 있지만, 플랫폼에 의존적인 기능을 사용해야 하거나 흑은 유산 시스템(legacy system)을 재사용하기 위해서는 JNI를 이용해야 한다. JNI는 자바가 C/C++ 언어와 결합하기 위한 표준화된 규칙과 API를 제공하지만, 개발자가 JNI를 이용해서 프로그램을 개발하는 것은 매우 복잡하고, 번거롭다는 단점이 있다. 이러한 문제를 해결하기 위해서 본 논문에서는 자바 프로그램에 내장된 C 프로그램 코드를 자동적으로 JNI 명세에 맞는 C 언어로 변환할 수 있는 C2JNI라는 변환기를 소개한다. C2JNI를 사용하는 경우에 내장된 C 언어 프로그램은 JNI API를 사용하지 않고서도 C 언어와 자바 프로그램을 결합할 수 있기 때문에 개발자는 자바와 C 언어에 대한 지식만 있으면, 자바와 C 언어를 결합해서 사용할 수 있다.

Keywords

References

  1. Sheng Liang, Java Native Interface: Programmer's Guide and Specification, Addison-Wesley, 1999
  2. Per Bothner and Tom Tromey, 'Java/C++ integration: Writing native Java methods in natural C++', available at http://www.bothner.com/${\sim}per$/papers/UsenixJVM01/CNI01.pdf
  3. Sava Mintchev and Vladimir Getov. 'Automatic Binding of Native Scientific Libraries to Java,' In Scientific Computing in Object-Oriented Parallel Environments, LNCS 1343, Springer-Verlag, pp. 129-136, 1997
  4. Vlasimir Getov, Paul Gray, Sava Mintchev, and Vaidy Sunderam, 'Multi-Language Programming Environments for High Performance Java Computing,' In Scientific Programming, Vol. 7, No.2, pp. 139-146, 1999 https://doi.org/10.1155/1999/975837
  5. Yan Huang, Ian Taylor, David W. Walker, and Robert Davies, 'Wrapping Legacy Codes for Grid-Based Applications,' In Proc. of IPDPS, pp, 139-145, 2003 https://doi.org/10.1109/IPDPS.2003.1213268
  6. David M. Beazley, 'SWIG : An Easy to Use Tool for Integrating Scripting Languages with C and C++,' In Proc. of USENIX Tcl/Tk Workshop, 1996, available at http://www.swig.org/
  7. JavaCC Grammar Repository, available at http://www.cobase.cs.ucla.edu/pub/javacc/
  8. 최종명, Argos: 플러그인 지향 프로그래밍 언어, 박사학위 논문, 숭실대학교 컴퓨터학과, 2003
  9. Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman, Compilers Principles, Techniques, and Tools, Addison-Wesley, 1986
  10. GNU Compiler Collection, available at http://gcc.gnu.org/
  11. The GNU Compiler for the Java Programming Language, available at http://gcc.gnu.org/java/
  12. JavaCC-The Java Parser Generator, available at https://javacc.dev.java.net/
  13. Halstead and Maurice H., Elements of Software Science, Elsevier North-Holland, New York, 1977