native 방법의 사용

자바 방법 정의 에 있어 서 특별한 방법 이 있 습 니 다: native 방법.native 방법 에 있어 자바 프로그램 은 이 방법 에 실현 체 를 제공 하지 않 습 니 다.
        예 를 들 면:
               
                public class NativeTest{

                        public native void info();

                }

 
        이 방법 은 추상 적 인 방법 처럼 서명 하 는 방법 만 있 고 방법 체 는 없다.그러나 네 이 티 브 방법 은 보통 C 언어 를 통 해 이 루어 져 야 한다. 즉, C 언어 를 사용 하여 자바 방법 에 실현 해 야 한다.
        구체 적 인 실현 절 차 는 다음 과 같다.
                1. 자바 h 로 첫 번 째 생 성 된 class 파일 을 컴 파일 하면. h 파일 (C 언어 에서 헤더 파일) 이 생 성 됩 니 다.
                2.............................................................................................
                3. 두 번 째 부분 에 있 는. cpp 파일 을 동적 링크 라 이브 러 리 파일 로 변환 합 니 다.
                4. 자바 에서 System. loadlLibrary () 방법 이나 Runtime 의 loafLibrary () 방법 으로 세 번 째 동적 링크 라 이브 러 리 파일 을 불 러 오 면 자바 에서 이 native () 방법 을 호출 할 수 있 습 니 다.
       문제 가 발생 했 습 니 다. 세 번 째 부분 에서. cpp 파일 을 컴 파일 할 때 프로그램 을 현재 컴 파일 환경 에 의존 하 게 됩 니 다.
           
    public class SleepTest

               {

                    public staic void main ( String [] args)

                     {

                           long start = System.currentTimeMillis();

                           Thread.sleep(2);

                           System.out.println(System.currentTimeMillis()-start);

                      }

               }

 
        답 은 2 가 아니다.JDK 문 서 를 자세히 살 펴 보면 Thread. sleep () 방법 에 대한 소 개 를 보면 sleep () 방법 도 native 방법 이라는 것 을 알 수 있 습 니 다. 이 방법의 구체 적 인 실현 은 그 가 있 는 플랫폼 에 의존 해 야 합 니 다.네 이 티 브 방법 으로 는 크로스 플랫폼 을 만 들 수 없다 는 것 이다.
        따라서 자 바 는 크로스 플랫폼 이지 만 JDK 에는 네 이 티 브 방법 이 많 기 때문에 이런 방법 을 사용 할 때 플랫폼 의 차이 점 에 주의 하 세 요.

좋은 웹페이지 즐겨찾기