2009-11-30 2 views
7

Cocoa + Objective C를 사용하여 Mac OS X 응용 프로그램을 만들고 싶지만 독점 데이터 소스에 연결해야합니다.이 때문에 데이터 소스의 소유자는 Java 라이브러리 만 제공합니다. 그래서 어떻게 든이 Java 라이브러리를 내 프로젝트로 가져 와서 Java 클래스에서 함수를 호출해야합니다. (또는이 라이브러리 주위에서 Java 래퍼를 만든 다음 Object-C에서 래퍼를 호출하십시오.)Mac에서 Objective C에서 Java 라이브러리 호출

이제 어떻게해야합니까? 빠른 Google 검색은 JNI로 연결되지만 좋은 (실제) 기사/자습서를 찾지 못했습니다. 이 기사를 읽는 방법, 필요한 경우이 자바 라이브러리를로드하는 방법, 필요한 경우 VM을 시작하는 방법, Java 객체를 작성하고 함수를 호출하는 방법이 필요하다. 정말 간단하고 나는 거기에서 이동할 수 있습니다. 감사.

명확히하기 위해 반복합니다. Objective-C에서 Java 함수를 호출하고 싶습니다. Java에서 원시 함수를 호출하고 싶지 않습니다.

답변

9

아마도 Invocation API을 알고있을 것입니다. Java Native Interface (JNI)이라는 잘 알려진 구석을 사용하면 진행중인 Java 런타임을로드 할 수 있습니다.

즉, network sockets 이상의 Objective-C 응용 프로그램과 통신하는 Java 서비스 응용 프로그램을 사용하면 더 쉬울 수 있습니다.

+2

+1 + 별도의 프로세스를 사용합니다.) 데이터 소스 및 목표와 통신하는 Java로 서비스를 작성하는 것이 훨씬 쉽습니다 -Co app –

+0

안녕하세요 Jeffrey, 네, Invocation API를 보았습니다. Java App과 소켓을 통해 통신하는 내 코코아 앱에 대한 아이디어는 꽤 좋았습니다.하지만이 java 내 코코아 애플 리케이션이 항상 서비스로 실행되지 않을 때 배경에 애플 리케이션, 그게 뭔가 가능한지 아십니까? (예전에는 4. 미안 내 질문이 바보 같은 경우) – Michal

+1

Objective-C 앱이 필요할 때마다 Java 앱을 애플리케이션으로 시작할 수있는 이유가 없습니다 (startin g 다른 바이너리). 그런 다음 소켓을 사용하여 통신 할 수 있습니다. "끝내기"명령을 구현해도 작업이 끝나면 종료 될 수 있습니다. 필요할 때만 실행됩니다. 당신이 그것에 연결하기 전에 몇 초 지연해야합니다, 자바 애플 리케이션을 시작하는 꽤 느립니다. –

0

Java-Objective C 브릿지를 찾으려면 looking at this article을 시도하거나 Apple 개발자 사이트를 방문하십시오. 그것은 더 이상 사용되지 않습니다. 즉, 코코아에 대한 변경 사항이 최신으로 유지되지 않습니다. 그러나 표준 Java 데이터 유형을 전달하는 API에이 API를 사용하는 중이라면 괜찮습니다.

+1

Snow Leopard 현재 브릿지는 전혀 존재하지 않습니다 : ( –