LLVM, JVM ve CLR gibi tipik VM'lerden daha düşük düzeydedir. Örneğin, bir çöp toplayıcı için kancaları olsa da, bir çöp toplayıcı kendisi sağlamaz.
Benzer şekilde, JVM'de yerleşik bir JIT derleyicisi vardır (gerçekten eski sürümler hariç). LLVM, LLVM IR için bazı JIT derleyicilerine sahiptir, ancak işleri birbirine bağlamak ve aslında kodu JIT yapmak hala geliştiriciye bağlıdır.
JVM çözülmemiş bir harici ile karşılaştığında, dışarı çıkar ve onu karşılamak için doğru sınıfı bulur ve .class dosyalarının doğrudan dosya sisteminde ve .jar dosyalarında nasıl aranacağını bilir 1 . LLVM'nin JIT derleyicileri, bunun gibi şeylerin nasıl ele alınacağına karar verebileceğiniz kancalara sahiptir. Beklediğiniz gibi, bazı insanlar o kadar, bazı varsayılan versiyonlarını yazdım edebilirsiniz JVM aynı sipariş üzerine kabaca şeyler can - ama aynı zamanda o görmezden gelip isterseniz farklı yapmak özgürsünüz.
Basitçe söylemek gerekirse, bir derleyici (veya bu siparişte bir şey) geliştiriyorsanız, hayatınızı kolaylaştıracak birçok araç vardır. Optimizasyon hakkında çok endişelenmek yerine, kaynak kodunuzdan LLVM IR'ye yönetebileceğiniz en basit çeviriyi kabaca yapabilir ve daha sonra optimizasyon, JIT, bağlantı, vb. Yönetmek için LLVM kitaplıklarını kullanabilirsiniz. bazı gerçekten kullanışlı işlevler, böylece tüm ayrıntılarla uğraşmak zorunda kalmazsınız, ancak yine de işlevler ve onları çağırmak için hala kod yazıyorsunuz. Bitmiş bir ürün değil, ürünleri nispeten hızlı ve kolay bir şekilde oluşturmak için kullanışlı araçlar.
1 Teknik olarak, bunların hepsi JVM'ye tam olarak dahil edilmemiştir. Genellikle JVM'nin bir parçası olarak primordial sınıf yükleyici olarak adlandırılanı belirtir ve daha sonra diğer şeyleri işleyen java.util.ClassLoader'da belirtilen kullanıcı sınıfı yükleyiciler vardır. Bazı sınıf yükleyicileri varsayılan olarak dahil edilmiştir ve yeterince kötü istiyorsanız, kendiniz tanımlayarak bunları tamamlayabilirsiniz.