LLVM ở mức thấp hơn các VM thông thường như JVM và CLR. Ví dụ, trong khi nó có các móc cho trình thu gom rác, nó không tự cung cấp trình thu gom rác.
Tương tự, JVM có trình biên dịch JIT tích hợp (ngoại trừ trong các phiên bản thực sự cổ xưa). LLVM có một số trình biên dịch JIT cho LLVM IR, nhưng vẫn tùy thuộc vào nhà phát triển để kết nối mọi thứ lại với nhau và thực sự JIT mã.
Khi JVM gặp một bên ngoài chưa được giải quyết, nó đi ra ngoài và tìm đúng lớp để thỏa mãn nó và biết cách tìm kiếm các tệp. Class trực tiếp trong hệ thống tệp và trong các tệp .jar 1 . Trình biên dịch JIT của LLVM có các móc nối nơi bạn có thể quyết định cách xử lý những thứ như thế. Như bạn mong đợi, một số người đã viết một số phiên bản mặc định, do đó, nó có thể thực hiện mọi thứ theo cùng một thứ tự như JVM có thể - nhưng bạn cũng có thể bỏ qua những phiên bản đó và làm những điều khác biệt nếu bạn chọn.
Nói một cách đơn giản, nếu bạn đang phát triển một trình biên dịch (hoặc một cái gì đó theo thứ tự đó), nó có rất nhiều công cụ để làm cho cuộc sống của bạn dễ dàng. Thay vì lo lắng nhiều về tối ưu hóa, bạn có thể thực hiện bản dịch đơn giản nhất mà bạn có thể quản lý từ mã nguồn của mình sang LLVM IR, sau đó sử dụng các thư viện LLVM để quản lý tối ưu hóa, JITing, liên kết, v.v. Tuy nhiên, chúng là các thư viện - nó cung cấp một số chức năng thực sự hữu ích để bạn không phải xử lý tất cả các chi tiết, nhưng chúng vẫn là các chức năng và bạn vẫn đang viết mã để gọi chúng. Đây không phải là sản phẩm hoàn chỉnh, chỉ là công cụ hữu ích để xây dựng sản phẩm tương đối nhanh chóng và dễ dàng.
1 Về mặt kỹ thuật, không phải tất cả những điều này được xây dựng vào JVM thích hợp. Nó chỉ định cái thường được gọi là trình nạp lớp nguyên thủy như là một phần của JVM thích hợp, và sau đó có các trình nạp lớp người dùng được chỉ định trong java.util.ClassLoader xử lý các thứ khác. Một số trình nạp lớp được bao gồm theo mặc định và nếu bạn muốn đủ tệ, bạn có thể bổ sung chúng bằng cách định nghĩa riêng của bạn.