Tất nhiên, .dex
tệp dành cho máy ảo Dalvik của Android và .class
tệp dành cho JVM. Nhưng tôi tự hỏi nếu họ có bố trí tương tự (Constant Pool, Fields, Methods, Attributes, ...)? Bytecode là khác nhau, nhưng có Dalvik cụ thể opcode tương đương với những người thân từ JVM?Sự khác nhau giữa các tệp .class và .dex là gì?
Trả lời
Trong khi tệp jar Java có nhiều tệp lớp, mỗi tệp APK chỉ có một tệp classes.dex duy nhất, như được hiển thị bên dưới. Theo Google, định dạng APK khác với định dạng tệp lớp vì lý do hiệu suất và bảo mật.
Có một số Dex File Format và Class File Format specification từ công ty tương ứng.
Hai tệp này hoàn toàn khác nhau.
+1 Bộ tháo rời ddexer cung cấp thông tin bổ sung http://dedexer.sourceforge.net/ – stacker
+1 để liên kết tới tài liệu chính thức :) – JesusFreke
Định dạng thực thi Dalvik là mã, VM thực hiện. Dalvik VM không thể thực thi Java bytecode, nó phải được biên dịch thành dex, bởi vì nó sử dụng một tập lệnh thay thế.
Đọc số wiki article.
OP đã biết điều đó rồi. Vui lòng đọc câu đầu tiên của câu hỏi. –
- 1. Sự khác nhau giữa [Class new] và [[Class alloc] init trong iOS là gì?
- 2. Sự khác nhau giữa Class clazz và Class <?> clazz trong java là gì?
- 3. Sự khác nhau giữa tệp .xib và .storyboard là gì?
- 4. Sự khác nhau giữa: = và + = trong tạo tệp là gì?
- 5. iPhone SDK: sự khác nhau giữa #import và @class là gì?
- 6. Sự khác nhau giữa Private Sub, Function và Class
- 7. Các tệp .dex trong Android là gì?
- 8. Sự khác nhau giữa hg quên và hg là gì?
- 9. Sự khác nhau chính giữa signcode.exe và signtool.exe là gì?
- 10. Sự khác nhau giữa từ điển và mảng là gì?
- 11. Sự khác nhau giữa FileStream.Flush() và FileStream.Flush (True) là gì?
- 12. Sự khác nhau giữa "mutex" và "lock" là gì?
- 13. Sự khác nhau giữa sysfs_create_file() và sysfs_create_group() là gì?
- 14. Sự khác nhau giữa metaClass.methods và metaClass.metaMethods là gì?
- 15. Sự khác nhau giữa InputStream và ByteArrayInputStream là gì?
- 16. Sự khác nhau giữa xelement.load và xdocument.load là gì?
- 17. Sự khác nhau giữa Href và Url.Content là gì?
- 18. Sự khác nhau giữa Server.MapPath và HostingEnvironment.MapPath là gì?
- 19. Sự khác nhau giữa AssemblyVersion, AssemblyFileVersion và AssemblyInformationalVersion là gì?
- 20. Sự khác nhau giữa @id và @ + id là gì?
- 21. Sự khác nhau giữa .bashrc, .bash_profile và .environment là gì?
- 22. Sự khác nhau giữa JSF và Facelets là gì?
- 23. Sự khác nhau giữa app.doScript và $ .evalFile là gì?
- 24. sự khác nhau giữa plugin và thư viện là gì?
- 25. Sự khác nhau giữa NaN và None là gì?
- 26. Sự khác nhau giữa Phing và PHPUnderControl là gì?
- 27. Sự khác nhau giữa init() và window.init() là gì?
- 28. Sự khác nhau giữa Model, ModelMap và ModelAndView là gì?
- 29. Sự khác nhau giữa fancyLocalization và preferredLanguage là gì?
- 30. Sự khác nhau giữa vector và đỉnh là gì?
Chưa bao giờ đã vào điều này, nhưng đây là một bước đầu tiên: http://www.slideshare.net/Bhavsidd/diff-of-class-and-dex-file (và điều này: http://www.dalvikvm.com/) – MByD
@BinyaminSharet liên kết thứ hai là chưa sử dụng và không chứa bất kỳ thông tin hữu ích –
Nhìn vào bài viết này, [Sự khác biệt giữa tệp .class và .dex.] (http: //www.risesoftware. com/pg/blog/Bhavya/read/889/sự khác biệt giữa lớp và dex-file) – bharath