2013-11-28 17 views
24

Tôi đang tìm kiếm HotSwapping tốt hơn trong JavaVM. Chỉ có thể áp dụng các thay đổi về phương pháp cơ thể là ổn nhưng khá hạn chế.Mã đổi mới nâng cao trong JDK 8?

Các tùy chọn có sẵn là JRebel và một dự án bị gián đoạn được gọi là Dynamic Code Evolution Virtual Machine (DCEVM).

Có một số JEP 159 đã được viết bởi người phát triển cốt lõi của DCEVM. Một bài đăng trên blog từ năm 2011 đã đề cập rằng các nhà phát triển DCEVM hiện đang làm việc cho Oracle để tích hợp điều này vào JDK.

Chúng tôi có loại hỗ trợ này cho JDK 8 beta đã hoặc đã được hoãn lại cho JDK 9 không?

Tôi cần trao đổi nóng để thêm và xóa và đổi tên hầu hết các phương thức riêng tư. Điều này sẽ giúp rất nhiều. Có một sản phẩm cho phép tôi làm như vậy (bên cạnh JRebel mà PR-chiến dịch khiến tôi khó chịu).

Phiên bản được hỗ trợ cuối cùng của DCEVM là cho 1.6u24 và nó chỉ cung cấp các tệp nhị phân Linux 32 bit. Kể từ khi tôi sử dụng 1.7 và 64bit Linux, đây là cả một stopper hiển thị cho tôi.

Ngoài ra còn có một dự án khác có sẵn trên github được gọi là Fakereplace. Điều này có thể dễ dàng được sử dụng cho mục đích của tôi hay tôi không nên điều tra điều này?

+4

Một trong những nhà phát triển JRebel từng làm một chút tổng quan về các giải pháp trao đổi mã khác nhau trên thị trường - http://stackoverflow.com/a/17642585/2269816 Theo ý kiến ​​cá nhân của tôi, JRebel hoàn thành công việc, không có đối thủ cạnh tranh nào có thể đến gần vào lúc này.Không sử dụng một công cụ chỉ vì Bạn không thích tiếp thị của họ có lẽ mặc dù công cụ chính nó là chất lượng hàng đầu, chủ yếu là làm tổn thương chính mình. –

Trả lời

10

Các JEP đến trong JDK 8 và JDK 9 được liệt kê trong this page. JEP-159 không nằm trong số đó. Từ jep index bạn có thể thấy rằng JEP-159 chưa được nhắm mục tiêu đến bất kỳ bản phát hành JDK nào, thậm chí không phải jdk 10.

Trạng thái JEP-159 hiện tại là "Submitted". Quá trình is described như sau:

Một JEP thành công đi qua tình trạng sau:

  • Bản nháp - Đang lưu thông của tác giả để xem xét ban đầu và sự đồng thuận xây dựng
  • đăng - Được nhập vào JEP Lưu trữ bởi tác giả để xem xét rộng hơn
  • Đã gửi - Được công bố bởi tác giả sẵn sàng để đánh giá
  • Ứng cử viên - Được chấp nhận đưa vào Lộ trình của Ope nJDK Lead
  • tài trợ - đánh giá bởi một nhóm hoặc Diện tích Chì được tài trợ hoàn toàn
  • Completed - Hoàn tất và chuyển giao

Vì vậy, nó vẫn chưa chấp nhận cho bất cứ lộ trình.

+1

Đó là lý do tại sao tôi tự hỏi nếu có một phiên bản pre-alpha hoặc một cái gì đó tương đương có sẵn. Dự án DCEVM đã được phát triển khá tốt vì vậy tôi tự hỏi tại sao không có phiên bản 1.7 và đã hy vọng cho một phiên bản 1.8. –

+0

@MartinKersten Tôi không biết làm thế nào sẽ có bất kỳ phiên bản pre-alpha nào vì nó chưa được đưa vào bất kỳ phạm vi nào, ít nhất là. – eis

+2

Tôi hy vọng cho một cái gì đó giống như một mảnh có thể cài đặt và chạy. Nhìn thấy phiên bản DCEVM đang làm việc cho JDK6 và những người mà Oracle thuê được hai năm nay, tôi hy vọng một điều gì đó cho thấy sự phát triển hiện tại. Tôi chỉ hy vọng Oracle đã không quyết định dừng lại các quyền sở hữu của mình và từ chức đội bóng này. –

11

Có một ngã ba DCEVM được duy trì trong kho lưu trữ trên Github. Nó đã được cập nhật gần đây cho Java 8. Các tệp nhị phân có sẵn thông qua các bản phát hành GitHub hoặc trên downloads page.

Đối với những thứ đơn giản, như thêm/xóa phương pháp, nó phải khá đáng tin cậy (được xác minh bằng các thử nghiệm tự động trong 16 cấu hình khác nhau). Tuy nhiên, nó vẫn có thể sụp đổ JVM, do đó, nó không có nghĩa là nên được sử dụng trong sản xuất.

+0

Cảm ơn. Tôi sẽ kiểm tra nó. Tôi cần nó để phát triển vì vậy nó sẽ là tuyệt vời nếu nó hoạt động. –

+0

Tôi chỉ muốn thay đổi phương thức hiển thị cho các trang html khi đang di chuyển để mang lại cho tôi trải nghiệm tương tự như PHP. Khi tôi nhận được kết quả, tôi sẽ điều chỉnh các bài kiểm tra đơn vị cho trang để mong đợi kết quả đã sửa. Hôm nay tôi phải khởi động lại máy chủ kết thúc trước mỗi lần thay vì chỉ tự động tải lại trang mỗi khi mã thay đổi (chỉ cần thêm chức năng phi tiêu vào trang yêu cầu máy chủ cho trạng thái). –

+3

Cảm ơn bạn rất nhiều, tôi chỉ cần thử nó với oracle java 1.8.0_05 x86-64 trên Linux và nó hoạt động rất đẹp. Fastdebug khá chậm, vì vậy hãy sử dụng hồ sơ "sản phẩm". –

Các vấn đề liên quan