Domanda

ho un'applicazione server - client che gira su java 1.3; voglio passare a java 1.6 passo dopo passo, ovvero i primi client, poi il resto dei client e infine il server ... mi chiedevo che potessi indirizzarmi verso alcuni problemi comuni che possono presentarsi e cosa dovrei occuparmi?

È stato utile?

Soluzione

Sun cerca di mantenere un alto livello di compatibilità con le versioni precedenti, quindi è possibile semplicemente installare la nuova JVM e riavviare l'applicazione con essa.

Un documento che descrive le incompatibilità con le versioni precedenti di Java 1.6 con la versione precedente è qui . Questo documento collega i documenti di compatibilità per Java 1.5 e Java 1.4 . Probabilmente vuoi leggere questi documenti per conoscere possibili insidie.

Java 1.5 e Java 1.6 hanno introdotto nuovi formati di file di classe. Le JVM eseguiranno anche i vecchi file di classe, ma la ricompilazione del codice, specialmente con JDK 1.6, aiuterà la nuova JVM a trarre vantaggio da alcune modifiche per rendere più veloce l'applicazione. Quindi potresti prendere in considerazione la ricompilazione.

Inoltre sono state introdotte alcune nuove parole chiave, vale a dire assert (in 1.4) ed enum (in 1.5) (come già menzionato Yuval). Se usi queste parole come identificatori, la ricompilazione fallirà, ma i vecchi file di classe funzioneranno. Puoi fornire lo switch -source a javac per consentirne la compilazione: ' javac -source 1.3 ' compilerà il codice senza asserire ed enum come parola chiave.

Altri suggerimenti

In cima alla mia testa, cerca i nomi enum e assert nei campi e nelle variabili locali ... Queste parole sono diventate parole chiave in java 1.4 e 5. Il compilatore java 6 li contrassegnerà come errori di compilazione se li vede.

Yuval = Cool

Sun mantiene un elenco di incompatibilità introdotte con ogni nuova versione di Java.

L'ultimo documento per 1.4.2 contiene collegamenti alle note di compatibilità di nuovo a JDK 1.0.

Generalmente, la retrocompatibilità delle JVM di Sun è molto buona, ma non perfetta. Ho visto tre applicazioni molto grandi migrare dall'1.3 all'1.5 e incontrare solo un piccolo numero di problemi, il più grande dei quali era una maschera Swing che entrava in un ciclo infinito di gestione degli eventi e bloccava l'app sotto 1.4

È improbabile che la parte del server provochi problemi, ma ci sono stati cambiamenti abbastanza importanti in Swing, in particolare tra 1.3 e 1.4 - il sottosistema focus è stato completamente riscritto, per esempio.

È ancora possibile che l'app venga eseguita senza problemi, ma dovresti assolutamente fare test approfonditi.

Quando sono passato dall'1.4.2 all'1.5 su una piccola applet su cui ho lavorato, molte cose si sono rotte: l'aggiornamento dello schermo è diventato tutto traballante, gli elementi spostati, ecc.

Sun JRE non mantiene la retrocompatibilità per tutto . A volte, quando gli articoli sono deprecati, scompaiono completamente dopo un periodo di tempo molto breve.

Abbiamo scritto tutto con " stock " Java, usando anche le librerie di Sun.

Ho anche visto diverse applicazioni scritte in puro Java che funzionano bene su una o due piattaforme nella stessa versione di JRE che falliscono su altre con quella versione (il prodotto con cui lavoro ora funziona alla grande su Windows, ok su Mac OS X, decente su Linux, ma non funziona su Solaris - tutti con lo stesso JRE).

Lo spostamento delle versioni non è un semplice passaggio, a meno che l'applicazione non sia veramente piccola.

La mia esperienza è che la compatibilità è piuttosto elevata. Ho trovato solo un'app che non riuscivo a eseguire su una versione corrente. Per qualsiasi motivo (non avendo sorgente, quindi non ho approfondito) che un'app non funzionerebbe con qualcosa di diverso da 1.4.2. Tutto il resto con cui ho mai avuto a che fare (alcuni dei quali abbastanza considerevoli) è arrivato fino a 1.6. Nessuna modifica richiesta.

YMMV ovviamente, quindi dovrai provarlo e vedere ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top