Tôi đang thiếu thứ gì đó cơ bản ở đây. Việc sử dụng việc biên dịch từ một ngôn ngữ nguồn sang bytecode (java) hoặc ngôn ngữ trung gian (.NET) là gì và sau đó chạy chúng từ bên trong JVM hoặc CLR?Tại sao chúng ta cần/sử dụng mã được quản lý (trên bản địa)?
Có hiệu suất giảm (dù nhỏ hoặc lớn) khi sử dụng mã được quản lý, nhưng lợi ích là gì? Tôi biết có bộ sưu tập rác và quản lý bộ nhớ nhưng ngay cả như vậy sẽ không tốt hơn để chỉ biên dịch nguồn gốc ngay mà không cần mức trung gian này?
Ngoài ra (tôi đang thêm điều này ở đây vì nó liên quan trực tiếp đến câu hỏi) - Rõ ràng Windows 10 Các ứng dụng phổ quát được biên dịch với .NET Native để biên dịch thành mã máy gốc. Tôi tò mò là tại sao điều này đã không được thực hiện trước với tất cả các chương trình.
Một lợi thế lớn của bytecode là có thể chạy nó dù sao bạn đã triển khai VM.Phạm vi cho điều này bị giới hạn trong Windows bởi vì bạn chỉ thực sự nhắm vào một số kiến trúc (nguyên tử, x86, v.v.) – Sammy
.NET Native không đơn giản là "biên dịch thành mã máy" về cơ bản nó có jit sớm, để nó không cần để được lên án sau này. Điều này vẫn được chuyển đổi thành chính xác cùng một mã máy mà nó sẽ là trong jit; sự phóng đại quá mức của nó khiến nó nghe như bạn nghĩ nó đã trở thành bản địa C++. – Krythic
@Krythic Tôi hiểu. Nhưng đó không phải là lựa chọn của tôi về từ ngữ, tôi đã trích dẫn từ liên kết tôi đã đề cập ([.NET Native] (https://msdn.microsoft.com/en-us/vstudio/dotnetnative.aspx)). –