ncc-1700 ha scritto:Anche io ero partito da Java e poi approdato a Python, ma ora, sono ritornato alle oprigini e mi sto perdendo ( a livello amatoriale, di professione faccio il sistemista, cè poco spazio per la programmazione) di nuovo nel Java. Vero, per certi aspetti è un mastodonte e molto ingessato, ma scrivi un piccolo programma e lo esegui ovunque,
Dove 'ovunque' vuole dire sulle 3-4 piattaforme che hanno una JVM aggiornata. Per inciso se il piccolo programma è Java 1.6 lo giri su Windows, su Linux PC, su Solaris e basta. Su OS X se uno ha installato la beta della JVM. Su Linux PPC, per dire no. Ah, e su quelli che emulano gli eseguibili Linux, per cui girano la JVM (che è come dire che un programma Windows lo giri ovunque perchè c'è wine).
se vuoi programmare il web usi le jsp con un piccolo e agile Tomcat,
Scherzi? *piccolo* e *agile* Tomcat? È probabilmente l'oggetto più mastodontico in circolazione...
Per me *piccolo* e *agile* è lighthttpd. Quello si.
Per inciso usando cose come Django (Python) o Rails (Ruby) un blog lo scrivi in meno di un migliaio di righe di codice. *Quello* è il metro di paragone sull'agile.
Tra l'altro se nomini JSP, nomini solo parte della medaglia: in primo luogo stai gestendo solo l'aspetto della view. Devi sceglierti anche una qualche libreria per ragionare con il DB: nessuno vuole usare direttamente JDBC per ragioni di *tempo* (a meno che non ci siano esigenze di prestazioni veramente ottime e programmatori che sanno il fatto loro).
SI usano i vari Hibernate e compagnia. Se metti di fianco Hibernate e ActiveRecord, con il secondo hai finito l'applicazione prima che hai finito di leggere la documentazione del primo.
le gui le crei raapidamente con Netbeans, insomma per un dilettante non è male.
Matisse non è male. Vero. Non mi dispiace neppure troppo Swing. Peccato che abbia un'usabilità accettabile dalla versione 1.6 (prima era troppo mastodontico).
Detto questo per un 'principiante' che volesse buttare su qualche cosina, impararsi tutto Java, essere costretto a capire bene l'inutilmente complesso modello a thread dello stesso (che se non altro hanno migliorato dal punto di vista prestazionale ancora una volta in Java 1.6) *e* smazzarsi su Swing... beh, buona fortuna.
Non a caso Java GUI *non* ha attecchito praticamente per nulla. Per chi cercava un RAD, oggetti come Delphi o il non male RealBasic sono diversi anni luce avanti. Ma anche un QtDeveloper + C++/Python (anche se un po' meno RAD).
Per darti un'idea a scrivere un'applicazione desktop in Cocoa+Python (la libreria GUI che al momento conosco meglio, anche se in genere non lavoro nelle GUI) ci si mettono frazioni di tempo di quello che ci si mette in Java + Swing. E Swing la conoscevo discretamente, voglio dire. Anche Cocoa+ObjectiveC non è male. E quando ancora la cosa era ben supportata da Apple, perfino Java + Cocoa non era malaccio: poi ci si rendeva conto dell'abisso di produttività nello scrivere il backend in Python/ObjectiveC contro Java.
RealBasic come dicevo è carino, ma è un vero RAD: se uno non ci sta attento, fa un pastrocchio indicibile. Anche se, devo ammettere, anche NetBeans da questo punto di vista incoraggia i pastrocchi, suppongo che sia insito nei rad che diversamente da IBuilder *non* sono pensati MVC fin nel midollo.
Che si, Swing è parecchio MVC, ma per usarla in quel modo devi sapere molto bene quello che fai, e finisce che usi anche determinate funzioni di Java che non tutti vedono bene, tipo le classi anonime (chiaro, non obbligatoriamente, ma è comodo).
Python è una figata, ma ha migliaia di modulini (PyGame, pnumeric,wxPython, etc...)per poter essere sfruttato a tutto tondo come linguaggio general purpose ed ho scoperto a mie spese che spostandosi di SO o di processore (x86 o x86_64) si incappa in una marea di vincoli, es: cè la wxPython ma una versione nuova o vecchia che usa solo Python x o y, non cè PyGame o cè solo a 32bit, etc.....
Guarda, io tutti questi problemi non li ho mai visti. Se usi come si deve i pyinstaller, gestiscono tutto loro. Se poi sei su Linux, il problema in generale non sussiste proprio.
Per inciso, la presenza di molti moduli è un vantaggio: significa che devi fare meno tu.
Insomma Java, con tutti i suoi problemi, mi sembra comunque un buon compromesso.
Non so: io posso dirti che praticamente per ogni uso di Java ho trovato alternative sufficientemente migliori da annullare i vantaggi di un tool unico per ogni cosa.
Anche perchè il principale vantaggio di Java è che funziona bene su progetti grossi, inchiodati, con un fottio di programmazione up-front e molti programmatori che si limitano ad eseguire.
Per le cose piccole, lo trovano *tutti* sovra-dimensionato.
Ecco REBOL, mi sembra in questo caso una soluzione più limitata forse, sicuramente molto sconosciuta (ho trovato poco in giro per la rete), ma di un certo valore per quanto riguarda la capacita di essere general purpose e di girare su praticamente ogni piattaforma.
Sul multipiattaforma poi bisogna vederlo in pratica. Come ti dicevo, ci sono ancora persone convinte che Java sia una buona soluzione multipiattaforma solo perchè lo hanno provato (per fortuna loro) solo nei casi 'semplici'.