Cấu trúc hữu ích nào (cho hiệu suất hoặc cách khác) là bytecode hợp lệ, nhưng không thể diễn tả trong Java?Nhiệm vụ cấp thấp nào có thể được thực hiện trên JVM, nhưng không được thể hiện bằng java?
Trả lời
- Bạn có thể ném bất kỳ đối tượng nào, không chỉ ngoại lệ.
- Bạn có thể quá tải trên loại trả về.
- Bạn có thể ném bất kỳ ngoại lệ nào mà không khai báo nó trong các lần ném.
JVM bytecode là stack-oriented programming language, vì vậy hầu hết các hướng dẫn quản lý ngăn xếp không có ý nghĩa trong Java, ví dụ: dup
, swap
, v.v. Bất kỳ goto
, tất nhiên, cũng không thể hiển thị trong Java.
Thứ gì đó như JSR 292 đề xuất hỗ trợ cho các ngôn ngữ được nhập động, mà tôi không nghĩ Java đang có kế hoạch trở thành.
Tôi nghĩ rằng điều gì đó cần phải được giải quyết ở đây, mặc dù: câu hỏi của bạn dường như ít nhất được thúc đẩy một phần bởi vấn đề hiệu suất. Trong thực tế, bytecode được biên dịch JIT để lắp ráp. Có hay không có một hướng dẫn bytecode siêu phép thuật thực sự là khá tranh luận.
Tôi đã đọc rằng chữ ký phương pháp bytecode hỗ trợ nhiều công văn trên kiểu trả về, trong khi Java chỉ cho phép các phương pháp cùng tên để gửi về loại tham số.
Với cùng một mã thông báo, bạn có thể tìm nạp các trường có cùng tên nhưng cũng có các kiểu khác nhau. – polygenelubricants
Điều ngược lại cũng đúng.
Ví dụ: khả năng hiển thị của Java đối với các lớp bên trong không thể được biểu diễn bằng mã byte. JVM chỉ biết khả năng hiển thị được bảo vệ theo gói, được bảo vệ, công khai và riêng tư. Vì vậy, trình biên dịch Java phải sử dụng một hack: Nó tạo ra các phương thức wrapper tổng hợp (có thể nhìn thấy gói) để trưng ra các trường riêng và các phương thức của các lớp bên trong cho lớp bên ngoài.
Khả năng hiển thị của các lớp bên trong được thể hiện bằng mã byte bằng cách sử dụng các thuộc tính INNERCLASS/OUTERCLASS. –
- 1. Chương trình Java có thể phát hiện rằng nó đang chạy thấp trên không gian heap?
- 2. Java thực hiện một ... JVM?
- 3. Lỗi lỗ UDP không thể thực hiện được với nhà cung cấp dịch vụ di động
- 4. Tại sao không thể thực hiện các nhiệm vụ trong quá trình giao dịch có tên?
- 5. In Flex - Có thể thực hiện được không?
- 6. Java được cài đặt, trong danh sách, nhưng thực hiện sản xuất "./java: Không có tập tin hoặc thư mục"
- 7. Capistrano có thể thực hiện các tác vụ trên máy chủ liên tục không?
- 8. Tôi có thể lên lịch cho Dịch vụ Windows C# để thực hiện nhiệm vụ hàng ngày như thế nào?
- 9. Làm thế nào để thực hiện nhiệm vụ cần tây từ bên trong nhiệm vụ?
- 10. Không thể có được Box-Shadow xuất hiện trên Div
- 11. Chrome có thể được thực hiện để thực hiện chuyển đổi XSL trên một tệp cục bộ không?
- 12. Có thể chương trình đơn luồng được thực hiện đồng thời trên nhiều lõi CPU không?
- 13. Có thể thực hiện ping trên windows phone 7 không?
- 14. Quy trình giám sát hoạt động như thế nào? Có thể thực hiện tương tự trên JVM không?
- 15. Giới hạn băm bộ nhớ thấp được đề xuất để thực hiện cho Java
- 16. Có thành phần nào không thể thực hiện được thừa kế đó không?
- 17. Cách thực hiện nhiệm vụ gọi một lớp chính
- 18. DateTime.TryParse không chấp nhận DateTime không thể thực hiện được?
- 19. Ngăn IIS thực hiện nhiệm vụ trước khi kết thúc
- 20. là Shutdownhook đảm bảo được thực hiện nếu JVM treo
- 21. Có thể readLines được thực hiện song song trong R
- 22. Cách lên lịch một nhiệm vụ để thực hiện trong Thư viện song song nhiệm vụ
- 23. Tài liệu có thể đọc được của con người có thể thực hiện được với Spock không?
- 24. Tôi có thể sử dụng các WebSockets HTML5 cho các tác vụ thường được thực hiện bằng AJAX không?
- 25. Có thể nhận được id thực sự duy nhất cho một cá thể JVM cụ thể không?
- 26. Không thể thực hiện cuộc gọi từ C++ sang Java bằng JNI
- 27. nhận ngày từ datetime không thể thực hiện được?
- 28. @OneToOne và @JoinColumn, tự động xóa thực thể rỗng, có thể thực hiện được?
- 29. Thực hiện nhiệm vụ thường xuyên trong một quy trình
- 30. Java hẹn giờ lớp: nhiệm vụ hẹn giờ dừng lại để thực hiện nếu thuộc một trong các nhiệm vụ ngoại lệ được ném
Mọi thứ có thể hợp lý để lại cho JIT không? Có lẽ một cái gì đó giống như đảm bảo phân bổ stack? –