Certificazione SCJP 5.0, la mia esperienza.

Ciao, volevo condividere con voi la mia esperienza su quello che è un passaggio cruciale della carriera di ogni sviluppatore Java, la certificazione Programmer.

Ho cominciato da Marzo 2007 a prepararmi per tale obiettivo; googlando e sotto suggerimento dei colleghi ho trovato le informazioni principali su argomenti e libri su JavaRanch il sito di riferimento per le certificazioni.

Consiglio spassionato è di registrarsi e di utilizzare il forum per qualsiasi domanda/dubbio : troverete persone disponibili adi aiutarvi e a consigliarvi.

Il libro che ho utilizzato per prepararmi è questo, libro di riferimento per la certificazione.

La mia esperienza di Java risale al “lontano” 2002, anno in cui all’università cominciavo a cimentarmi con i primi progetti. Utilizzo quindi accademico fino a Novembre 2004 quando ho intrapreso il lavoro e ho cominciato ad applicare sul campo quello che avevo imparato.

Il mio training è avvenuto all’interno di un gruppo di sviluppo della società per cui lavoro, e quindi ho colmato le lacune di programmazione/sviluppo con l’apprendimento sul campo.

Quando ho intrapreso lo studio per la certificazione (marzo 2007) quindi avevo circa 2 anni e mezzo di esperienza lavorativa su Java, di cui circa 6 mesi su JEE e il rimanente su JSE.

Il primo approccio è stato misurare la mia preparazione rispetto al requisito dell’esame con degli esami mock: e devo dire che mi sono sentito abbastanza impreparato rispetto a quanto richiesto. Se avessi dovuto dare quindi l’esame senza preparazione ma solo con la mia esperienza lavorativa sicuramente non l’avrei passato.

Ho quindi cercato di pianificare una roadmap per la preparazione: come consigliato dagli utenti di JavaRanch, studiando solo nei week-end, ho stimato il tempo necessario in 4/6 mesi e devo dire che la stima è stata accurata.

Più studiavo e più mi sentivo di aver costruito una preparazione lavorativa che teneva conto solo delle cose che mi servivano per raggiungere l’implementazione dei requisiti.

A forza di utilizzare framework vari, applicare design patterns e cercare di disegnare una architettura modulare che tenesse conto dei principi OO mi ero perso le basi.

E in effetti questa è stata l’occasione giusta per riscoprirli.

Gli innumerevoli vantaggi a livello tecnico sono rappresentati dalla maggiore padronanza di tutte le sottigliezze che stanno dietro a un linguaggio di programmazione e in particolare una conoscenza approfondita di argomenti essenziali quali:

  1. IO e Serialization
  2. Collection framework
  3. Generics
  4. Inner Classes
  5. Threads e concorrenza

Il mio approccio per lo studio è stato quello di studiare ogni capitolo facendo i test per argomento che si trovano sul libro di Kathy Sierra. Dopo di che negli ultimi 10 giorni oltre a un ripasso generale ho cominciato a fare prove di esame.

Mi sono appoggiato al kit della Whizlabs che ho trovato ottimo come soluzione: si compone di vari moduli tra cui:

  1. un esame diagnostico per la valutazione della preparazione pre esame
  2. 4 esami pratici di 72 domande sullo stile di quello della Sun
  3. 1 esame finale

Devo dire che costa leggermente, ma sicuramente è uno strumento essenziale per prepararsi adeguatamente.

Ora come passo “obbligato” spero l’anno prossimo di poter proseguire con una delle certificazioni successive; pensavo alla SCJD che tra tutte sembra la più versatile.

Se state leggendo fino a qua probabilmente è perchè cercate informazioni utili sulla preparazione e quindi non mi rimane altro che augurarvi buono studio e in bocca al lupo per la Programmer 🙂

Mazi

Advertisements

ClassLoader.loadClass() e Java 6.

E quale giorno migliore del mio ultimo di lavoro su Java per imbattermi in un baco da 10 e lode? 😀

Praticamente stavamo provando a far girare la TestSuite di Jade su Java 6 (glassFish) e ci siamo scontrati su questo problema, come mostrato nel piccolo esempio qui sotto:

ClassLoader classLoader = ClassloaderTest.class.getClassLoader();

Class<?> className = classLoader.loadClass(“[Ljava.lang.Object;”);

dove [Ljava.lang.Object; è la rappresentazione sotto forma di stringa di un array di Object, come restituito se si esegue questo codice:

new Object[0].getClass().getName();

La cosa bella è che il codice sovrastante funziona con Java 5 ma non con Java 6.

Googlando un pò ho scoperto che questo interessante articolo che spiega l’arcano.

Il nocciolo della questione è che il metodo ClassLoader.loadClass di Java 5 era più lasco di quello di Java 6 che invece implementa in maniera più restrittiva la Java Language Specification.

Infatti loadClass è definito per funzionare sui “binary names”, che la JLS definisce come classi e interfacce, ma non come array. Se si vuole far caricare al ClassLoader una classe s, e s potrebbe essere la rappresentazione sotto forma di stringa di un array, allora bisogna usare Class.forName(s, false, classLoader).

Mazi