JRebel pozwala na ponowne wdrożenie nowo skompilowanego kodu bez ponownego uruchamiania aplikacji. Zastanawiam się, czy jest jakaś alternatywa (za darmo?). Strona FAQ odpowiada na to pytanie, ale jestem pewien, że jest tendencyjny w stosunku do JRebel. To pytanie zostało zadane rok temu na tej stronie, ale przywracam je, aby sprawdzić, czy ktoś ma jakieś nowe informacje.
Na marginesie, naprawdę lubię JRebel, ale jeśli istnieje darmowa alternatywa, jestem gotów spróbować.
Jedna dodatkowa uwaga: pracuję nad projektem typu open source i oferują bezpłatne roczne licencje dla osób, które mogą udowodnić, że biorą udział w projekcie typu open source. Co działa świetnie dla mnie (www.kuali.org), ale nie będę na tym projekcie na zawsze.
Odpowiedzi:
Spójrz na DCEVM , to modyfikacja maszyny wirtualnej HotSpot, która pozwala na nieograniczoną redefinicję klas w czasie wykonywania. Możesz dodawać / usuwać pola i metody oraz zmieniać super typy klas w czasie wykonywania. Funkcje DCEVM mogą zostać zintegrowane z przyszłą aktualizacją Java jako część JEP 159 .
Pliki binarne dostępne na oryginalnej stronie są ograniczone do Java 6u25 i do wczesnych wersji Java 7. Projekt został rozwidlony na Github i obsługuje najnowsze wersje Java 7 i 8. Opiekun zapewnia pliki binarne dla maszyn wirtualnych 32/64 bitów w systemie Windows / Linux Począwszy od wersji Java 11 projekt został przeniesiony do nowego repozytorium GitHub, a teraz zapewnia także pliki binarne dla systemu OS X.
DCEVM jest spakowany dla Debiana i Ubuntu, jest wygodnie zintegrowany z OpenJDK i można go wywoływać
java -dcevm
. Nazwa pakietu zależy od wersji domyślnego JDK:źródło
Hotswap Agent to rozszerzenie DCEVM, które obsługuje wiele środowisk Java (przeładuj definicję bean wiosennych, mapowanie encji Hibernacja, konfiguracja poziomu rejestratora, ...).
Istnieje również wiele dokumentacji, jak skonfigurować DCEVM i skompilowane pliki binarne dla Java 1.7.
źródło
DCEVM obsługuje ulepszone redefinicje klas i jest dostępny dla obecnych JDK7 i JDK8.
https://github.com/dcevm/dcevm/releases
HotswapAgent to darmowa alternatywa dla JRebel i obsługuje DCEVM w różnych środowiskach.
http://hotswapagent.org/
źródło
Na wiosnę chłopaki, używane do przeładowywania Grails, ale działa również z Javą:
https://github.com/SpringSource/spring-loaded
źródło
Napisałem artykuł o DCEVM : Spring-mvc + Velocity + DCEVM
Myślę, że warto, ponieważ moje środowisko działa bez żadnych problemów.
źródło
Pracowałem nad projektem open source, który pozwala na gorące zastępowanie klas ponad to, na co pozwala hot swap: https://github.com/fakereplace/fakereplace
To może, ale nie musi, działać, ale każda opinia jest mile widziana
źródło
Możesz rzucić okiem na to:
W tej chwili pozwala to tylko na ponowne wdrożenie nowo skompilowanej treści metody bez ponownego uruchamiania aplikacji. Wszystko, co musisz zrobić, to uruchomić go za pomocą debugera. Próbowałem w Eclipse i działa świetnie.
Ponadto, jak wspomniał Emmanuel Bourg w swojej odpowiedzi ( JEP 159 ), istnieje nadzieja na poparcie dodawania supertypów oraz dodawania i usuwania metod i pól.
Odniesienie: Oficjalny dokument Java 135217: Niezawodność, dostępność i łatwość serwisowania
źródło
JRebel jest bezpłatny. Nie kupuj tego Wybierz opcję „bezpłatny” (przycisk opcji) na stronie „kup”. Następnie wybierz „Społecznościowe”. Po rejestracji otrzymasz w pełni funkcjonalny klucz licencyjny JRebel. Następnie możesz pobrać JRebel lub użyć klucza we wbudowanej wersji IDE. Haczyk (tak, jest haczyk), musisz pozwolić im publikować w Twoim imieniu (reklamować) raz w miesiącu na osi czasu FB lub na Twitterze. Dałem im moje konto na Twitterze, bez biggie, nigdy go nie używam i nikt, kogo znam, tak naprawdę go nie używa. Zaoszczędź 260 $.
źródło