2011-06-15 24 views
6

C programında JVM'yi NO kitaplığına gömmek için önerilen yol nedir. Bu, bir eDSL yürütme motoru olarak JVM anlamına gelir. (Tüm Java platformu ortamı değil) Java'nın kendisi yerine başka bir JVM tabanlı dili kullanmaya çalışıyorum.C programında JVM'yi NO kütüphanesi ile gömmek için önerilen yol?

+1

Kendimi JamVM ile çaldığımı hatırlıyorum. Küçüktür ve C dilinde yazılmıştır ve onu gömmek oldukça kolaydı. Ancak, oldukça büyük olan GNU Classpass'a dayanıyor ve sanal makine gömülü ortamda iyi davranmıyordu, bu yüzden kendi Java makinemi yazmayı bitirdim. Ancak masaüstü uygulaması yapıyorsanız, JamVM'yi bir seçenek olarak düşünebilirsiniz. – Archie

+2

"Kütüphane yok" konusuna açıklık getirin. VM'nin hangi uygulamasını seçtiniz? ve kodunuza bağlamak için statik bir JVM uygulaması sağlar? DSO (DLL/SO) tabanlı sürümü belgelenmiştir ve belki de diğer yerel kodlarla bütünleşmek için JNI standartlarının bir parçasıdır. Başka bir JVM tabanlı dil kullandığınız için, önceki yorumcunun işaret ettiği GNU Classpath ile ilgili sorunlarınız olmayabilir. –

+0

Netlik için: JVM bayt koduna ayrıştırmayı planladığınız kendi DSL'nizi oluşturmaya çalışıyorsunuz ve sonuçta oluşan bayt kodunu yürütmek için sisteminize yerleştirilecek bir JVM uygulamasına ihtiyacınız var. Ben haklı mıyım – drnewman

cevap

0

Belki o zaman Kaffe içine görünebilir, diğer bazı JavaVM-s gömmek istiyorum, ama iyi bilmiyorum ve ihtiyaçlarınıza cevap olmayabilir. JVM şartnamesine ilişkin anlayışım, sınıf yükleyicinin önemli bir parçası olduğudur (ve bazı temel sınıflara ihtiyaç duyar).

Kullanmak istediğiniz JVM tabanlı DSL dili nedir?

1

Bu, kulağa kötü gelebilir, ancak Java kodunuzu çalıştırmak için embedding Mono ve using IKVM öneririm. Mono, gömülmek için uygun olan nispeten küçük ve taşınabilir bir VM'dir (uygulamanıza statik olarak bağlayabilirsiniz) ve IKVM, Eclipse gibi canavarları bile çalıştırabilen Java 1.6'nın sadık bir uygulamasıdır.

Mono/IKVM'nin bir kombinasyonunu kullanarak, uygulamanızın Zamanını x86 makine koduna derleyebilirsiniz (bkz. Compiling Java Code to x86 Code).

İlgili konular