nasıl bir C ++ uygulaması LLVM (sanırım LLJVM) kullanarak Java bayt kodu taşımak için?
Mesele şu anda C ++ ile yazılmış bir işlemimiz var, ancak yeni bir istemci, açıkça bir yerel kod (JNI yok) olmadan Java Sanal Makinesi'ni kullanarak programı çok platformlu bir şekilde çalıştırabilmek için zorunlu hale getirdi . Fikir, üretilen kavanozu alıp farklı sistemlere (Linux, Win, 32 bit - 64 bit) kopyalayabilmektir ve sadece çalışmalıdır.
Etrafa bakmak C ++ LLVM IR kodu ve sonra bu kodu java bayt kodu derlemek mümkün gibi görünüyor. Oluşturulan kodun okunabilir olmasına gerek yoktur.
Ben emscripten kullanarak benzer şeyler ile biraz test var, bu C ++ kodu alır ve JavaScript derlemek. Sonuç geçerli JS ancak tamamen okunamıyor (assambler gibi görünüyor).
- Herkes bu tekniği kullanarak C ++ 'dan Java bayt koduna bir uygulama portu yaptı mı?
- Hangi sorunlarla karşılaşabiliriz?
- Üretim kodu için geçerli bir yaklaşım mı?
Bazı yorumlardan sonra daha net kılmak için, belki de port iyi kullanılmamış, sonuç olarak okunabilir kaynak kodu beklemiyorum, sadece java bayt kodu, bu yüzden artık geliştirilecek bir 'port' değil, sadece hedef platforform yerel assamblear değil, java JVM olmalıdır.
Not: Şu anda bazı standart olmayan C ++ ve yakın kaynak kitaplıklarımız olduğunu biliyoruz, bu standart olmayan kodu ve tüm yakın kaynak kitaplıklarını kaldırmayı ve Free Libre Açık Kaynak Yazılımını kullanmayı arıyoruz, bu yüzden tüm kodların standart C ++ kodu olduğunu varsayalım. tüm kod derleme zamanında kullanılabilir.
Not2: Taşınabilir C ++ kodu yazma ve daha sonra istenen hedef platforma derleme seçeneği değildir, derlenen program çoklu platform olmalıdır, bu nedenle JVM kullanımı gerekir.
Not3: Şu anda Python veya başka bir dil tabanına uygulanan benzer çözümlere bakmıyoruz, ancak bunu duymak istiyorum. Bu ile bizim hedef yürütülebilir java bayt kodu olması gerektiği anlamına gelir ama C ++ geçerli python derlenmiş kod derlemek için seçenekler varsa ben de onları duymak istiyorum.