Newsgroup: it.comp.java
Titolo: Meglio Java del C++?

Salve
Devo iniziare a vedere un ambiante di programmazione RAD, vengo dal C
sotto dos (un bel salto) e ero indeciso tra Java e il C++. Poi ho
scaricato JVM e JRE di SUN e ho provato a compilare degli esempi della
O'Reily, il risultato sembrava molto poco professionale (caratteri ,
anche dei menu, piccoli...), dopo averli visti ho dubitato della
credibilita' che avrebbe un professioanista che distribuisce le proprie
applicazioni scritte in Java. Applicazioni che non necessariamente
gisano in rete ma che spessano usano ODBC.
Se mi convincerete del contrario saro' contento anche io.
Grazie
Edoardo

Se mi convincerete del contrario saro' contento anche io.
E fai bene, perche`, pur dovendo ammettere che C++ conserva
(e sempre conservera`, a meno che non passiamo tutti a chip
"nativi per Java") un margine di potenza e di prestazioni, Java e`
perfettamente adeguato per il 90%+ delle applicazioni; quel tot
di performance in meno non sara` neppure avvertibile se la tua
applicazione fa piu` che altro GUI e accessi a database -- lo si
puo` "sentire" solo in applicazioni che fanno "internamente"
calcoli pesanti e complicati, piuttosto che non (come la maggior
parte delle applicazioni di oggi, e ancor piu` domani) GUI, DB,
comunicazioni in rete, accesso a componenti preconfezionati,
eccetera; tutto sommato, e` lo stesso fattore che ha permesso
a VB di imporsi sul mercato (anche VB e` intrinsecamente piu`
lento di C++, ancor piu` di quanto non lo sia Java -- ma visto che
per la gran parte delle applicazioni cio` e` impercettibile, chi
se ne...:-).
Scegliendo Java invece di C++ ottieni maggiore semplicita` di uso,
e di apprendimento, e "limpidezza" del paradigma, con rilevante
vantaggio di produttivita` (per molte applicazioni, chi conosca
alla perfezione entrambi i linguaggi puo` comunque avere un
vantaggio di produttivita` del 20-30% a usare Java -- stima "a
braccio" basata su osservazioni personali); inoltre, vantaggio
di portabilita`, poiche` le ricchissime (fin troppo...:-) API di Java
sai di poterle trovare anche per altre piattaforme, se mai ne
avessi la necessita` (se la portabilita` ti interessa, naturalmente,
evita le API proprietarie di Microsoft; quelle ti legherebbero a
Windows e simili, ne` piu` ne` meno di come ti ci legherebbe
l'uso del C++ con MFC, o di Visual Basic).
Scegliendo Java invece di Visual Basic, ottieni un linguaggio
piu` preciso e "ordinato", _potenzialita`_ di migliori prestazioni
(a oggi, ammettiamolo, la potenzialita` e` solo tale, e non si
riflette ancora nella "realta` attuale" -- ma penso che sia solo
questione di tempo), API ancora piu` ricche, _portabilita`_.
(Sulla produttivita`, non mi pronuncio, perche` la mia personale
padronanza di VB e` lungi dall'essere perfetta; a naso, pero`,
direi che, mentre per programmi _piccoli_ VB potrebbe anche
avere il vantaggio, Java, appunto per la sua maggiore
"sistematicita`" eccetera, dovrebbe essere assai piu`
produttivo, a lungo termine, per programmi "non piccoli"
[per programmi davvero _grandi_, diciamo dal milione di
righe in su, i fattori in gioco cambiano ancora, e quello e`,
forse, un settore dove merita invece considerare linguaggi
"ottimizzati" per il "programming in the large", come Ada e C++;
ma non credo siano queste le dimensioni di programma che
un singolo professionista vorra` considerare, comunque]).
Alex

>sotto dos (un bel salto) e ero indeciso tra Java e il C++. Poi ho
[snip]
Non quoto tutto: tanto e' inutile!!!
Volevo soltanto un chiarimento un po' fuori tema rispetto al thread.
Visto che hai tirato fuori il compilatore di IBM (High Performance)
volevo chiederti una cosa: io possiedo ancora la "vecchia" versione
rilasciata con il CD delle MonoCDGrafie di ioProgrammo, giacche' la
mia connettivita' con la rete e' a dir poco pietosa (devo passare per
l'universita'...) mi chiedevo se il suddetto compilatore ha ancora
quelle limitazioni della versione a cui faccio riferimento. In
particolare mi sembra di ricordare che non era in grado di gestire al
volo classi caricate a runtime... e' ancora cosi'?
Un'altra cosa: ho avuto modo di vedere alcune applicazioni scritte con
le Swing, ad esempio FreeBuilder... dire che e' lento e' fargli un
complimento (con tutti i miei REALI complimenti a chi lo ha
realizzato: non deve essere stato proprio facile!), un programma
compilato con il compilatore di IBM e che fa uso delle Swing e' ancora
cosi' lento oppure la lentezza e' molto meno "apprezzabile"?
Ciao e Grazie!!!
Matteo!!!

cosi' lento oppure la lentezza e' molto meno "apprezzabile"?
Personalmente, mi pare che un miglioramento ci sia.  Ho anche
sentito dire che tutte le versioni di JFC/Swing che si trovano in
rete sono poco ottimizzate rispetto alle potenzialita` (non ho visto
ne` tanto meno studiato a fondo sorgenti e architettura, per cui
mi limito a riferire questo "si dice") -- che, sino ad ora, le varie
implementazioni di JFC/Swing avevano sostanzialmente come
primo obbiettivo quello di validare "correttezza e usabilita`" del
progetto di Swing stessa, fornire una "implementazione di
riferimento", rimuoverne via via i bug, eccetera; e che le vere
ottimizzazioni di prestazioni "cominciano solo adesso".  Non so,
ma io spero che sia davvero cosi`, perche` in effetti (anche se
un miglioramento c'e` stato, fra le primissime versioni e quelle
che escono oggi) non sono proprio dei "fulmini"... "a occhio",
mi pare che, anche con il compilatore nativo, Java+Swing non
abbia ora prestazioni altrettanto responsive di Tcl+Tk, benche`
quest'ultimo sia un sistema schiettamente "interpretativo"...
Alex

quest'ultimo sia un sistema schiettamente "interpretativo"...
In effetti sembrano molto delle "demo" le attuali versioni di
JFC/Swing difatti, in uno degli esempi che danno assieme alle classi,
si nota bene una piccola barra che permette di settare la velocita' di
ridisegno proprio per effettuare il debug delle classi: a prescindere
dalla posizione della barra qualche istruzione di ritardo deve
comunuqe esserci e la cosa non fa di certo bene alle performance!
Ad ogni modo mi piacerebbe sapere anche se qualcuno ha delle
esperienze con Linux in tale proposito: compilatori per codice nativo,
prestazioni di questi ed inoltre puntatori nella rete a siti che li
distribuiscono (meglio se Free come consuetudine Linux :) ).
Ciao!
Matteo!!!