Hiển thị các bài đăng có nhãn máy ảo Java. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn máy ảo Java. Hiển thị tất cả bài đăng

Thứ Sáu, 25 tháng 10, 2019

[Android smartphones] ART khác gì Dalvik?


Hiện nay, các ứng dụng Java sau khi viết xong chỉ được biên dịch (compile) một phần bởi lập trình viên. Phần mã biên dịch này sau đó sẽ phải đi qua một trình biên dịch khác để trở thành mã máy (native code) phù hợp với CPU và được CPU thực thi.

Java Virtual Machine - mã Java viết 1 lần chạy trên mọi thiết bị


Trình biên dịch này trên điện thoại Android là trình biên dịch Java (Java Virtual Machine) là Dalvik từ phiên bản Android 5 trở về trước. Từ phiên bản Android 4.4 trở lên, Google đã phát triển máy ảo Java mới thay thế Dalvik là Android Runtime.



ART và Dalvik là 2 loại máy ảo hoàn toàn khác nhau với ưu nhược điểm và lợi thế riêng.

ART tối ưu pin, app chạy không bị chậm và tối ưu bộ nhớ hơn. Mặc dù app gài chậm hơn và chiếm nhiều ổ lưu trữ hơn. Tuy nhiên, với sự phát triển của điện thoại thông minh, CPU ngày càng tốc độ cao và bộ nhớ rẻ hơn và nhiều hơn thì ART không gặp trở ngại này nữa. Nghĩa là người dùng sẽ có được trải nghiệm một chiếc điện thoại thông minh là:

- Hồi đáp tốt hơn.
- Hiệu quả sử dụng pịn vượt trội.
- Hiệu suất cải thiện rõ dệt.

Nguồn tổng hợp từ internet

Thứ Tư, 19 tháng 12, 2018

Android phone - Bộ biên dịch ART khác gì DAVILK?




Davilk - biên dịch app trong lúc chạy. Chiếm ít bộ nhớ hơn. Chạy hay bị lag hơn do vừa dịch vừa chạy. Tốn pin hơn và việc dọn dẹp bộ nhớ kém hơn.

ART (từ Android 4.4) - biên dịch app khi cài đặt. Nên app chiếm nhiều bộ nhớ hơn. Gài đặt lâu hơn. Tuy nhiên nhược điểm này khắc phục vì các điện thoại ngày nay pin đều có dung lượng cao (trên 300mAh) và bộ vi xử lý tốc độ cao, RAM nhiều hơn và ổ lưu trữ cũng to hơn.





Android Runtime (ART) là môi trường thời gian chạy ứng dụng được sử dụng bởi hệ điều hành Android. Thay thế Dalvik, máy ảo quy trình ban đầu được sử dụng bởi Android, ART thực hiện dịch mã byte của ứng dụng thành các hướng dẫn gốc được thực hiện sau đó bởi môi trường thời gian chạy của thiết bị.

Android 2.2 'Froyo' đã đưa quá trình biên dịch (JIT) theo thời gian dựa trên dấu vết vào Dalvik, tối ưu hóa việc thực thi các ứng dụng bằng cách liên tục cấu hình các ứng dụng mỗi khi chúng chạy và biên dịch động các đoạn ngắn của mã byte gốc của chúng thành mã máy gốc. Trong khi Dalvik diễn giải phần còn lại của mã byte của ứng dụng, thì việc thực thi riêng các đoạn mã byte ngắn đó, được gọi là 'dấu vết', cung cấp các cải tiến hiệu suất đáng kể.

Không giống như Dalvik, ART giới thiệu việc sử dụng trình biên dịch trước (AOT) bằng cách biên dịch toàn bộ ứng dụng thành mã máy gốc khi cài đặt. Bằng cách loại bỏ giải thích và biên dịch JIT dựa trên dấu vết của Dalvik, ART cải thiện hiệu quả thực thi chung và giảm mức tiêu thụ điện năng, giúp cải thiện tính tự chủ của pin trên thiết bị di động. Đồng thời, ART mang đến khả năng thực thi ứng dụng nhanh hơn, cơ chế phân bổ bộ nhớ và thu gom rác (GC) được cải thiện, các tính năng gỡ lỗi ứng dụng mới và cấu hình ứng dụng cấp cao chính xác hơn.

Để duy trì khả năng tương thích ngược, ART sử dụng cùng mã byte đầu vào như Dalvik, được cung cấp thông qua các tệp .dex tiêu chuẩn như một phần của tệp APK, trong khi các tệp .odex được thay thế bằng các tệp thực thi Định dạng có thể thực thi và có thể liên kết (ELF). Khi một ứng dụng được biên dịch bằng cách sử dụng tiện ích dex2oat trên thiết bị của ART, nó chỉ được chạy từ tệp thực thi ELF đã biên dịch; do đó, ART loại bỏ các chi phí thực thi ứng dụng khác nhau liên quan đến việc giải thích và biên dịch JIT dựa trên dấu vết của Dalvik. Mặt khác, ART yêu cầu thêm thời gian để biên dịch khi cài đặt ứng dụng và các ứng dụng chiếm dung lượng lưu trữ thứ cấp lớn hơn một chút (thường là bộ nhớ flash) để lưu mã được biên dịch.

Android 4.4 KitKat đã mang đến bản xem trước công nghệ của ART, bao gồm nó như một môi trường thời gian chạy thay thế và giữ Dalvik làm máy ảo mặc định.Trong phiên bản Android lớn tiếp theo, Android 5.0 Lollipop, Dalvik đã được thay thế hoàn toàn bằng ART.

Android 7.0 Nougat đã giới thiệu trình biên dịch JIT với mã cấu hình cho ART, cho phép nó liên tục cải thiện hiệu suất của các ứng dụng Android khi chúng chạy. Trình biên dịch JIT bổ sung cho trình biên dịch Ahead of Time hiện tại của ART và giúp cải thiện hiệu năng thời gian chạy.

Nguồn wiki