Hello, GCJ World!

Posted on 3月 25th, 2013 by cx20

GCJ

GCJ は GNU Compiler for the Java の略で、GCC に含まれるコンパイラの1つである。
Java のライブラリが使用できるほか、CNI(Compiled Native Interface)を用いることで、C++ で作成したライブラリを呼び出すことが可能となっている。

ソースコード(Java)

public class Hello {
    public static native void printf( String format );
 
    public static void main( String[] args ) {
        printf( "Hello, GCJ World!n" );
    }
}

クラスファイル作成

C:¥> gcj -C Hello.java

C++ ヘッダファイル作成

C:¥> gcjh Hello.class

ソースコード(C++ ヘッダファイル)

 
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
 
#ifndef __Hello__
#define __Hello__
 
#pragma interface
 
#include <java/lang/Object.h>
#include <gcj/array.h>
 
extern "Java"
{
    class Hello;
}
 
class Hello : public ::java::lang::Object
{
 
public:
  Hello();
  static void printf(::java::lang::String *);
  static void main(JArray< ::java::lang::String * > *);
  static ::java::lang::Class class$;
};
 
#endif // __Hello__

ソースコード(C++ 実装ファイル)

#include <stdio.h>
#include <java/lang/String.h>
#include "Hello.h"
 
void ::Hello::printf(::java::lang::String* format )
{
    int len = format->length();
    for ( int i = 0; i < len; i++ )
    {
        ::printf( "%c", format->charAt(i) );
    }
}

コンパイル方法

C:¥> gcj -c Hello.cpp
C:¥> gcj --main=Hello -o Hello Hello.o Hello.class

実行結果

Hello, GCJ World!

Tags:

Categories: CNI, GCJ, Java

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

WP-SpamFree by Pole Position Marketing