Ridistribuire alternative a JRebel [chiuso]


190

JRebel consente di ridistribuire il codice appena compilato senza riavviare l'applicazione. Mi chiedo se ci siano alternative (gratis?). La pagina FAQ risponde a questa domanda, ma sono sicuro che sia distorta nei confronti di JRebel. Questa domanda è stata posta un anno fa su questo sito, ma la sto riportando per vedere se qualcuno ha nuove informazioni.

A proposito, mi piace molto JRebel, ma se esiste un'alternativa gratuita, sono disposto a provarlo.

Una nota aggiuntiva, sto lavorando a un progetto open source e offrono licenze gratuite per un anno a persone che possono dimostrare di essere su un progetto open source. Il che funziona benissimo per me (www.kuali.org), ma non parteciperò a quel progetto per sempre.


53
Buona domanda. Abbiamo cercato anche un'alternativa a JRebel, poiché il loro reparto vendite è estremamente invasivo. Non abbiamo problemi a pagare per un prodotto come JRebel, ma non quando infastidiscono i nostri sviluppatori e il reparto IT 24/7.
neu242

4
Esiste un'alternativa a jRebel con il proprio ZeroTurnAround: la versione gratuita di Jrebel per progetti open source e casi di studio ... my.jrebel.com
dellasavia

2
So che è una risposta tardiva, puoi dare un'occhiata a Spring Loaded , che è un agente JVM per ricaricare le modifiche ai file di classe mentre è in esecuzione una JVM. Trasforma le classi in fase di caricamento per renderle suscettibili di ricaricarle in seguito. A differenza di "hot code sostitutivo" che consente modifiche semplici solo quando è in esecuzione una JVM (ad esempio modifiche ai corpi dei metodi), Spring Loaded consente di aggiungere / modificare / eliminare metodi / campi / costruttori e altro ...
Simple-Solution

Debugger Eclipse: sostituisce immediatamente il tuo codice live.
user1050755

Risposte:


97

Dai un'occhiata a DCEVM , è una modifica della VM HotSpot che consente ridefinizioni di classe illimitate in fase di esecuzione. È possibile aggiungere / rimuovere campi e metodi e modificare i super tipi di una classe in fase di esecuzione. Le funzionalità di DCEVM potrebbero essere integrate in un futuro aggiornamento di Java come parte di JEP 159 .

I binari disponibili sul sito originale sono limitati a Java 6u25 e alle prime versioni di Java 7. Il progetto è stato biforcato su Github e supporta le versioni recenti di Java 7 e 8. Il manutentore fornisce i binari per VM a 32/64 bit su Windows / Linux. A partire da Java 11 il progetto si è spostato in un nuovo repository GitHub e ora fornisce anche file binari per OS X.

DCEVM è pacchetto per Debian e Ubuntu, è comodamente integrato con OpenJDK e può essere invocato con java -dcevm. Il nome del pacchetto dipende dalla versione del JDK predefinito:


5
Funziona bene, l'ho trovato più veloce e consuma meno memoria rispetto a JRebel. L'unica limitazione è attenersi a Java 6u25.
Emmanuel Bourg,

3
Grazie mille. Ho rovinato tutto il giorno cercando di far funzionare jRebel come desiderato. DCEVM venne in soccorso.
alehro,

4
Ecco le istruzioni complete su build e installazione per DCEVM su JDK 7u45 e MacOSX: neu242.livejournal.com/52962.html
neu242

1
JEP 159 non fa parte di JDK 8. Potrebbe essere stato posticipato a JDK 9 ma nessuna conferma ancora.
KrishPrabakar il

5
Hai trovato alcuni file binari JVM 1.7 qui: dcevm.nentjes.com, quindi non è necessario correggere la tua JVM. Ho provato quello win64 e ha funzionato benissimo per me. Ho anche scritto sul blog qui se hai bisogno di maggiori dettagli: javainformed.blogspot.com/2014/01/jrebel-free-alternative.html
dal

42

Hotswap Agent è un'estensione di DCEVM che supporta molti framework Java (ricaricare la definizione del bean di primavera, la mappatura delle entità di Hibernate, la configurazione a livello di logger, ...).

C'è anche molta documentazione su come impostare DCEVM e binari compilati per Java 1.7.


5
Ora hanno un sito web dedicato: hotswapagent.org . Il progetto è abbastanza nuovo ma sembra funzionare abbastanza bene.
Didier L

Ho seguito questo tutorial per integrarlo in Eclipse dopo averlo disinstallato : tirthalpatel.blogspot.fr/2014/06/… funziona come un incantesimo
jpprade,

@edudant Dopo aver installato 'Agente Hotswap', è necessario installare DCEVM? Perché ho installato DCEVM usando "sudo apt install openjdk-11-jre-dcevm" in Ubuntu 19.04 e anche il plugin in IntelliJ Ultimate 2019.1.3. Se l'installazione di "Hotswap agent" non fa altro che svolgere il lavoro di JRebel, a che serve DCEVM !?


20

Dai ragazzi della primavera, usato per ricaricare Grails ma funziona anche con Java:

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


3
Non voglio lamentarmi, ma caricato a molla non supporta il ricaricamento delle dipendenze.
lbednaszynski,

Come ricordo, ci sono proprietà di sistema che puoi impostare per dirgli quali pacchetti rendere ricaricabile. Ha altri limiti e probabilmente preferirei andare con DCEVM in ogni caso.
Ramon,

1
"quali pacchetti rendere ricaricabile" - corretto. Il problema sottolineato da @lbednaszynski è che non ricaricherà i JAR dipendenti. Questo è essenziale per i progetti multi-modulo Maven.
Marcel Stör,

Questo progetto è in soffitta per ora!
jpmottin,



4

Potresti dare un'occhiata a questo:

Supporto HotSwap: l'architettura orientata agli oggetti della VM HotSpot Java consente funzionalità avanzate come la ridefinizione della classe al volo o "HotSwap". Questa funzionalità offre la possibilità di sostituire il codice modificato in un'applicazione in esecuzione tramite le API di debugger. HotSwap aggiunge funzionalità all'architettura di debugger della piattaforma Java, consentendo di aggiornare una classe durante l'esecuzione mentre è sotto il controllo di un debugger . Consente inoltre di eseguire operazioni di profilazione mediante hotswapping nelle versioni dei metodi in cui è stato inserito il codice di profilazione.

Per il momento, ciò consente solo di ridistribuire il corpo del metodo appena compilato senza riavviare l'applicazione. Tutto quello che devi fare è eseguirlo con un debugger. L'ho provato in Eclipse e funziona magnificamente.

Inoltre, come menzionato da Emmanuel Bourg nella sua risposta ( JEP 159 ), c'è speranza di avere supporto per l'aggiunta di supertipi e l'aggiunta e la rimozione di metodi e campi.

Riferimento: Java Whitepaper 135217: affidabilità, disponibilità e funzionalità


-3

JRebel è gratuito. Non comprarlo Seleziona l'opzione "gratuita" (pulsante di opzione) nella pagina "acquista". Quindi selezionare "Social". Dopo la registrazione, otterrai una chiave di licenza JRebel completamente funzionale. È quindi possibile scaricare JRebel o utilizzare la chiave nella versione integrata degli IDE. La cattura, (sì, c'è una cattura), devi consentire loro di pubblicare per tuo conto (pubblicizzare) una volta al mese sulla tua sequenza temporale FB o account Twitter. Ho dato loro il mio account Twitter, niente male, non lo uso mai e nessuno che conosco lo usa davvero. Quindi risparmia $ 260.


14
C'è ancora un problema. JRebel Social è gratuito solo per uso non commerciale. Sì, certo, non verificheremo se lo stai effettivamente utilizzando per il tuo progetto personale o al lavoro, ma ai revisori potrebbe non piacere se ti vedono abusare del software.
Anton Arhipov,

2
Non suggerirei mai diversamente. In effetti, l'unica ragione per cui ho sollevato questo problema è perché non esiste più una licenza "individuale". Sono stato in grado di convincere la mia azienda a pagare la mia licenza di lavoro. Ho anche pagato una licenza personale, per uso personale, per oltre 3 anni. Ma quando il prezzo a nord di $ 260 all'anno, è diventato poco pratico. Questa è la soluzione migliore per me (e gli altri), ma avrei anche continuato a pagarla se il prezzo fosse ragionevole.
Michael Andrews,

42
Inoltre, il fatto che ogni anno ho bisogno di riacquistare software che ho già acquistato è frustrante. Nessun'altra azienda lo fa. Di solito acquisti un software una volta. Se si opta per l'aggiornamento, quindi lo si acquista di nuovo a prezzo pieno (o forse a un prezzo di aggiornamento, a seconda della società). Ma ciò per cui stai pagando sono le NUOVE funzionalità, non le stesse funzionalità per cui hai già pagato. Sarebbe come se Apple o Microsoft disabilitassero il tuo computer ogni anno fino a quando non avessi pagato di nuovo il sistema operativo. Cibo per la mente.
Michael Andrews,

2
JRebel Social è stato sostituito con myJRebel. È gratuito per uso non commerciale, devi solo consentire la condivisione delle statistiche: my.jrebel.com
Steve Swinsburg,

1
Tutto sommato, JRebel è relativamente economico per una licenza software per sviluppatori.
Jared Hooper,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.