Hotswap e alternative?


15

Fin dai primi anni della mia vita universitaria, ho usato Java e il problema più grande che abbiamo è assolutamente meno produttivo di altre lingue interpretate. Tutti sono sicuri che java sia uno dei migliori linguaggi compilati.

Tuttavia, né Sun né Oracle hanno compiuto sforzi sufficienti per risolvere questo problema. Uno dei problemi è, ovviamente, il ricarico della classe.

Gli ultimi tentativi della comunità di risolvere questo problema sono il progetto DaVinci Hotswap , JRebel , PlayFramework . Tuttavia, al momento della stesura di questo articolo non erano ancora maturi (imo) e nativi. Alcuni di loro non sono pronti per le imprese, alcuni non sono compatibili con tutti gli IDE, altri sono progetti universitari immaturi. La road map e anche Java pronto per gli sviluppatori sono pronti, ma la comunità Java non ha ancora una soluzione per la ricarica della classe al volo.

È così difficile per Oracle sforzarsi di risolvere questo problema? Perché il ricaricamento di classe non è stato ancora implementato in modo nativo?


2
In realtà JRebel è completamente pronto per le aziende e ha un ottimo supporto IDE, anche se non è gratuito.
CarlosZ,

@CarlosZ Davvero? Ho usato IntelliJ IDEA con JRebel dalla prima beta alla serie 3.x. Invece di "questo", devi usare "quello". Nel forum di ogni versione vedrai molti problemi riguardanti il ​​plugin intelliJ. Ma l'esperienza peggiore è stata problemi di debug. Il debugger potrebbe connettersi molto tardi. E abbiamo avuto enormi problemi. Come utente intellJ ho un'esperienza concreta riguardo a JRebel in IDEA. E ovviamente pagare è anche un'altra questione.

@CarlosZ È davvero una domanda, sono curioso di sapere perché è difficile implementare la ricarica della classe in Java in modo nativo.

Risposte:


4

Che dire di JEE / J2EE? Questo è stato rilasciato per la prima volta 12 anni fa. Questo è supportato direttamente da Sun / Oracle e da molti altri fornitori.

Che dire di OSGi e? La sua prima uscita è stata quasi 11 anni fa. Eclipse (un IDE) è costruito su di esso, Glassfish di Sun / Oracle e Apache Felix lo usano ampiamente. Puoi usarlo con Spring-OSGi.

Non è stato supportato nativamente in Java SE perché le applicazioni aziendali sono state deliberatamente supportate dai server delle applicazioni come prodotti separati.


@Peter Lawrey 1) Lawrey Per quanto riguarda J2EE, esiste una soluzione concreta? Non riuscivo a vedere il tuo punto? 2) Per classificare il ricaricamento pensi che OSGI dovrebbe essere usato? Che dire di Jigsaw? Anche a livello di JCR, non esiste ancora un consenso :). L'OSGI sta affrontando un'area molto diversa rispetto al ricaricamento delle classi. 3) Non riuscivo a capire la parte JavaSE, potresti spiegarmi un po 'di più? E si ricorda che il progetto DaVinci HotSwap è sponsorizzato da Oracle. Significa, almeno per me, che sono anche desiderosi di tale soluzione.

Dipende da cosa ti aspetti che faccia l'hot swap. Se si desidera hot swap per il debug, è possibile farlo da un po 'di tempo. Tuttavia, per soluzioni aziendali solide hot swap di questa natura non è appropriato e lo sono solo le versioni controllate. In questo caso, JEE e OSGi consentono di aggiornare le applicazioni in esecuzione che presentano gli stessi vantaggi ma con il controllo che ci si aspetterebbe da un ambiente di produzione. Ad esempio, nel mio contenitore OSGi posso rimuovere le classi e sostituirle con versioni più recenti senza arrestare l'applicazione. Di cosa hai bisogno che OSGi non fa?
Peter Lawrey,

1) L'implementazione di riferimento JEE / J2EE potrebbe essere un punto di partenza, ma ci sono molti JEE più popolari e più facili da usare. Il punto è che puoi sostituire il codice in un sistema in esecuzione. Cosa ti serve di più in un ambiente di produzione / controllato.
Peter Lawrey,

1
2) Ricaricare le classi è l'unica cosa per cui utilizzo OSGi. Cosa vedi come uso principale per OSGi?
Peter Lawrey,

3) Il punto centrale di JEE è che questo è lo spazio per il supporto di applicazioni aziendali. JSE è la piattaforma sottostante che può essere utilizzata per JEE o altre applicazioni.
Peter Lawrey,

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.