jak opłacalne jest przeniesienie aplikacji C ++ do kodu bajtowego Java za pomocą LLVM (chyba LLJVM)?
Chodzi o to, że obecnie mamy proces napisany w C ++, ale nowy klient wprowadził obowiązek uruchamiania programu w sposób wieloplatformowy, używając wirtualnej maszyny Java bez oczywistego kodu natywnego (bez JNI). Chodzi o to, aby móc wygenerować słoik i skopiować go do różnych systemów (Linux, Win, 32 bity - 64 bity) i powinien on po prostu działać.
Rozglądanie się wygląda na to, że można skompilować C ++ do kodu IR LLVM, a następnie ten kod do kodu bajtowego java. Wygenerowany kod nie musi być czytelny.
Testowałem trochę z podobnymi rzeczami przy użyciu emscripten, to pobiera kod C ++ i kompiluję go do JavaScript. Wynik jest prawidłowy JS, ale całkowicie nieczytelny (wygląda jak assambler).
- Czy ktoś zrobił port aplikacji od C ++ do kodu bajtowego Java za pomocą tej techniki?
- Z jakimi problemami możemy się zmierzyć?
- Czy poprawne jest podejście do kodu produkcyjnego?
Aby wyjaśnić moją uwagę po kilku komentarzach, być może port nie jest dobrze używany, dlatego nie oczekuję czytelnego kodu źródłowego, po prostu kod bajtowy java, więc nie jest to „port”, który zostanie opracowany dla tego, tylko że docelowa platforma musi być maszyną Java JVM, a nie rodzimym narzędziem Assamblear.
Uwaga: Zdaję sobie sprawę, że obecnie mamy niektóre niestandardowe biblioteki C ++ i bliskie źródła, chcemy usunąć ten niestandardowy kod i wszystkie bliskie biblioteki źródłowe oraz użyć darmowego oprogramowania Open Source Libre, więc załóżmy, że cały kod jest standardowym kodem C ++ z cały kod dostępny w czasie kompilacji.
Uwaga 2: Nie jest możliwe napisanie przenośnego kodu C ++, a następnie skompilowanie go na pożądanej platformie docelowej, skompilowany program musi być wieloplatformowy, dlatego należy użyć JVM.
Uwaga 3: W tej chwili nie szukamy podobnych rozwiązań stosowanych w Pythonie lub innej bazie językowej, ale chciałbym również o tym usłyszeć. Rozumiem przez to, że naszym docelowym plikiem wykonywalnym musi być kod bajtowy Java, ale jeśli istnieją opcje kompilacji C ++ do poprawnego skompilowanego kodu python, chciałbym również o nich usłyszeć.