2009-12-04 14 views
8

Stiamo pensando di passare da un prodotto di grandi dimensioni affidandoci a JVM di Sun a JRockit. Non sono abbastanza ingenuo da credere che questa sarà una transizione senza intoppi (anche se mi piacerebbe sbagliarmi).Avvertenze da guardare in transizione da Sun JVM a JRockit?

Quali problemi dovremmo prestare attenzione o concentrare i nostri test di regressione?

+0

Il problema principale con JRockit è che la sua instabilità è difficile da riprodurre. I semplici test di regressione non rivelano i suoi orrori. È solo con un carico di produzione elevato che si verificano sporadici fili appesi. Perché mai passeresti da Sun a JRockit? – erickson

+0

Dopo alcuni tentativi di ricerca di JRockit ho finito qui: http://www.shudo.net/jit/perf/ Dove ci sono alcuni test di prestazioni impressionanti che mostrano server Java più veloce di C compilato con GCC (Visual C++ è ancora più veloce nella maggior parte dei casi.) +1 impressionante ... Ma temo che JRockit non sembri molto bene .. –

+0

Sembra un tentativo di estrarre più prestazioni da un'app gettando un po 'di denaro e tecnologia. Al tuo posto (facile per me da dire!) Cercherò di educare la tua direzione per capire che i presunti guadagni arrivano al prezzo dell'instabilità, che ha anche un costo. È molto spesso possibile ottenere più prestazioni con meno rischi attraverso le pratiche comprovate di profilazione, miglioramento degli algoritmi e ricerca di opportunità per aumentare la concorrenza. –

risposta

3

Beh, certo che ci sono test unitari giusti? :-)

Ho usato JRockit un po 'solo per "divertimento" e non ho mai avuto problemi. Da quello che posso vedere è usato in un certo numero di app di una grande varietà, quindi dovrebbe probabilmente funzionare. Sembra che abbia anche passato il JCK (i test di compatibilità di Sun), quindi dovrebbe essere fluido.

Aree che avrei in mente per la rottura sarebbe:

  • garbage collector
  • codice nativo (JNI) impiego del sistema di
  • di file, filettatura, ecc ... (a meno che non usano il sole codice libreria)

Il file system, il threading, ecc. sono tutte le parti della VM che si integrano con il sistema operativo sottostante. Se usano il codice Sun, meno possibilità di problemi.

Scommetto che la transizione procede senza intoppi.

+0

Esattamente: non usano il codice nativo di Sun per I/O socket e threading. Usano il loro ... perché è molto più veloce (non!). Sfortunatamente questo miglioramento della velocità trascurabile è accompagnato da una forte instabilità. Spero che quando Oracle completerà l'affare Sun stermineranno JRockit. – erickson

+0

@sylvarking: qualsiasi link alle storie dell'orrore di instabilità sarebbe estremamente utile :) – Uri

+0

Siamo spiacenti, la mia opinione si basa su un'esperienza personale aneddotica con una grande applicazione per un cliente che non apprezzerebbe la mia condivisione. – erickson

1

Come dico sempre: C'è solo un modo per scoprirlo: fallo!

La transizione dovrebbe prendere su ciò che ... 30 minuti (è sufficiente installare JRockit e modificare il percorso da qualche parte giusto?)

si dovrebbe essere ok.

Ho avuto problemi in passato con JDBC che erano estremamente strani (perché il codice problematico era nel riferimento PreparedStatement che come tutti sappiamo è solo un'interfaccia. Il driver underlaying era esattamente lo stesso.) Ho questo strani messaggi di errore dappertutto sulla dichiarazione insert into.

Per essere onesti c'era un'altra variabile qui, stavo migrando da Java 1.2.2 a Java (JRockit) 1.4 e ancora, penso che non avrei dovuto avere tutti quei problemi.

Ma ancora, dovrebbe essere abbastanza veloce da scoprire. Nel mio caso ho visto che ho avuto questi problemi in < 5 minuti e dal momento che si è trattato solo di un esperimento (ho partecipato a questa giornata degli sviluppatori BEA quando hanno parlato delle fantastiche funzioni di JRockit) l'ho appena respinto.

Problemi correlati