Newsgroup: it.comp.java
Titolo: Il miglior tool per Java. Qua'è?

Sapete dirmi qual'č il miglior tool di sviluppo per Java, per creare applet,
menu animati, grafica per pagine web etc... ?
Funziona in Win9x?
Che Java "usa"? Quello simile al C++?
Aspetto una risposta.
-- 
Posted from [151.39.53.97] by way of 
oe22.law8.hotmail.com
 [216.33.240.79] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


ma di che parli?? Cmq dai un'occhiata su:
http://www.simonpeter.com/techie/bitbucket/java_ide.html
non e` molto aggiornato, ma almeno ti fai un'idea.
-- 
Ciao,  |  I play Russian roulette everyday, a man's sport,
Matteo |  With a bullet called life, yeah called life, (SUGAR)

Allora potresti dirmi quale potrei scaricare gratis (a parte SDK)?
A me interessa un IDE adatto alla creazione di animazioni 3D, applicazioni
on-line, e in generale, tutto ciň che puň essere destinato alle pagine web.
Quando dicevo che "Java usa" volevo dire se la sintassi era uguale da tool a
tool.
Grazie
-- 
Posted from [151.39.53.97] by way of 
oe67.law8.hotmail.com
 [216.33.240.202] 


 Aspetto una risposta.

> Che Java "usa"? Quello simile al C++?
FF> Che io sappia non mi pare che Sun abbia fatto il Java Visual Basic style o
FF> il Java Pascal style :-)
No, ma Gosling potrebbe esserre tentato da quella Lisp Style :)
FF> La semantica del Java è identica a quella del C++, solamente sono state
FF> eliminate alcune keywords e qualche operatore e si è potenziata la OOP.
Mha, io  direi che la sintassi è  quella del C e  la grossa differenza
con C++  è che Java _è_ ad  oggetti, il C++ _permette_  di lavorare ad
oggetti. Sarebbe anche più potente di Java (permette cose che Java non
permette), ma è stato progettato molto meno bene...
\begin{echelon}
genetic Peking smuggle FBI quiche Legion of Doom KGB Ft. Bragg
fissionable strategic Delta Force Mossad ammunition Kennedy bomb
\end{echelon}
\begin{avviso}
 
Attenzione: Leggersi lo header riguardo al mio e-mail!
Warning: read header for infos about my e-mail.
\end{avviso}
+----------------------------------------------------------------+
| Gian Uberto Lauri * "So, are you working on fixing that bug    |
| 
sa...@eng.it
      *  *now* or leaving it until later ?" - YES  |
+----------------------------------------------------------------+

permette), ma è stato progettato molto meno bene...
Il C++ è stato concepito come linguaggio che riprendesse le caratteristiche
del C per quanto riguardo il basso livello e  che vi avvicinasse i nuovi
concetti informatici che si sono sviluppati in questi anni. Inoltre un
fattore che C++ ha e java no è la possibilità di implementare qualsiasi
tipo di paradigma.
Mi faresti il piacere di dirmi dove il C++ è implementato male?
Cosa intendi per potenza? Tale concetto è assai generico.
 

> Mha, io  direi che la sintassi è  quella del C e  la grossa differenza
FF> In effetti C++ deriva dal C.
e non bene ... :>
FF> Mi faresti il piacere di dirmi dove il C++ è implementato male?
A soldoni (e probabilmente senza ricordare bene) : hai una class A con
il metodo()  virtual. Derivi da  A le classi  B e C, ambedue  fanno un
override di  metodo().  Di poi derivi  la classe D  da B e da  C senza
specificare un'implementazione di  metodo(), che succede quando chiami
D.metodo() ?
FF> Cosa intendi per potenza? Tale concetto è assai generico.
 
Ad  esempio il caso  della classe  D.  In  C++ puoi  fare ereditarietà
multipla,  in  Java  al  più  implementi interfaccie.  Detto  tra  noi
preferisco  la minor  potenza  meglio definita  di  Java alla  potenza
maldefinita di C++.
\begin{echelon}
Albanian Marxist security NORAD genetic KGB cracking Khaddafi [Hello
to all my fans in domestic surveillance] Legion of Doom Semtex AK-47
nuclear class struggle FSF


maldefinita di C++.
Sono due tipi di implementazione OOP totalmente differente.
Nel java Sun ha deciso di creare l'ereditarietà singola solo per questioni
di facilità e come puoi vedere è abbastanza limitante. Quindi ecco
comparire le interfacce che hanno le stesse problematiche delle classi C++
con ereditarietà multipla.
PS: Non voglio attaccarLa Sig. Lauri e spero che non se la prenda se sono
stato un po' ostile, semplicemente sono dell'idea di dire "ogni linguaggio
ha il suo nel male e nel meglio".
Personalmente condivido che Java è tra i migliori, ma convengo che C++
sotto alcuni aspetti non potrà mai essere superato e consiglio di imparare
entrambi.
Saluti.

 
questo è però un problema tipico dell'ereditarietà multipla, non
dell'implementazione specifica di C++. Comunque chi vuole avere una
visione molto precisa dei problemi del C++ vada a leggersi "A C++
critique", un PDF molto ben fatto (anche se un po' datato, ma tanto
anche C++ lo è ;)). Si può trovare facendo una ricerca su Cetus Links
(dovrei anche avere un link sul mio sito, ma non ne sono sicuro...)
ciao
-- 
Ugo
__________________________________________________________________________
"La perfezione si ottiene non quando non c'è nient'altro da aggiungere, 
 bensì quando non c'è più niente da togliere." Antoine de Saint-Exupéry
__________________________________________________________________________
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Enterprise Java Consulting
@mail:	
ugo.l...@flashnet.it
@work:	
ugo.l...@sun.com
Home Page: 
http://www.ugolandini.net
Home Page: 
http://ugolandini.hypermart.net
 (DNS is changing)
Mentoring: 
http://www.projectoo.com
Fax Phone: 06/233207542 
Cell Phone: 0347/6310749 - 0347/4783580
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

> maldefinita di C++.
FF> Sono due tipi di implementazione OOP totalmente differente.
FF> Nel java Sun 
Non Sun, ma uno solo dei suoi fellows, Gosling, considerato un semidio
nella cultura hacker per via di Java appunto - vedi Hacker Jargon File
4.2.2
http://www.tuxedo.org/~esr/jargon/html/entry/demigod.html
Java  non è un  prodotto corporate  come Windows,  da questo  punto di
vista ricorda  Unix, è  frutto della  testa di una  persona che  lo ha
realizzato con  altre menti toste ed  è stato recepito  da una azienda
abbastanza atipica.
FF> ha deciso di creare l'ereditarietà singola solo per questioni
FF> di facilità e come puoi vedere è abbastanza limitante.
Meno di quel  che sembra. Il C++ ha un  modello talmente complesso che
la sua  complessità diventa difficilmente gestibile. Diciamo  che è un
linguaggio per questo tipo di persone (dallo stesso file di prima):
http://www.tuxedo.org/~esr/jargon/html/entry/language-lawyer.html
FF> Quindi ecco comparire le interfacce che hanno le stesse
FF> problematiche delle classi C++ con ereditarietà multipla.
Qui devo riguardarmi il Gosling.
FF> PS: Non voglio attaccarLa Sig. Lauri e spero che non se la prenda se sono
FF> stato un po' ostile, semplicemente sono dell'idea di dire "ogni linguaggio
FF> ha il suo nel male e nel meglio".
Questo è vero.
FF> Personalmente condivido che Java è tra i migliori, ma convengo che C++
FF> sotto alcuni aspetti non potrà mai essere superato e consiglio di imparare
FF> entrambi.
E questa è da calumet della pace perché condivido ogni singolo bit.
\begin{echelon}
Waco, Texas jihad Noriega plutonium colonel Mossad bomb terrorist
Kennedy World Trade Center cryptographic Uzi Cocaine North Korea
nuclear


> e non bene ... :>












dire che non ti va la mancanza della creazione statica di un oggetto ?
Vabbe,  il compilatore  di solito  ti avverte  che hai  dimenticato di
inizializzarlo, non è tutta questa mancanza...


Dato che la discussione tra me ed il Sig Lauri sta prendendo una brutta
piega mi permetto di fare un bel taglio e ribadisco i concetti che volevo
esprimere in maniera più comprensibile.
Ringrazio Lauri per la contestazione che mi ha fatto sull'italiano ed
ammetto di essere stato numerose volte piuttosto ambiguo e assai contorto.
Riprendiamo la discussione:
Io non cambio i miei pareri sul Lisp. La mia è un opinione del tutto
personale che non pretendo che venga condivisa da altre persone.
Per quanto riguarda il discorso del C++ la semantica di base, per
intenderci le istruzioni del controllo del flusso, delle direttive al
preprocessore e quant'altro sono rimaste invariate da quelle proposte dal
C. Inoltre anche se vi accosto concetti come template o le classi si può
vedere che le regole sintattiche sono le stesse.
Veniamo adesso all'esempio della classe A e della rispettive sottoclassi.
Come ho già detto il mio compilatore mi restituisce un errore, entrando nel
dettaglio un warnig.
Anche se i warning servono solo a segnalare situazioni anomale del codice
io sono propenso a considerarle come aspetti da trattare per questioni di
robustezza.
Ad esempio in C++ posso assegnare un valore float ad un int. Il compilatore
mi restituisce un warning, ma non mi impedisce di creare l'eseguibile
solamente perché vi sarà un motivo se il programmatore tenta di fare tale
operazione.
Che poi vi sia un'utilità a farla è un altro paio di maniche. 
Detto questo dico che java è decisamente meglio del C++ perché è assai più
pignolo sui tipi, escluse le stringhe.
Nel discorso degli oggetti del java volevo dire che tale linguaggio non
offre strutture per modificare tramite una procedura anche il valore dei
parametri formali- quelli che passo alla funzione-. 
In C++ si possono usare i puntatori - o i referece - indipendentemente dal
fatto che stia passando oggetti o dati primitivi.
In Java non è possibile tale situazione quindi devo per forza ricorrere
alle controparti oggetto dei primitivi come Float o Double, che risolvono
pure la situazione ma che aggiungono un rilevante overhead addizionale.
Convieni anche tu che sono assai più pesanti di una variabile double o
float.
Per quanto concerne l'assegnamento tra due oggetti:
In Java, dichiarate due variabili di tipo classe ed inizializzate con i
rispettivi oggetti, un assegnamento tra le due implicherebbe la
duplicazione del riferimento contenuto in una di esse.
In C++ è possibile fare un assegnamento dove non si copia l'indirizzo,
bensì si effettua invece la cosiddetta "copia bit a bit" della variabili
istanza tra i due, a patto che tali oggetti siano dello stesso tipo.
Lei ha parlato di oggetti static ma non era questo che volevo dire.
In Java gli oggetti sono dinamici mentre in C++ si possono avere anche
oggetti non dinamici che sono vere e proprie variabili oggetto all'interno
del programma e non richiedono una struttura alternativa che faccia
riferimento ad una loro definizione nella heap, che in questo caso non
avviene.
Mi dispiace se L'ho offesa dandole dello spirito di patata. Credevo fosse
una battuta.

 3) Virtual in C++ è il sinonimo di abstract del Java.
Mi permetto di correggere. In C++ tutti i metodi sono compilati con link
statico, salvo quelli con l'indicazione "virtual" che lo sono dinamicamente.
In Java *tutti* i metodi sono "virtual", salvo quelli dichiarati "static".
Si vede come C++ consideri dunque il link dinamico e il poliformismo, basi
della programmazione oggetto, come delle eccezioni, mentre per Java é la
norma.
L'equivalente in C++ dei metodi "abstract" in Java sono i metodi "pure
virtual" dichiarati cosi':
virtual void metodo() = 0;
bye
Carlo

 elementi in public, giusto?
i membri di un'interfaccia sono public per definizione, che tu lo
espliciti o meno.
ciao
-- 
Ugo
__________________________________________________________________________
"La perfezione si ottiene non quando non c'è nient'altro da aggiungere, 
 bensì quando non c'è più niente da togliere." Antoine de Saint-Exupéry
__________________________________________________________________________
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Enterprise Java Consulting
@mail:	
ugo.l...@flashnet.it
@work:	
ugo.l...@sun.com
Home Page: 
http://www.ugolandini.net
Home Page: 
http://ugolandini.hypermart.net
 (DNS is changing)


ciao
Ciao.

 
Bene! Questo è lo spirito giusto con cui si collabora ad un ng.
ciao


eliminate alcune keywords e qualche operatore e si è potenziata la OOP.
Io vorrei sapere se imparando SDK ad esempio, posso poi usare anche J
Builder o qualche altro tool (almeno per quanto riguarda la sintassi).
Grazie
-- 
Posted from [195.223.215.7] 


D.metodo() ?
Non puoi fare Nomeclasse.metodo(), devi creare l'istanza.
Ad es.
D obj;
obj.metodo();
Comunque secondo me non ha molto senso quello che dici, perchè è inutile
derivare D da B e C senza ridefinire metodo().
I casi sono 2: o ti serve metodo() di B oppure metodo() di C.
Nel 1° caso basta fare
obj.B::metodo();
nel 2°
obj.C::metodo();
e sparisce ogni ambiguità
ma siamo ormai troppo OT...
Ciao.


ma siamo ormai troppo OT...
A me non sembra troppo ot.


Builder o qualche altro tool (almeno per quanto riguarda la >sintassi).
Tutti i tool di sviluppo per Java si basano su quello per eccellenza: il
jdk, contenuto nell'insieme degli strumenti del sdk, che corrisponde alle
versioni stesse del linguaggio.
Quindi non si dovrebbero avere problemi con la semantica.
L'unico svantaggio è che vi è un divario di circa sei mesi prima che le
innovazioni aggiunte al jdk  arrivino agli altri.

 writes:
FF> Io non cambio i miei pareri sul Lisp. La mia è un opinione del tutto
FF> personale che non pretendo che venga condivisa da altre persone.
Niente da ridire. Se non che  alcune delle buone idee del Java vengono
dal Lisp...
FF> Veniamo adesso all'esempio della classe A e della rispettive sottoclassi.
FF> Come ho già detto il mio compilatore mi restituisce un errore, entrando nel
FF> dettaglio un warnig.
Il suo compilatore fa bene, avverte che si entra in un campo minato.
FF> Anche se i warning servono solo a segnalare situazioni anomale del codice
FF> io sono propenso a considerarle come aspetti da trattare per questioni di
FF> robustezza.
Concordiamo.
[assegnare un float ad un int]
FF> Che poi vi sia un'utilità a farla è un altro paio di maniche. 
Ci possono essere casi (non certo sui PC) dove si accetta di perdere un tot
di portabilità facendo una manovra del genere, ma a questo punto si comincia
a rivaleggare con l'assembler.
FF> Detto questo dico che java è decisamente meglio del C++ perché è assai più
FF> pignolo sui tipi, escluse le stringhe.
FF> In C++ si possono usare i puntatori - o i referece - indipendentemente dal
FF> fatto che stia passando oggetti o dati primitivi.
FF> In Java non è possibile tale situazione quindi devo per forza ricorrere
FF> alle controparti oggetto dei primitivi come Float o Double, che risolvono
FF> pure la situazione ma che aggiungono un rilevante overhead addizionale.
Vero.  D'altro canto  Java  non è  stato  pensato con  la velocità  di
esecuzione in  mente, e molto probabilmente il  passaggio by reference
può essere aggirato in un modo migliore che con l'uso delle classi che
incapsulano tipi nativi.
FF> In C++ è possibile fare un assegnamento dove non si copia l'indirizzo,
FF> bensì si effettua invece la cosiddetta "copia bit a bit" della variabili
FF> istanza tra i due, a patto che tali oggetti siano dello stesso tipo.
In java non c'è questa copia bit a bit ma c'è la clonazione...
FF> In Java gli oggetti sono dinamici mentre in C++ si possono avere anche
FF> oggetti non dinamici che sono vere e proprie variabili oggetto all'interno
FF> del programma e non richiedono una struttura alternativa che faccia
FF> riferimento ad una loro definizione nella heap, che in questo caso non
FF> avviene.
Credo   che   c'entri   il   paradigma   con  cui   si   gestisce   la
memoria. Usualmente  i programmi tradizionali hanno un  text, un data,
un bss (a volte uno solo dei due, questo in particolare era il modello
del M68K), uno  stack e delle aree di  memoria richieste dinamicamente
al sistema. Le  classi in C++ sono oggetti  che nascono all'interno di
un processo,  al limite  alla partenza dello  stesso con  le strutture
allocate staticamente di solito finiscono in data o bss.
Java  ha una  idea completamente  diversa  dalla memoria  (che se  non
deriva  è fortemente influenzata  da quella  del LISP)  e mi  pare sia
architetturalmente impossibile  un'allocazione in un  segmento 'data',
anche se dovrei studiarmi meglio la cosa.
FF> Mi dispiace se L'ho offesa dandole dello spirito di patata. Credevo fosse
FF> una battuta.
Libero di non apprezzare il LISP, ma fa male...
\begin{echelon}
Semtex kibo Qaddafi munitions domestic disruption Noriega CIA Nazi
nuclear strategic assassination radar $400 million in gold bullion
NORAD Legion of Doom


 writes:
FF> Un'altra cosa: cosa intendi per ereditarietà multipla a diamante???
Una struttura ereditaria del genere:
		A
	       / \
              /   \
             B     C
              \   /
               \ /
                D
Nota : non  credo sia specificato alcunché sulla  cosa lasciando "mano
libera" ai vari compilatori.
\begin{echelon}
security Ft. Meade terrorist Cocaine Mossad BATF nuclear assassination
Ortega [Hello to all my fans in domestic surveillance] jihad Albanian
Honduras Ft. Bragg Uzi


> D.metodo() ?
"> Non puoi fare Nomeclasse.metodo(), devi creare l'istanza.
Era un esempio  e non in Java (dove non  c'è ereditarietà multipla). E
la persona  che esponeva la  cosa diceva che possono  esserci progetti
dove una situazione del genere è sensata.
\begin{echelon}
Marxist counter-intelligence AK-47 radar Qaddafi Semtex strategic
Ft. Bragg [Hello to all my fans in domestic surveillance] Legion of
Doom Rule Psix Albanian South Africa terrorist Saddam Hussein
