PDA

View Full Version : [Java] Cominciare


The_ouroboros
30-11-2012, 09:42
Salve a tutti,
per esigenze lavorative (Oracle DB, Tomcat,Jboss) mi tornerebbe utile imparare il Java.
Sul sito Oacle mi sono scaricato sul Kindle tutti i tutorial che appaiono nella loro documentazione (anche se su opensuse ho l'openjdk).

Quello che vorrei sapere è se avete qualche libro/sito/tutorial/howto da consigliarmi per imparare il linguaggio.

Di mio, come background, ho qualche esperienza di c,c++( università),python.
Uso anche perl e bash (per motivi sistemistici e in congiunzione con sed/grep/awk ed espressioni regolari)


A voi la parola e grazie per ogni vostro suggerimento

ingframin
30-11-2012, 10:13
Piu' che cominciare alcuni ti suggeriranno di smettere :yeah: :asd:


Un bel libro e' questo qui:
http://www.apogeonline.com/libri/88-503-2318-2/scheda
Altrimenti ci sono i libri di Dietel e Dietel che sono fatti bene (li sta usando mia sorella all'uni).

Un altro buon manuale e' quello di Claudio Desio Cesari
http://www.claudiodesio.com/

The_ouroboros
30-11-2012, 10:17
anche, e soprattutto, in inglese ( gli O'Reilly non li schifo mai) i libri.
E anni che non leggo libri informatico/tecnici in italiano.

shinya
30-11-2012, 11:07
Sul primo libro non saprei, ce ne sono talmente tanti che boh...
Sul SECONDO libro però la risposta giusta è Effective Java 2nd edition.
E il TERZO libro è Java Concurrency in Practice.

The_ouroboros
30-11-2012, 11:12
Sul primo libro non saprei, ce ne sono talmente tanti che boh...
Sul SECONDO libro però la risposta giusta è Effective Java 2nd edition.
E il TERZO libro è Java Concurrency in Practice.

:)
Ci do un occhio in pausa pranzo.

banryu79
30-11-2012, 11:29
E il TERZO libro è Java Concurrency in Practice.
Un must... specie visto lo schifo di modo in cui viene spiegta la programmazione in multithreading in molti testi di "serie B" che ho letto (tipo partendo in quarta senza neanche accennare per sbaglio al memory model :D )

The_ouroboros
30-11-2012, 11:37
Un must... specie visto lo schifo di modo in cui viene spiegta la programmazione in multithreading in molti testi di "serie B" che ho letto (tipo partendo in quarta senza neanche accennare per sbaglio al memory model :D )

a casina ho il mio caro Tanenbaum a disposizione :D

banryu79
30-11-2012, 11:45
a casina ho il mio caro Tanenbaum a disposizione :D
Sì bene, ma parlavo del memory model del linguaggio Java :D

The_ouroboros
30-11-2012, 11:48
Sì bene, ma parlavo del memory model del linguaggio Java :D

ottima osservazione da parte tua, superficialità da parte mia :stordita:

P.S: l'sql fa male se preso in dosi massiccie :rolleyes:

masteryuri
30-11-2012, 13:49
Ti consiglio prima un'infarinatura generale. Partire fin da subito con un libro troppo dettagliato potrebbe essere eccessivamente oneroso.

A tal proposito posso consigliarti un blocco di slide che la prof. di Ingegneria Del Software ci ha fornito per il medesimo esame, il cui scopo era quello di renderci capaci di creare applicazioni Java che interagissero con un db mysql.
Il purpose quindi se non è identico è simile al tuo, considerando inoltre che le persone del mio corso venivano tutte dal C/C++ imho potrebbe esserti utile una lettura prima di immergertici completamente. Detto tra noi secondo la docente le slide sarebbero anche bastate per fare ciò che dovevamo essere in grado di fare, anche se io ho preferito integrare con qualche capitolo di Thinking in Java (http://www.mindview.net/Books/TIJ/) di Bruce Eckel.

Se sei interessato al blocco dimmelo in pvt che te le mando :)

vincenzo83
03-12-2012, 08:15
Io iniziai con questo libro: Core Java
In italiano è disponibile la 7 edizione: link (http://www.pearson.it/cerca/Core%2BJava/%252F?ordering=&searchphrase=exact) (se vuoi una versione più recente devi comprare quella inglese).

Non avevo esperienza di programmazione ad oggetti e all'inizio trovai questo libro un po' ostico. Fortunatamente trovai il libro gratuito di Claudio De Sio Cesari: http://www.claudiodesio.com/download/oo_&&_java_5.zip (home del sito: www.claudiodesio.com (www.claudiodesio.com/))
Fidati, questo libro spiega veramente bene i fondamenti di Java (consiglio fortemente una lettura indipendentemente da libro che deciderai di comprare).

Esiste anche una versione cartacea di questo libro : link (http://www.hoepli.it/libro/manuale-di-java-7/9788820344771.html) ... ma non so se ci sono differenze con quella gratuita (forse non è necessario comprarlo).

In definitiva, mi trovai veramente bene con queste due libri:

Il Libro di Claudio De Sio Cesari che fornisce i fondamenti di questo linguaggio (ma forse scarno di esempi).


Core Java ricco di contenuti ed esempi. Veramente ottimo. Di Core Java esistono due volumi, io presi entrambi ... ma il secondo in pratica l'ho utilizzato solo per un paio di cose ... gli altri argomenti avanzati, per i miei scopi, non erano necessari (potevo evitare di comprarlo). Mi ripeto, il primo impatto con questo libro non fu dei migliori ... riuscii ad apprezzarlo molto solo dopo aver letto quel libro gratuito.

The_ouroboros
03-12-2012, 08:25
grazie mille per il tuo report :)

vincenzo83
03-12-2012, 09:25
grazie mille per il tuo report :)

Di nulla; un'ultima cosa:
gli autori di "Core Java" sono Cay S. Horstman e Gary Cornell.
Fai attenzione che Horstman ha scritto anche un altro libro di Java intitolato "Concetti di informatica e fondamenti di Java" la cui copertina è simile ma, ovviamente, sono libri diversi... è semplice confondersi. Come hai potuto notare, nel messaggio precedente, ho riportato il link della casa editrice del libro.

The_ouroboros
03-12-2012, 09:39
Di nulla; un'ultima cosa:
gli autori di "Core Java" sono Cay S. Horstman e Gary Cornell.
Fai attenzione che Horstman ha scritto anche un altro libro di Java intitolato "Concetti di informatica e fondamenti di Java" la cui copertina è simile ma, ovviamente, sono libri diversi... è semplice confondersi. Come hai potuto notare, nel messaggio precedente, ho riportato il link della casa editrice del libro.

Bene. Cosi appena mi arriva lo stipendio mi lancio in una bella "librata" natalizia :D

van9
03-12-2012, 17:15
Salve a tutti,
per esigenze lavorative (Oracle DB, Tomcat,Jboss) mi tornerebbe utile imparare il Java.
Sul sito Oacle mi sono scaricato sul Kindle tutti i tutorial che appaiono nella loro documentazione (anche se su opensuse ho l'openjdk).

Quello che vorrei sapere è se avete qualche libro/sito/tutorial/howto da consigliarmi per imparare il linguaggio.

Di mio, come background, ho qualche esperienza di c,c++( università),python.
Uso anche perl e bash (per motivi sistemistici e in congiunzione con sed/grep/awk ed espressioni regolari)


A voi la parola e grazie per ogni vostro suggerimento

[disclaimer: non sono esperto di J2EE/Java EE, qualcuno eventualmente correggerà i miei consigli al riguardo. Il mio punto di vista è quello di esperto del linguaggio Java (ho lavorato agli internals di un paio di VM) e questo è il quarto anno che mi occupo per il 70% del mio tempo di programmazione funzionale e verifiche formali, compreso un pò di consulting e training sulla piattaforma Java e linguaggi annessi, first-class citizens e non]

La prima cosa che ti suggerisco è di valutare molto bene se investire tempo e risorse su Java lato enterprise. Non è un ambito particolarmente difficile/impegnativo, ma lo stack tecnologico è vastissimo e ci si impiega tanto per divenire realmente produttivi, con l'aggravante che c'è molta competizione e il mercato è piuttosto saturo etc. Il consiglio quindi è di valutare e pianificare bene.

Detto questo, nella pratica. Non hai specificato da che livello effettivamente parti, ovvero di che consistenza sono queste esperienze con c, c++, python: la cosa può fare molta differenza. Nel mentre, ti propongo alcune risorse tra le prime che mi vengon in mente così su due piedi. Ma prima alcune idee-chiave:

- La Piattaforma Java è il tuo target - non il solo linguaggio Java. Benchè la perfetta conoscenza del linguaggio sia ("era", più precisamente) necessaria praticamente, la vera discriminante tra gli esperti è la conoscenza di cosa effettivamente fa la JVM con il bytecode. Trovi diversi video più o meno approfonditi sulla JVM (tra i migliori quelli con gli esperti di Azul Systems).

- Il linguaggio Java e la Class Library sono una cosa, l'OOP un'altra. Mai confondere idee e principi con le tante possibili implementazioni.

- Inizia da subito a familiarizzare con il concetto di "component-oriented" software.

- Una critica del tutto personale. Java e il mondo del component-oriented sono per me tra le cose meno eccitanti a cui/con cui puoi lavorare in informatica, e sono tra i motivi per cui mi sono tenuto sempre alla larga dal mondo J2EE prima e EE dopo, salvo piccole partecipazioni fatte più per amicizia che per lucro. La JVM invece, è una gran bella cosa e date alcune precedenti esperienze con virtual machines che ebbi mi ha subito interessato.
Se scegli questa strada, non mancare di guardarti Scala, Clojure e gli altri linguaggi sulla JVM perchè, anche se all'estero li usiamo già quando possibile, prima o poi sbarcheranno anche nella addormentata e retrograda italia. E' solo questione di tempo - garantito. E non sarebbe male ritrovarsi già piuttosto esperti prima degli altri su questi strumenti.


Per libri e risorse:

* Java Precisely - P. Sestov
Meno di 200 pagine, adatto al programmatore esperto che vuole una panoramica completa e ricca di esempi sul core del linguaggio. Con il poco che costa io non me lo farei mancare comunque.
Alternativa: non penso ce ne sono. La reference del linguaggio è ovviamente più completa, ma anche "pesante" da approcciare all'inizio (e spesso nella programmazione applicativa diciamo pure che non se ne sente nemmeno il bisogno).

* Agile Java - J. Langr
Un gran bel libro, ti insegna a programmare e fare design object-oriented in Java attraverso il metodo Test-Driven, con una serie di lezioni più centrate a completare ed estendere il codice che non ad elencare le features del linguaggio stesso.
Alternativa: buoni testi come Horstmann coprono maggiormente il core del linguaggio ma sono anche impostati in modo più tradizionale (e quindi possono risultare meno interessanti da seguire se già si programma discretamente).

* Thinking in Java - Eckel
Se hai una buona conoscenza di C o C++, questo è ideale per fare la transizione.
p.s. sul sito di Eckel trovi un suo corso di C (mi pare anche avesse dei video) che lui raccomandava come propedeutico al libro, nel caso si dovesse rinfrescare un pò il C.

* http://www.cl.cam.ac.uk/teaching/1213/OOProg/
"... And that's what we saw when the Java practicals first came into being:
students learnt to program in Java, not how to use the Object Oriented
Programming (OOP) concepts. And thus the OOP course was born...
Mostly we will be using Java to implement our ideas."
Scindere i concetti generali dalle implentazioni che ti ritrovi ad usare nel dato momento è una delle cose più importanti da considerare. Sullo stesso sito del lab trovi anche Programming in Java e Further Java.

* http://www.cs.berkeley.edu/~jrs/61b/
http://inst.eecs.berkeley.edu/~cs61b/fa12/
Se ai fini di conoscere meglio il linguaggio che impari sei il tipo che trova utile reiplementare per esercizio data structures e qualche algoritmo di base, questi corsi fanno un percorso abbastanza classico e hanno anche i video delle lezioni online. (Tra i due io ho un piccolo bias verso Hilfinger, perchè sono stato a Berkeley e ho seguito parte di un corso con lui - fa un sacco ridere quando fa lezione e gli esercizi dovrebbero essere piuttosto impegnativi). E' un pò il due piccioni con una fava, impari Java implementando e ripassando roba utile nel caso uno ne abbia voglia/esigenza.

Bloch, per capire le varie falle ed idiosincrasie del linguaggio, te l'hanno già indicato. Doug Lea, Goetz e company per la concurrency pure. Ci sarebbe altro da discutere ma meglio prima sentire da te il resto sul tuo percorso.


p.s. ti anticipo quello che puoi fare anche da subito su Java EE per iniziare a prenderci la mano.
Preleva Tomcat, configura le minime variabili d'ambiente e inizia a guardati i primi esempi di uso di JSP compresi nella docs. Troverai anche esempi di servlets completi, studiali insieme a come farne il deploy (sempre nella doc).
Più avanti poi, con un pò di esperienza su Java, ti scrivrai la prima servlet facendo l'extend della classe HttpServlet e avrai la tua prima webapp funzionante. Altri ti suggeriranno di partire subito con un framework, ma per esperienza ti dico che chi fa così parte più confuso e ci mette più tempo a capire le fondamenta del tutto.

Ricapitolando, parole chiave:
Java Platform -> JRE, JDK, JSE, JVM e HotSpot, java.exe, javac.exe
Java EE -> Tomcat, Servlets, JavaServer Pages, WAR archive, HttpServlet class

The_ouroboros
03-12-2012, 17:29
Grazie mille ,completissimo. Mi hai dato molto cui pensare.

Inviato dal mio HUAWEI U8825-1 con Tapatalk 2

The_ouroboros
03-12-2012, 17:34
Cmq sono partito con il c e poi fatta qualche adt ho visto un poco di oop in c++.
Per lavoro scrivo in bash e perl ma per necessità mi sto spostando verso tomcat/jboss/oracle db.

Inviato dal mio HUAWEI U8825-1 con Tapatalk 2

zanardi84
04-12-2012, 09:30
L'Horstmann è ottimo, però ti obbliga a seguirlo passo passo perchè gli esempi del codice sono sempre presi dai capitoli precedenti ai quali si aggiunge qualcosa e nel momento in cui prendessi un capitolo da solo saresti obbligato a sfogliare quelli precedenti per capire dove sono arrivati.

Il mio consiglio è quello di prendere sì l'Horstmann, ma di affiancarlo ad un libro che sia meno ricco, ma che abbia un approccio passo passo.
A questo scopo di consiglio il Pighizzini Ferrari "Dai fondamenti agli oggetti".
Nella prima parte insegna a maneggiare gli oggetti, quindi, partendo dalla teoria della programmazione object oriented, ti insegna a chiamare i metodi, usare l'ereditarietà, l'overloading e il polimorfismo. Spazio anche alle prime strutture dati e agli enumerativi. Il tutto usando delle classi che sono state create dagli autori del testo.
Nella seconda parte si passa alla fase di creazione del codice. Viene spiegato come sono state create le classi usate nella prima parte insistendo su ereditarietà e polimorfismo.
Nella terza si affronta l'uso delle strutture dinamiche, alberi e liste, ma credo che sia la parte meno curata e per questo torna utile hostmann.

The_ouroboros
04-12-2012, 11:02
avrei quasi deciso per

)Java Precisely di Peter Sestoft

e/o

)Agile Java: Crafting Code with Test-Driven Development di Jeff Langr

e

Core Java Volume I--Fundamentals di Horstmann, Cay S. ; Cornell, Gary (edizione 2012, 9th)


Ora mi serve qualcosa su Jboss/Tomcat e cosi saprò cosa "Babbo Natale" mi porterà