Nhãn

19 tháng 9, 2012

499. Android A to Z: What is Dalvik (Anh - Việt)


By Jerry Hildenbrand  | Jan 05 2012 | 11:16 am |

What is Dalvik? We hear that word getting thrown around a lot on the Internet when talking about Android and its inner workings.  While there's no easy explanation we can give in just a few paragraphs, we can cover the basics and point you in the right direction if you need to feed your nerdly side. In its simplest terms, Dalvik is a virtual machine that runs applications and code written in Java. A standard Java compiler turns source code (written as text files) into Bytecode, then compiled into a .dex file that the Dalvik VM can read and use. In essence, class files are converted into .dex files (much like a jar file if one were using the standard Java VM) and then read and executed by the Dalvik Virtual Machine. Duplicate data used in class files is included only once in the .dex output, which saves space and uses less overhead. The executable files can be modified again when you install an application to make things even more optimized for mobile. Things like byte order swapping and linking data structure and function libraries inline make the files smaller and run better on our devices. The Dalvik VM was written from square one with Android in mind.

Cái gì là Dalvik? Chúng ta nghe nói đến cái từ đó khắp nơi trên Internet khi thảo luận về Android và các hoạt động bên trong nó. Vì không dễ giải thích nên chúng tôi chỉ có thể đưa ra 1 vài thông tin ngắn gọn, chúng tôi có thể bao gồm các vấn đề cơ bản và chỉ cho bạn đúng hướng nếu bạn cần thông tin về khía cạnh đam mê của bạn. Nói đơn giản nhất, Dalvik là 1 máy ảo để chạy các ứng dụng và mã được viết bằng Java. 1 trình biên dịch Java tiêu chuẩn làm cái việc dịch mã nguồn (được viết ở dạng các file text) sang mã Bytecode, sau đó nó được biên dịch thành 1 file dạng *.dex, cái mà Dalvik VM (Dalvik VirtualMachine - máy ảo Dalvik) có thể đọc và sử dụng. Về bản chất, các class file (*.class) được chuyển đổi thành các file *.dex (rất giống 1 file jar, nếu người nào đó đã sử dụng Java VM tiêu chuẩn) và sau đó nó được đọc và thực thi bởi Dalvik VM. Các dữ liệu trùng lặp sử dụng trong các class file được bao gồm chỉ 1 lần ở đầu ra *.dex, việc này tiết kiệm không gian và dùng đỡ tốn kém hơn. Các file thực thi có thể được cải biên lần nữa khi bạn cài đặt 1 ứng dụng để làm điều gì đó thậm chí chúng còn có thể được tối ưu hóa cho mobile. Những thứ như việc hoán đổi thứ tự byte, cấu trúc dữ liệu liên kết và các thư viện chức năng trong hệ thống làm cho các file này nhỏ hơn và chạy tốt hơn trên các thiết bị của chúng ta. Dalvik VM đã được thiết kế từ điểm xuất phát là dành cho Android.

Confused yet?  Don't feel bad, geeky programming talk usually has that effect. Think of it this way -- when you build a Java application for your computer, a Java Virtual Machine runs the compiled output of the source code. This is why Java runs on just about any operating system. Dalvik is a mobile-optimized version of a Java Virtual Machine, built with code from the Apache Harmony project, which is open-source and runs better than a standard Java VM would on our limited hardware, designed so that you can run more than one instance of the VM at a time -- ie multitasking. Because Dalvik is open-source, it's also been ported to other operating systems, like the one on the BlackBerry PlayBook. It's pretty damn complicated, pretty damn cool, and Oracle (the company that bought Java from Sun) hates it.
Rắc rối nhỉ? Đừng nản, nói về lập trình chuyên ngành thường cảm thấy như vậy. Hãy nghĩ về nó theo cách này -- khi bạn xây dựng 1 ứng dụng Java cho máy tính của bạn, 1 Java Virtual Machine chạy đầu ra của mã nguồn đã được biên dịch. Điều này giải thích tại sao Java hầu như chạy được trên bất kỳ hệ điều hành nào. Dalvik là 1 phiên bản của Java Virtual Machine được tối ưu hóa cho mobile, được xây dựng với mã từ dự án Apache Harmony (là 1 dự án phi lợi nhuận mã nguồn mở, thực thi trên Java, được phát triển bởi Apache Software Foundation), nó là nguồn mở và chạy tốt hơn so với Java VM tiêu chuẩn mà chạy trên phần cứng còn hạn chế của chúng ta, nó được thiết kế sao cho bạn có thể chạy nhiều hơn 1 đối tượng của VM tại cùng thời điểm -- nghĩa là đa nhiệm. Vì Dalvik là mã nguồn mở, nên nó cũng được chuyển cho các hệ điều hành khác, thí dụ như cái trên BlackBerry PlayBook. Nó bị chỉ trích là khá phức tạp, khá trơ, và Oracle (công ty đã mua Java từ Sun) ghét nó.
Android uses Dalvik because while the license for the standard Java Virtual Machine is GPL2 (free and open-source), when placed in a mobile device and using the Java Micro Edition, it is not. The big dispute between Google and Oracle is all based around Dalvik. Google claims it was written in a "clean-room" environment without using any of Oracle's code, and Oracle disagrees. We claim to have no idea, we're just glad it works as well as it does. 
Android sử dụng Dalvik vì giấy phép cho Java Virtual Machine tiêu chuẩn là GPL2 (nguồn mở và miễn phí), khi áp lên 1 thiết bị di động và dùng Java Micro Edition, không có. Tranh cãi lớn giữa Google và Oracle tất cả từ Dalvik mà ra. Google thì tuyên bố nó đã được viết ra trong 1 môi trường “sạch-khép kín” không sử dụng bất kỳ mã nào của Oracle, Oracle thì không đồng ý. Chúng ta thì chẳng đòi hỏi gì, chúng ta khoái nếu nó cứ hoạt động như nó đang làm.
For more on Dalvik, see the Google I/O website.

Muốn nhiều thông tin hơn về Dalvik, xem ở Google I/O website.

Không có nhận xét nào:

Đăng nhận xét