Newsgroup: it.comp.java
Titolo: Java avanzato - manuale

Salve,
mi servirebbe un consiglio per un manuale di Java avanzato ma chiaro e
aggiornato.
In particolare mi serve di:
1) capire come usare e sincronizzare i thread
2) capire come si fanno (bene) le interfacce grafiche
3) Accedere a basi di dati relazionali(MySQL)
4) usare le interfacce di rete(socket e quant'altro)
Ma per usare java.sql.* serve per forza j2EE o si può fare col normale
jdk?
(Non ho ancora provato per la verità).
Grazie in anticipo per i suggerimenti
Franco
PS
Io ero orientato su core java di horstmann

 4) usare le interfacce di rete(socket e quant'altro)
Secondo me devi prenderti 4 libri diversi.
-- 
Andrea Francia
http://www.andreafrancia.it/

Spiacente, ma non ho mai visto un libro che tratti questi argomenti
tutti insieme..
..sarebbe senz'altro un buon libro
per la sincronizzazione dei thread Io posso aiutarti: ho 2 documenti
pdf (che non sono presenti nè su Google nè su Emule) che mi hanno
spiegato con buone parole e ottimi esempi l'argomento.
Io al momento sto lavorando sul tuo punto 4)
Mandami una email se vuoi ricevere quei 2 pdf ciao :)

 Io ero orientato su core java di horstmann
Ah, ma questo non e' un manuale avanzato.... e' un manuale di base che tocca 
molti argomenti, alcuni in modo molto superficiale altri in modo piu' 
approfondito:
http://www.amazon.co.uk/Core-Java-Fundamentals-Addison-Wesley-Technolo/dp/0132354764/ref=sr_1_1?ie=UTF8&s=books&qid=1214343315&sr=1-1
http://www.amazon.co.uk/Core-Java-Advanced-Features-v/dp/0132354799/ref=sr_1_2?ie=UTF8&s=books&qid=1214343315&sr=1-2
io ho letto la versione subito prima di questa. Dipende da cosa ritieni 
avanzato.... il volume 1 e' proprio di base. Il volume 2 accenna concetti 
piu' "avanzati", se vuoi, ma non in modo avanzato.
Tommaso

4) usare le interfacce di rete(socket e quant'altro)
Troppo generica come richiesta. Anche su questo argomento esistono
vaste risorse in rete e libri che trattano nello specifico (vedi
quelli di Stevens).

 4) usare le interfacce di rete(socket e quant'altro)
Inizia col tutorial della sun, poi cerca in rete



Io devo realizzare una classe che si connetta a delle schede
elettroniche via rete(da qui l'esigenza di usare i socket)
e ne legga lo stato su richiesta dell'utente. Queste schede hanno però
anche una sezione di allarmistica, perciò se scoppia un allarme il
processo che lo gestisce deve prendere il sopravvento su tutto il
resto. Pensavo che i thread mi potessero aiutare nella gestione delle
tempistiche, visto che possono essere sincronizzati pensavo di poter
realizzare un semplice scheduler a code multiple con differente
priorità.
Per quanto riguarda i database volevo solo sapere come attivare le mie
query dentro al codice Java,
la base di dati l'ho già progettata e implementata con mysql e
funziona benissimo, però non ho mai scritto un programma per gestirla,
visto che le mie conoscenze si limitano al corso di basi di dati che
ho seguito all'uni.
Per quanto riguarda la programmazione di rete ho trovato tanti
documenti, ma tutti molto stringati. Purtroppo la biblioteca della mia
università è aggiornata più o meno al piccione viaggiatore e sulle
reti c'è molto poco :-(
Per le interfacce grafiche, prima di arrivare a complesse questioni di
accessibilità ed usabilità vorrei almeno capire come fare programmi a
più finestre, mettere una foto, gestire i menù e soprattutto inserire
una tabella risultato delle mie interrogazioni a database.
Mi rendo conto di avere le idee un po' confuse perchè sto studiando in
fretta e furia questi argomenti da autodidatta e non ho amici
informatici che mi possono dare una mano.
Spero di essere stato più chiaro :-)
Franco

 una tabella risultato delle mie interrogazioni a database.
Studiati le Swing sempre dal tutorial della Sun. Tra i vari Component
ha anche la JTable che potrebbe tornarti utile.

priorità.
Mi soffermo su questo punto (per le questioni più "javistiche" ti
risponderanno gli altri) per chiederti: perché Java?
Questa mi sembra una tipica applicazione di "basso livello" da
realizzare con qualche linguaggio più adatto allo scopo (tipicamente
C/C++). In ogni caso, evita i thread il più possibile, se puoi.
Dovresti dare uno sguardo alla programmazione asincrona. Ci sono molti
documenti in rete. Per C++ c'è anche boost::asio
(
http://asio.sourceforge.net/
). Al limite puoi anche solo prenderci
spunto.

 priorità.
Entro quali tempi di risposta devi stare?
Tommy

Non ho requisiti temporali stringentissimi perchè la gestione
dell'allarme è affidata alla scheda che programmerò in assembler o C
(ma preferisco assembler).
A me serve solo uno scheduler che periodicamente si faccia dare dalle
schede alcune info e riceva un segnale d'allarme con un ritardo non
troppo grande(anche 1 o 2 secondi vanno bene), perchè comunque non è
l'operatore del programma a dover intervenire tempestivamente ma il
sistema d'allarme che è a controllo distribuito.
La scelta dell'interfaccia utente è ricaduta su Java per vari motivi:
1) Non mi devo stare a preoccupare di scrivere versioni diverse per
sistemi operativi diversi
2) Le api di windows sono insopportabili e la loro documentazone si
paga
3) Ho studiato Java all'università ed è il linguaggio che conosco
meglio
In ogni caso, mi sa che posso implementare gli allarmi facendo
lanciare un'eccezione alla classe preposta a ricevere i dati, e
interrogare le schede solo al bisogno.


paga
Io non le trovo così insopportabili (specie se gestite con la libreria
giusta) e non è affatto vero che la documentazione si paga. A MSDN e
al Platform SDK accedi anche gratuitamente (
msdn2.microsoft.com
). E in
ogni caso tieni a mente che esistono librerie GUI per C++ che non solo
sono x-platform, ma anche x-language. Vedi wxWidgets
(
http://www.wxwidgets.org/
).

 Tienilo presente.
Ancora 'sta leggenda metropolitana? Certo, le applicazioni Java scritte 
male sono tremendamente lente, come quelle in qualunque linguaggio.
Ottime applicazioni Java, o esempi che un applicazione desktop Java può 
non essere lenta, ce ne sono a bizzeffe.
http://bluemarine.tidalwave.it
http://web.njit.edu/~theo/doom/index.html
Eventualmente anche i vari esempi di JavaFX...che anche se non sono 
scritti in Java finiscono sempre in Java bytecode:
https://openjfx.dev.java.net/learning.html
Basta cercare per trovarne. E comunque chi programma in Java ne usa 
tutti i giorni...o tu pensi che i vari IDE siano eccessivamente lenti 
per il lavoro che fanno?
-- 
Lucio Benfante
JUG Padova           
http://www.parancoe.org
 ...have a look at it!
www.jugpadova.it
 
http://www.jugevents.org

per il lavoro che fanno?
I vari IDE (parlo di quelli che ho visto: Eclipse, NetBeans e
IntelliJ) non sono solo TREMENDAMENTE lenti, ma occupano risorse in
maniera esorbitante e, a volte, quando li fai lavorare "troppo",
partono persino di brocca (vedi IntelliJ:
http://immagini.p2pforum.it/out.php/i338926_intelliJ.PNG
).

I vari IDE [...]
Ah, e aggiungo che la morte C++ Builder X con tanto di GUI scritta in
Java[1] (idea GENIALE da parte di Borland) è stata decretata in gran
parte dalla lentezza della GUI. Io l'ho aperto un giorno sperando di
trovare il vecchio "scheggioso" C++ Builder, ma dopo aver atteso un
quarto d'ora per l'apertura della maschera delle proprietà di
progetto, l'ho richiuso, disinstallato e atteso che Borland ci
ripensasse. Per fortuna, ha portato avanti lo sviluppo del BCB
classico.
E non credo si possa dire che Borland programmi male ;-)
[1] "In 2003 Borland released C++ BuilderX (CBX), which was written
using the same framework as JBuilder and bore little resemblance to
either C++ Builder or Delphi. This product was aimed at developing
large programs for enterprises; however, it did not have commercial
success. At the end of 2004 Borland announced that it would continue
to develop the classic C++ Builder and bundle it with the Delphi
development suite, abandoning C++ BuilderX"
http://en.wikipedia.org/wiki/Borland_C%2B%2B_Builder

 lente. Mi spiace. Basta cercare per trovarne.
Che cavolo vuol dire?
Se uno cerca bene trova anche dei nani alti.
Oltre a non saper leggere il campo From dei messaggi hai pure problemi 
in logica.
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/06/relazioni-molti-molti-con-jpa.html

 per il lavoro che fanno?
Io, anche se non lo cambierei, non sono soddisfatto delle performance di 
Netbeans.
In genere funziona bene, ma ogni tanto decide di bloccarsi.


 Tienilo presente.
Tremendamente è relativo.
Se non devi scrivere interfaccie di videogiochi real time o se l'hw non 
è datato la velocità dell'interfaccia utente non è l'aspetto primario 
che viene preso in considerazione.
Nota per Andrea Laforgia: questo post l'ha spedito Andrea Francia, gli 
altri dove il nome Andrea Francia non compare sono stati scritti da 
altre persone. Lo scrivo perché ho visto che di solito fai confusione...


 
Vedere != da usare. Io uso Eclipse tutti i giorni da oltre 6 anni e non 
l'ho mai trovato lento. In certe funzioni, rispetto ad ambienti scritti 
in codice nativo, è _decisamente_ più performante.
P.S.
Occhio ai meeting del JUG Torino!
http://www.jugtorino.it/meeting
-- 
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://www.jugtorino.it/bbossola
| Coordinatore del JUG Torino - 
http://www.jugtorino.it

 
http://bluemarine.tidalwave.it
Ho provato questo, la velocità è accettabile, ma non mi sembra più 
veloce di altre applicazioni.
Pero' è più veloce di Picasa, quell'applicazione è un chiodo.


 
http://immagini.p2pforum.it/out.php/i338926_intelliJ.PNG
).
Questo mi fa supporre solo che non li usi abbastanza. Come ha detto 
Bruno, vedere è diverso da usare.
Quanto al tuo confronto con BuilderX del 2003: certo 2003...e le JVM 
sono rimaste ferme al 2003, vero? Non solo, la complessità delle 
applicazioni di 5 anni fa è la stessa di quelle odierne, vero?
Quanto alle risorse necessarie a far girare un'IDE: a me è sempre 
sembrato normale che un IDE richieda molte risorse. E' un'applicazione 
che serve a scrivere (eseguire, debuggare, ecc.) altre applicazioni. 
Infatti i computer che vengono usati per sviluppare devono essere sempre 
ben carrozzati in quanto a CPU, memoria e dischi. Se un programmatore 
dilettante vuole sviluppare sul suo desktop "normale", ben venga, ma non 
mi sembra il caso di lamentarsi che uno strumento professionale abbia 
dei requisiti (e non sto parlando di quelli minimi) un po' più elevati 
per funzionare al meglio. Altrimenti esistono alternative meno 
professionali per chi non può permettersi di usare un IDE complesso. Mi 
sbaglio io?
...ah...stavo quasi dimenticando la faccenda di IDEA, che ami citare 
spesso. Che c'entra? Come sviluppatore dovresti sapere che i bug sono 
sempre possibili (o magari era anche solo un problema della 
configurazione di chi lo stava usando).


Qui la discussione si sta scaldando e si sta divagando lontano dal mio
problema.
In ogni caso sotto consiglio di Andrea Laforgia sto dando uno sguardo
a c++,
in particolare ho scaricato visual c++ di Ms tanto ho la quasi
certezza di dover
far girare il mio programma sotto windows.
Inoltre ho deciso di confrontarmi con qualche informatico in loco,
perchè se mi metto a studiare
tutte le cose che mi servono finisco sto progetto quando vado in
pensione.
Per quanto riguarda la lentezza/velocità degli applicativi, che siano
IDE o meno,
vorrei dire la mia.
1) tutto dipende da come è configurato il SO e da quanta roba mette in
ram
2) da quanta ram hai
3) da quanto swappi(cosa legata a quelle di prima)
Inoltre tutto dipende da quanti plug in carichi con l'IDE.
Sul mio pc Netbeans gira abbastanza bene (sotto linux però, sotto
windows non ho provato) o al più installo eclipse che è un pelo più
snello. Visual c++ di microsoft va ancora meglio, è un scheggia.
In ogni caso grazie a tutti dei mille consigli!!!!