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