BLOG ARTICLE Java 궁금하니? | 2 ARTICLE FOUND

  1. 2008.02.27 JNI] HelloWorld(자바에서 C함수 호출)
  2. 2008.02.27 [Java/자바 기초] java 소스 컴파일하고, class 실행하기

출처: http://cafe.naver.com/teamdaydream.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=222


1. 일단 자바 소스를 만듭니다.

2. 그리고 컴파일합니다.[ javac HelloWorld.java ]

3. C에서 사용하기 위한 헤더 파일을 얻습니다. [ javah -jni HelloWorld ]

4. 헤더 파일을 기준으로 C코드를 작성합니다.

5. C 파일을 컴파일 합니다.

   cl -I"C:\Program Files\Java\jdk1.6.0\include" -I"C:\Program Files\Java\jdk1.6.0\include\win32" -MD -LD HelloWorld.c

   (따옴표는 'Program Files' 사이의 공백을 포함한 한 문자열임을 나타내기 위해서 집어넣은 것입니다.)

6. 자바 프로그램을 실행합니다. [ java HelloWorld ]




HelloWorld.java


public class HelloWorld

{

   public native void print(String msg);
      static

      {
          System.loadLibrary("HelloWorld");
      }

 

   public static void main(String args[])

   {

       new HelloWorld().print(args[0]);
   }
}





HelloWorld.h


/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    print
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL
Java_HelloWorld_print
  (JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif




HelloWorld.c


//#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj, jstring msg)

{

   jboolean iscopy;
   char *message=(*env)->GetStringUTFChars(env,msg,&iscopy);
   printf("Hello JNI World~~~%s\n",message);
   return;
}




실행 결과


> java HelloWorld HelloWorld

Hello JNI World~~~realwolf






결과를 보면 짐작하시겠지만 자바에서 C로 작성된 함수를 실행하는 예제입니다.

아직 구체적으로 배운 건 없지만 하드웨어 제어에 사용하면 좋을 듯 합니다.

실제 하드웨어를 제어하는 코드를 C로 작성하고 인터페이스는 Java로 제공하는 것이지요.


나중에 기회가 되서 J2ME를 배우게 된다면 뭔가 알 수 있지 않을까하고 막연히 생각만 해봅니다;;

AND

출처 : http://mwultong.blogspot.com/2006/09/java-hello-world.html

참고로, 자바와 자바스크립트는 전혀 다른 언어입니다. 여기서는 자바에 대해서 설명합니다. (▶▶ 자바(Java)와 자바스크립트(JavaScript)의, 다른 점 차이점 참조)


순서 1: 자바 컴파일러 설치


* 우선, 자바 컴파일러가 들어 있는 JDK를 다운받아서 설치해야 합니다. 무료입니다: ▶▶ [Java] 자바 런타임과 JDK(개발도구; 컴파일러) 파일 다운로드하는 곳은? / 자바의 종류는? [QnA]

* 자바 컴파일러인 javac.exe 가 실행되도록 패스를 수정해 주어야 합니다: ▶▶ [자바] javac (자바 컴파일러; javac.exe) 실행법; 패스 추가



순서 2: 확장자를 보이게 윈도우를 설정하기


윈도우에서는 기본적으로, 파일의 확장자를 보여주지 않는데, 자바 프로그래밍을 할 때 확장자가 보이지 않으면 곤란합니다. 따라서 윈도 탐색기 (Windows Explorer) 등에서 확장자가 보이도록 조정해 주어야 합니다: ▶▶ '확장자'란? 파일의 확장자를 보이게 하자 [컴퓨터 초보자를 위한 강좌]




순서 3: 자바 소스 컴파일하기


자바 소스 파일의 확장자는 .java 입니다.

다음은, 테스트 라는 문자열을 화면에 출력하는 간단한 예제입니다.

테스트용으로 쓸, 자바 예제: Foo.java
public class Foo {
  public static void main(String args[]) {
    System.out.println("테스트");
  }
}

위의 코드 박스의 내용을 Foo.java 라는 파일로 하드에 저장합니다. 자바는 대소문자를 엄격히 구분합니다. 리눅스는 물론이고 윈도우에서도 마찬가지입니다.
클래스 이름이 "class Foo"라고 되어 있기에 소스 파일명도 Foo.java 로 되어야 합니다.

이제 도스창(명령 프롬프트)에서,

javac Foo.java

라고 입력하고 Enter키를 칩니다. 반드시 .java 라는 확장자까지 붙여 주어야 합니다. 그렇지 않으면 "javac: invalid flag: Foo ..." 라는 에러가 납니다.

컴파일에는 1~5초 정도의 시간이 걸립니다.

정상적으로 컴파일이 되었다면 화면에 아무 메시지도 나오지 않습니다. 무소식이 희소식입니다. 이제 하드에 Foo.class 라는 파일이 생성되었을 것입니다.



순서 4: 자바 프로그램 실행하기


이제 Foo.class 라는 파일을 실행해야 합니다. 자바 프로그램을 실행하기 위해서는 java 라는 명령어가 사용됩니다.

java Foo 라고 해주면 실행됩니다.

주의! 지금은 확장자를 붙이면 안됩니다. 그러면 "Exception in thread "main" java.lang.NoClassDefFoundError: Foo/class" 이런 에러가 나게 됩니다. 그냥 Foo 라고만 붙여줍니다.

실행 결과:
D:\Z>java Foo
테스트

D:\Z>


"테스트"라는 문자열이 성공적으로 출력되었습니다.


AND