2011-06-15 2 views
6

라이브러리가있는 C 프로그램에 JVM을 포함시키는 것이 좋습니다. 이것은 eDSL 실행 엔진으로서 JVM을 의미합니다. (전체 Java 플랫폼 환경이 아닙니다.) Java 자체 대신 다른 JVM 기반 언어를 사용하려고합니다.NO 라이브러리가있는 C 프로그램에 JVM을 포함시키는 데 권장되는 방법은 무엇입니까?

+1

나는 JamVM을 가지고 노는 것을 기억합니다. 그것은 작고 C로 쓰여졌 고 그것을 임베드하는 것은 상당히 쉬웠습니다. 그러나 GNU Classpass는 상당히 크며, 임베디드 환경에서는 가상 머신이 제대로 작동하지 않으므로 내 자신의 Java 머신을 작성하게되었습니다. 그러나 데스크탑 애플리케이션을 사용하는 경우 JamVM을 옵션으로 고려할 수 있습니다. – Archie

+2

"no library"를 명확히하십시오. 선택한 VM 구현은 무엇입니까? 코드에 링크하기위한 정적 JVM 구현을 제공합니까? DSO (DLL/SO) 기반 버전은 문서화되어 있으며 다른 기본 코드와 통합하기위한 JNI 표준의 일부일 수 있습니다. 다른 JVM 기반 언어를 사용하고 있다면 이전 주석이 나타내는대로 GNU Classpath에 문제가 없을 수도 있습니다. –

+0

명확성을 위해 : JVM 바이트 코드로 구문 분석 할 계획 인 자체 DSL을 작성하려고 시도하는 중이며 결과 바이트 코드를 실행하기 위해 시스템에 임베드하는 JVM 구현이 필요합니다. 내가 맞습니까? – drnewman

답변

0

다른 JavaVM -s를 포함하려는 경우 Kaffe을 조사 할 수도 있지만 잘 모르고 사용자의 요구에 응답하지 않을 수 있습니다. JVM 사양에 대한 나의 이해는 클래스 로더가 필수적이며 (일부 핵심 클래스가 필요함) 클래스 로더가 필요하다는 것입니다.

사용하려는 JVM 기반 DSL 언어는 무엇입니까?

1

이것은 이상하게 들릴지 모르겠지만 자바 코드를 실행하려면 embedding Monousing IKVM을 제안 할 것입니다. Mono는 비교적 작고 이식성이 뛰어난 VM이며 임베딩에 적합합니다 (응용 프로그램에 정적으로 링크 할 수도 있음). IKVM은 Eclipse와 같은 괴물을 실행할 수있는 Java 1.6을 충실하게 구현 한 것입니다.

Mono/IKVM을 함께 사용하면 응용 프로그램을 x86 컴퓨터 코드 (Compiling Java Code to x86 Code 참조)로 컴파일 할 수도 있습니다.

관련 문제