LLVM을 사용하여 C ++ 응용 프로그램을 Java 바이트 코드로 이식하는 것이 얼마나 실용적인가요?
문제는 현재 C ++로 작성된 프로세스를 가지고 있지만 새로운 클라이언트는 기본 코드가없는 Java Virtual Machine (JNI 없음)을 사용하여 멀티 플랫폼 방식으로 프로그램을 실행할 수 있어야한다는 것 입니다. 아이디어는 생성 된 jar를 가져 와서 다른 시스템 (Linux, Win, 32 비트-64 비트)으로 복사 한 다음 작동해야합니다.
둘러 보면 C ++을 LLVM IR 코드로 컴파일 한 다음 해당 코드를 java 바이트 코드로 컴파일 할 수있는 것처럼 보입니다. 생성 된 코드를 읽을 필요가 없습니다.
나는 emscripten을 사용하여 비슷한 것들을 약간 테스트했다. 이는 C ++ 코드를 사용하여 JavaScript로 컴파일한다. 결과는 유효한 JS이지만 완전히 읽을 수 없습니다 (아샘 블러처럼 보입니다).
- 이 기술을 사용하여 C ++에서 Java 바이트 코드로 응용 프로그램 포트를 만든 사람이 있습니까?
- 우리는 어떤 문제에 직면 할 수 있습니까?
- 생산 코드에 대한 올바른 접근 방법입니까?
몇 가지 주석 후 내 요점을 더 명확하게하기 위해 아마도 포트가 잘 사용되지 않을 수 있습니다. 결과적으로 읽을 수있는 소스 코드를 기대하지 않습니다 .Java 바이트 코드이므로 더 이상 개발 될 '포트'가 아닙니다. 대상 플랫폼은 기본 assamblear가 아닌 Java JVM이어야합니다.
참고 : 현재 비표준 C ++ 및 가까운 소스 라이브러리가 있으며이 비표준 코드 및 모든 가까운 소스 라이브러리를 제거하고 Free Libre Open Source Software를 사용하려고하므로 모든 코드가 표준 C ++ 코드라고 가정 해 보겠습니다. 컴파일 타임에 모든 코드를 사용할 수 있습니다.
주 2 : 이식 가능한 C ++ 코드를 작성하고 원하는 대상 플랫폼으로 컴파일하는 옵션이 아니므로 컴파일 된 프로그램은 다중 플랫폼이어야하므로 JVM을 사용해야합니다.
Note3 : 지금 우리는 파이썬이나 다른 언어 기반에 적용되는 유사한 솔루션을 조사하지 않고 있지만 그것에 대해 듣고 싶습니다. 이것으로 우리의 대상 실행 파일은 Java 바이트 코드 여야하지만 유효한 파이썬 컴파일 코드로 C ++를 컴파일하는 옵션이 있으면 그것에 대해 듣고 싶습니다.