Tái triển khai các lựa chọn thay thế cho JRebel [đã đóng]


190

JRebel cho phép mã mới được biên dịch được triển khai lại mà không cần khởi động lại ứng dụng. Tôi tự hỏi nếu có bất kỳ thay thế (miễn phí?). Các câu hỏi thường gặp trang trả lời câu hỏi này, nhưng tôi chắc chắn nó thiên về JRebel. Câu hỏi này đã được hỏi một năm trước trên trang web này, nhưng tôi sẽ đưa nó trở lại để xem có ai có bất kỳ thông tin mới nào không.

Bên cạnh đó, tôi thực sự thích JRebel, nhưng nếu có một sự thay thế miễn phí, tôi sẵn sàng thử nó.

Thêm một lưu ý nữa, tôi đang làm việc trong một dự án nguồn mở và họ cung cấp giấy phép một năm miễn phí cho những người có thể chứng minh rằng họ đang ở trong một dự án nguồn mở. Điều này rất tốt cho tôi (www.kuali.org), nhưng tôi sẽ không ở trong dự án đó mãi mãi.


53
Câu hỏi hay. Chúng tôi cũng đang tìm kiếm một giải pháp thay thế cho JRebel, vì bộ phận bán hàng của họ cực kỳ xâm lấn. Chúng tôi không gặp vấn đề gì khi trả tiền cho một sản phẩm như JRebel, nhưng không phải khi họ làm phiền các nhà phát triển và bộ phận CNTT của chúng tôi 24/7.
neu242

4
Có một sự thay thế cho jRebel bởi chính ZeroTurnAround: phiên bản miễn phí của Jrebel để mở các dự án và trường hợp nghiên cứu ... my.jrebel.com
dellasavia

2
Tôi biết đó là phản hồi muộn, bạn có thể xem Spring Loaded -, đây là một tác nhân JVM để tải lại các thay đổi tệp lớp trong khi JVM đang chạy. Nó biến đổi các lớp tại thời gian tải để làm cho chúng có thể sửa đổi để tải lại sau này. Không giống như 'thay thế mã nóng' chỉ cho phép thay đổi đơn giản khi JVM đang chạy (ví dụ: thay đổi đối với thân phương thức), Spring Loaded cho phép bạn thêm / sửa đổi / xóa phương thức / trường / hàm tạo và hơn thế nữa ...
Giải pháp đơn giản

Trình gỡ lỗi Eclipse - thay thế mã sống của bạn ngay lập tức.
dùng1050755

Hãy thử đăng bài này lên trang web chị em, Phần mềm giới thiệu Stack Exchange .
Basil Bourque

Câu trả lời:


97

Hãy xem DCEVM , đây là bản sửa đổi của HotSpot VM cho phép xác định lại lớp không giới hạn khi chạy. Bạn có thể thêm / xóa các trường và phương thức và thay đổi siêu loại của một lớp khi chạy. Các tính năng của DCEVM có thể được tích hợp trong bản cập nhật Java trong tương lai như là một phần của JEP 159 .

Các tệp nhị phân có sẵn trên trang web gốc được giới hạn ở Java 6u25 và các phiên bản đầu của Java 7. Dự án đã được rẽ nhánh trên Github và hỗ trợ các phiên bản gần đây của Java 7 và 8. Trình bảo trì cung cấp nhị phân cho 32/64 bit VM trên Windows / Linux. Bắt đầu với Java 11, dự án đã chuyển sang kho lưu trữ GitHub mới và giờ đây cũng cung cấp các tệp nhị phân cho OS X.

DCEVM được đóng gói cho Debian và Ubuntu, nó được tích hợp thuận tiện với OpenJDK và có thể được gọi với java -dcevm. Tên của gói phụ thuộc vào phiên bản của JDK mặc định:


5
Nó hoạt động tốt, tôi thấy nó nhanh hơn và tiêu thụ ít bộ nhớ hơn so với JRebel. Hạn chế duy nhất là bám vào Java 6u25.
Emmanuel Bourg

3
Cảm ơn rât nhiều. Tôi đã hủy hoại cả ngày cố gắng để jRebel hoạt động như mong muốn. DCEVM đã đến giải cứu.
alehro

4
Dưới đây là các hướng dẫn xây dựng và cài đặt đầy đủ cho DCEVM trên JDK 7u45 và MacOSX: neu242.livejournal.com/52962.html
neu242

1
JEP 159 không phải là một phần của JDK 8. Nó có thể đã hoãn lại JDK 9 nhưng chưa có xác nhận nào.
KrishPrabakar

5
Tìm thấy một số nhị phân JVM 1.7 đầy đủ ở đây: dcevm.nentjes.com vì vậy không cần phải vá JVM của bạn. Tôi đã thử win64 và nó hoạt động rất tốt với tôi. Tôi cũng đã viết blog về nó ở đây nếu bạn cần thêm chi tiết: javainformed.blogspot.com/2014/01/jrebel-free-alternative.html
dnang

42

Hotswap Agent là một phần mở rộng cho DCEVM, hỗ trợ nhiều khung công tác Java (tải lại định nghĩa bean Spring, ánh xạ thực thể Hibernate, thiết lập mức logger, ...).

Cũng có rất nhiều tài liệu về cách thiết lập DCEVM và các tệp nhị phân được biên dịch cho Java 1.7.


5
Bây giờ họ có một trang web chuyên dụng: hotswapagent.org . Dự án còn khá mới nhưng có vẻ như hoạt động khá tốt.
Didier L

Tôi đã làm theo hướng dẫn này để tích hợp nó vào nhật thực sau khi không tìm thấy nó: tirthalpatel.blogspot.fr/2014/06/. Nó hoạt động như một bùa mê
jpprade

@edudant Sau khi cài đặt 'Hotswap agent', chúng ta có cần cài đặt DCEVM không? Bởi vì tôi đã cài đặt DCEVM bằng cách sử dụng "sudo apt install openjdk-11-jre-dcevm" trong Ubuntu 19.04 và cũng là plugin trong IntelliJ Ultimate 2019.1.3. Nếu cài đặt 'Đại lý Hotswap', hãy để một mình làm công việc của JRebel, việc sử dụng DCEVM là gì!?


20

Bởi những kẻ mùa xuân, được sử dụng để tải lại Grails nhưng cũng hoạt động với Java:

https://github.com/SpringSource/spring-loaded


3
Tôi không muốn càu nhàu nhưng tải lò xo không hỗ trợ tải lại phụ thuộc.
lbednaszynski

Như tôi nhớ, có những thuộc tính hệ thống mà bạn có thể thiết lập để nói với nó những gói nào có thể tải lại được. Nó có những hạn chế khác và tôi có thể muốn đi với DCEVM trong bất kỳ sự kiện nào.
Ramon

1
"Gói nào để tải lại" - chính xác. Vấn đề như được chỉ ra bởi @lbednaszynski là nó sẽ không tải lại các JAR phụ thuộc. Đó là điều cần thiết cho các dự án đa mô-đun Maven.
Marcel Stor

Dự án này là trên gác mái bây giờ!
jpmottin


9

Tôi đã làm việc trong một dự án nguồn mở cho phép bạn thay thế các lớp nóng hơn và trên những gì trao đổi nóng cho phép: https://github.com/fakereplace/fakereplace

Nó có thể hoặc không thể làm việc cho bạn, nhưng bất kỳ phản hồi nào cũng được đánh giá cao


4

Bạn có thể muốn xem cái này:

Hỗ trợ HotSwap: kiến ​​trúc hướng đối tượng của Java HotSpot VM cho phép các tính năng nâng cao như định nghĩa lại lớp đang hoạt động hoặc "HotSwap". Tính năng này cung cấp khả năng thay thế mã sửa đổi trong một ứng dụng đang chạy thông qua các API gỡ lỗi. HotSwap bổ sung chức năng cho Kiến trúc trình gỡ lỗi nền tảng Java, cho phép một lớp được cập nhật trong khi thực thi trong khi dưới sự kiểm soát của trình gỡ lỗi . Nó cũng cho phép các hoạt động định hình được thực hiện bằng cách quét nóng trong các phiên bản của các phương thức trong đó mã cấu hình đã được chèn.

Hiện tại, điều này chỉ cho phép phần thân phương thức mới được biên dịch được triển khai mà không cần khởi động lại ứng dụng. Tất cả bạn phải làm là chạy nó với trình gỡ lỗi. Tôi đã thử nó trong Eclipse và nó hoạt động tuyệt vời.

Ngoài ra, như Emmanuel Bourg đã đề cập trong câu trả lời của mình ( JEP 159 ), hy vọng sẽ có sự hỗ trợ cho việc bổ sung các siêu kiểu và bổ sung và loại bỏ các phương thức và trường.

Tham khảo: Java Whitepaper 135217: Độ tin cậy, tính khả dụng và khả năng phục vụ


-3

JRebel là miễn phí. Đừng mua nó. Chọn tùy chọn "miễn phí" (nút radio) trên trang "mua". Sau đó chọn "Xã hội". Sau khi bạn đăng ký, bạn sẽ nhận được khóa cấp phép JRebel đầy đủ chức năng. Sau đó, bạn có thể tải xuống JRebel hoặc sử dụng khóa trong phiên bản nhúng IDE của mình. Bắt, (vâng, có một lưu ý), bạn phải cho phép họ đăng thay mặt bạn (quảng cáo) mỗi tháng một lần trên dòng thời gian FB hoặc tài khoản Twitter của bạn. Tôi đã cho họ tài khoản twitter của tôi, không có vấn đề gì, tôi không bao giờ sử dụng nó và không ai tôi biết thực sự sử dụng nó. Vì vậy, tiết kiệm $ 260.


14
Có thêm một lần bắt. Nó JRebel Social chỉ miễn phí cho sử dụng phi thương mại. Có, chắc chắn, chúng tôi sẽ không kiểm tra xem bạn có thực sự sử dụng nó cho dự án cá nhân hoặc tại nơi làm việc không, nhưng kiểm toán viên có thể không thích nếu họ thấy bạn sử dụng sai phần mềm.
Anton Arhipov

2
Tôi sẽ không bao giờ đề nghị khác. Trên thực tế - lý do duy nhất tôi đưa ra điều này là vì không còn giấy phép "cá nhân" nữa. Tôi đã có thể khiến công ty của tôi trả tiền cho giấy phép làm việc của tôi. Sau đó tôi cũng đã trả tiền cho một giấy phép cá nhân, cho sử dụng cá nhân của tôi, trong hơn 3 năm. Nhưng khi giá ở phía bắc $ 260 một năm, điều đó trở nên không thực tế. Đây là giải pháp tốt nhất cho tôi (và những người khác), nhưng tôi cũng sẽ tiếp tục trả tiền cho nó nếu giá cả hợp lý.
Michael Andrew

42
Ngoài ra, thực tế là mỗi năm tôi cần mua lại phần mềm tôi đã mua thật là bực bội. Không có công ty khác làm điều này. Thông thường bạn mua phần mềm một lần. Nếu bạn chọn tham gia nâng cấp - thì bạn sẽ mua lại với giá đầy đủ (hoặc có thể là giá nâng cấp, tùy thuộc vào công ty). Nhưng những gì bạn đang trả tiền sau đó là các tính năng MỚI - không phải là các tính năng giống như bạn đã trả tiền. Nó sẽ giống như Apple hoặc Microsoft vô hiệu hóa máy tính của bạn mỗi năm cho đến khi bạn trả tiền cho hệ điều hành một lần nữa. Thức ăn cho suy nghĩ.
Michael Andrew

2
JRebel Social đã được thay thế bằng myJRebel. Nó miễn phí cho sử dụng phi thương mại, bạn chỉ cần cho phép chia sẻ số liệu thống kê: my.jrebel.com
Steve Swinsburg

1
Nói chung, JRebel tương đối rẻ cho một giấy phép phần mềm dành cho nhà phát triển.
Jared Hooper
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.