2009-04-08 47 views
15

Tôi đã đọc mụC# 6.10 trên http://www.cafeaulait.org/javafaq.html và tôi bắt đầu tự hỏi làm thế nào mà những người chơi lớn đi về việc tạo cài đặt JVM của riêng họ. Một thí nghiệm hay cái gì khác có thể là khả thi (và khả thi) cho một người?Cách tạo JVM tùy chỉnh?

+0

http://www.cafeaulait.org/javafaq.htm: URL yêu cầu /javafaq.htm không được tìm thấy trên máy chủ này. Đó là /javafaq.html, tôi đã sửa nó trong bản chỉnh sửa. –

+0

@Grant: Tôi cũng vậy, nhưng chậm hơn một chút. :) –

+0

"6.10: Java có con trỏ không?"? –

Trả lời

10

về mặt kỹ thuật, tất cả thông tin mọi người cần để tạo một JVM mới đều nằm trong các đặc tả chung cho ngôn ngữ và nền tảng nhắm mục tiêu. Một JVM sẽ cần phải hành xử khác nhau tùy thuộc vào việc nó có nghĩa là để chạy trên một máy tính để bàn hoặc điện thoại di động, ngay cả khi việc giải thích bytecode sẽ là phần lớn giống hệt nhau.

Một vài nơi để bắt đầu tìm kiếm thông tin:

http://en.wikipedia.org/wiki/List_of_Java_virtual_machines
Reading Các "Java Virtual Machine Đặc điểm kỹ thuật" của Tim Lindholm
http://www.jcp.org/en/jsr/detail?id=30

Từ những gì tôi đã thấy việc triển khai JVM bởi Sun, IBM hoặc các công ty nhỏ hơn như Esmertec, viết một JVM đơn giản là một dự án vài tháng người đàn ông nhưng việc thêm JSR sau JSR để hỗ trợ nhiều chức năng hơn có thể mất nhiều năm sau đó.

Bây giờ, nếu tất cả những gì bạn cần là một trình thông dịch bytecode đơn giản, nó không phải là xấu, nhưng vẫn còn khá nhiều mã để viết.

3

Có một điều, bạn có thể muốn xem Apache Harmony Họ đã đi một chặng đường dài, vì vậy lịch sử dự án của họ thực sự có thể cung cấp cho bạn ý tưởng tốt về nỗ lực cần thiết. Bản thân tôi sẽ không đặt cược vào nó là khả thi cho một anh chàng

+0

"Apache Harmony đã ngừng hoạt động tại Quỹ Phần mềm Apache kể từ ngày 16 tháng 11 năm 2011." – Raedwald

4

Tôi hiểu rằng, hiện tại, những người chơi lớn đã cấp phép thư viện Java từ Sun. Sau đó, họ thêm tinh chỉnh của riêng mình. Sự khác biệt chính giữa việc triển khai là trình biên dịch mã bytecode-> máy.

4

Một JVM thủ công sẽ là một cách tuyệt vời để tìm hiểu về các máy ảo nói chung, các vấn đề về thiết kế ngôn ngữ chương trình (thông qua đặc tả JVM) và mức độ phân tích cú pháp nitty và vv.

Nếu bạn chọn thực hiện theo hướng đó, bạn cũng có thể khám phá các tối ưu hóa, đó là nơi nó có thể trở nên thú vị và bạn có thể lấy các tài liệu nghiên cứu và triển khai thuật toán của chúng.

Điều đó đang được nói, nếu bạn ít quan tâm đến nhiệm vụ dài và gian khổ của việc tạo VM từ đầu, bạn có thể muốn sửa đổi máy ảo nguồn mở hiện có như Kaffe. Nó sẽ cho bạn thấy những gì một máy ảo có, nhưng không nhất thiết phải như thế nào mã Java làm việc trong JVM của Sun:

Kaffe là một việc thực hiện phòng sạch của máy ảo Java, cộng với thư viện lớp liên quan cần thiết để cung cấp một thời gian chạy Java môi trường.

Bằng cách này, bạn có thể nghiên cứu chi tiết, nhưng đi sâu vào để triển khai các tính năng thú vị hơn.