Trước hết, đáng chú ý là JVM của Sun được viết bằng C. C là ngôn ngữ rất phổ biến khi cần tính di động.
Ngôn ngữ C có thể mang theo được mặc dù nhiều chương trình C không có. Điều này là do C không đặt ra nhiều hạn chế đối với người lập trình hoặc đưa ra nhiều giả định. Nếu một lập trình viên C muốn các chương trình của mình có thể mang theo được, anh ta phải tự đặt ra những hạn chế đó.
Trong thực tế, điều đó thực sự không khó hơn nhiều so với việc sống với các hạn chế mà Java buộc bạn. Đây chủ yếu là vấn đề quan tâm đến tính bền vững và kích thước nguyên thủy của bạn và sử dụng các thư viện di động như GTK + thay vì các thư viện dành riêng cho nền tảng.
Bạn có thể tạo một trình biên dịch GTK + đích và C hỗ trợ một máy ảo, thậm chí có thể là JVM và để mã hiện có hoạt động với rất ít thay đổi. Trong thực tế, nếu không có bộ sưu tập rác, một máy ảo C có lẽ sẽ đơn giản hơn nhiều. Tại sao bạn muốn, mặc dù?
Việc đảo ngược, biên dịch Java thành mã gốc, cũng có thể thực hiện được. Về cơ bản đó là những gì JIT làm. Tại sao bạn muốn, mặc dù? Tôi chắc chắn có những dự án thú cưng để làm điều đó "chỉ vì", nhưng chúng không được sử dụng nghiêm túc.