Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 15-12-2004, 11.51.16   #1
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Per la felicita di Dav82...JAVA!!

Ho iniziato a fare un corso su Java, purtroppo essendo completamente a digiuno di questo linguaggio alcune cose che sono state spiegate non mi sono affatto chiare.

1) Cos'è l'interprete? L'interprete nel caso di Java è JVM? E nel caso del C?
2) Cos'è e come funziona il file *.class
3) Cos'è Javac?

Insomma...se potete darmi un po' di info generiche sopratutto per quanto riguarda la fase della complilazione e dell'esecuzione.

Tnx!!!
Downloader non è collegato   Rispondi citando
Vecchio 15-12-2004, 12.10.17   #2
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Re: Per la felicita di Dav82...JAVA!!

Un altro adepto!

Quota:
Originariamente inviato da Downloader
1) Cos'è l'interprete? L'interprete nel caso di Java è JVM? E nel caso del C?
2) Cos'è e come funziona il file *.class
3) Cos'è Javac?
1) I file .java non vengono compilati in codice macchina come i .c/.cpp, ma vengono tradotti in un formato intermedio detto bytecode, che viene dato in pasto ad un livello intermedio che si chiama interprete; per ogni sistema esiste un interprete Java, scritto in C (a quanto mi risulta per tutti i sistemi) e compilato per quel determinato sistema. L'interprete, ossia la Java Virtual Machine, elabora il bytecode e interpreta (da qui il nome di interprete e linguaggio interpretato) i comandi presenti traducendoli in codice che può girare sul particolare sistema.
2) Ma che cos'è, in buona sostanza, sto bytecode? I file .class sono proprio quei file che vengono dati in pasto alla JVM!
3) Ma come vengono generati i .class a partire dai .java, i file sorgenti che scrivi con il tuo ambiente di sviluppo? Con Javac, che è il Java Compiler della Sun. Ogni IDE poi utilizza questo compilatore integrato nell'ambiente, rendendo trasparante al programmatore la chiamata di javac.

Alla fine della fiera il processo si svolge così:

File .java -> (JavaC) file .class [bytecode] -> (JVM) esecuzione

La JVM può essere chiamata semplicemente con il comando "java nomefile", dove nomefile è il nome del file .class (ma senza estensione) che contiene il main del tuo programma.

Con Java hai anche il concetto di portabilità: mentre scrivendo programmi in C/C++ usi delle funzioni proprie di un determinato sistema, e una volta che hai compilato i file in codice macchina li puoi usare solo su quel sistema (da qui i programmi con versioni differenti per win/linux/mac ecc ecc), con Java puoi "compilare" i tuoi file ottenendo i .class, e questi .class possono essere dati in pasto a una qualsiasi JVM operante su qualsiasi sistema (nb: con beneficio d'inventario eh ): i .class sono quindi portabili.
Ovviamente c'è il rovescio della medaglia: un linguaggio interpretato come Java è molto più lento rispetto ad un linguaggio compilato come il C/C++, dovendo - in fase di esecuzione - operare una conversione al volo da bytecode a codice eseguibile.

Bye
Dav82 non è collegato   Rispondi citando
Vecchio 15-12-2004, 12.25.19   #3
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Gia decisamente piu chiaro (Y)

Ora vado a studiarmi tutti gli altri appunti
Downloader non è collegato   Rispondi citando
Vecchio 15-12-2004, 12.53.55   #4
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Bella domanda questa perchè a risponderti dovremmo esserci in parecchi.
Io cercherò di spiegare la cosa in modo semplice ed intuitivo.

La differenza tra compilatore ed interprete può essere spiegata agrandi linee in questo modo:
Supponi:
1- che ci siano due persone che debbano colloquiare tra loro e che la prima parli italiano mentre la seconda russo.
2- che la prima persona (A) debba impartire ordini alla seconda [B]
3- che la prima persona (A) non sappia nulla di russo

Affinchè la persona (A) possa farsi capire dalla persona [B], è necessario che la prima si appoggi ad un traduttore che trasformi l'italiano in russo, quindi ha bisogno di un interprete (C).
A questo punto non vi è ancora distinzione tra compilatore ed interprete perchè questa fase è comune ad entrambi.

Se (A) parlasse a [B] attraverso (C) in modo che (C) traducesse istantaneamente parola per parola gli ordini di (A) a [B], questo approccio sarebbe interpretato.
Negli interpreti, infatti, il codice viene eseguito sequenzialmente istruzione dopo istruzione in runtime. Ogni istruzione verrebbe quindi tradotta in codice macchina ed immediatamente eseguita.

Se invece (A) parlasse a [B] attraverso una lettera già tradotta da (C) nel linguaggio madre di [B] e a questa consegnata direttamente, a [B] basterebbe leggerla una volta per capire immediatamente tutti gli ordini impartiti da (A) ed eseguire velocemente.
In pratica la traduzione verrebbe eseguita tutta in una volta nel linguaggio comprensibile dal destinatario e questo approccio sarebbe compilato.

Alla luce di quanto sopra esposto risulta chiaro che più ci si avvicina al linguaggio macchina durante la fase di imposizione di direttive, tanto più veloce sarà il PC ad eseguire il compito assegnatogli.

Nel corso degli anni, la disparità di prestazioni tra codice interpretato e compilato si è andata via via restringendo, anche se il divario risulta e risulterà sempre e comunque a favore dei compilatori.
LoryOne non è collegato   Rispondi citando
Vecchio 15-12-2004, 13.07.21   #5
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Lory (Y)


(ogni tanto fa anche il serio questo ragazzo! )
Dav82 non è collegato   Rispondi citando
Vecchio 15-12-2004, 13.24.37   #6
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Sono affetto da bug
LoryOne non è collegato   Rispondi citando
Vecchio 15-12-2004, 14.21.07   #7
ceccus
Senior Member
 
L'avatar di ceccus
 
Registrato: 19-10-2004
Loc.: Siena
Messaggi: 365
ceccus promette bene
Salve,
Tutto giusto...aggiungo soltanto che , ormai da molto tempo, sia la JVM che la VM di Microsoft, "compilano" al volo il codice intermedio (compilazione JiT = Just in Time) e "se lo mettono da parte", pronto per essere "ripesacto" nel caso che venisse rieseguito...
In questo modo , il primo che lancia l'applicazione "paga" in termini prestazionali, tutti gli altri no....ed è questo che ha , di fatto, decretato "il risveglio" dei linguaggi interpretati.....

Ciao !!
___________________________________

Site Admin http://www.pctrio.com
ceccus non è collegato   Rispondi citando
Vecchio 10-01-2005, 19.33.51   #8
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Qualche spiegaziocina:
1) Cos'è il costructor
2) Cos'è il mutator
3) Nell'UML cosa rappresentano le linee tratteggiate e i rombi biachi e neri?

Tnx!
Downloader non è collegato   Rispondi citando
Vecchio 10-01-2005, 23.11.51   #9
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Quota:
Originariamente inviato da Downloader
1) Cos'è il costructor
Il constructor, o costruttore (in italiano), è - se vuoi - un "metodo speciale" che permette di creare un'istanza di una classe. La classe è un'entità astratta, il cui codice viene scritto dal programmatore: di ogni classe si possono avere più istanze, ognuna ottenuta tramite un'opportuna invocazione di uno dei metodi costruttori della classe (ebbene sì, una classe può avere anche più di un costruttore).
Per esempio, in un'applicazione per il gioco della dama, ci sarà la classe Pedina, e orientativamente ci saranno 15 istanze di Pedina per il bianco e altre 15 per il nero. Il costruttore è un metodo come gli altri, nel senso che prevede la presenza di parametri, e come risultato dà il riferimento all'oggetto creato.

Quota:
Originariamente inviato da Downloader
2) Cos'è il mutator
Qua, se vogliamo fare le cose con un po' di rigore, andiamo più sul complicato. Ogni oggetto, inteso come istanza di una classe (e come cacchio si può intendere altrimenti! ), ha uno stato proprio; questo stato è definito dall'insieme dei valori che in un dato momento sono assunti dagli attributi dell'oggetto stesso. Per esempio, sempre con riferimento alla Pedina di cui sopra, ci potranno essere degli attributi quali
Codice:
int x; //la coordinata x in cui si trova la pedina
int y; //la coord y
boolean vivo;//false se mangiato dall'avversario
Lo stato di una pedina può essere, ad esempio, {2, 4, true} (e non fare le pulci che le coordinate sono del tipo (lettera, numero)! ).
Un metodo mutator (o modificatore in italiano) è un metodo che permette di cambiare lo stato di un oggetto. Per esempio può esserci il metodo
Codice:
muoviAvanti(){
   this.y += 1;
}
che, come vedi, cambia lo stato dell'oggetto Pedina su cui è stato invocato il metodo muoviAvanti. Ovviamente il metodo può prendere, a seconda della semantica ad esso associata, dei parametri (in questo caso no, ma per esempio pensa ad un oggetto ContoBancario con il metodo preleva(int prelievo)).

Un piccolo esempio!

Codice:
public class ContoBancario{

   int saldo = 0;
   String nomeCorrentista = "";
   String cognomeCorrentista = "";
   int operazioni = 0;

   public ContoBancario (String nome, String cognome){
      this.nomeCorrentista = nome;
      this.cognomeCorrentista = cognome;
   }

   /**
    *Questo metodo è un OBSERVER (osservatore) poichè non modifica lo stato dell'oggetto
   */
   public int saldo saldo(){
      return this.saldo;
   }

   /**
    *prelievo => (ammontare < 0), deposito => (ammontare > 0)
    */
   public void movimento(int ammontare) throws ContoInRossoException{
      
      if ((saldo + ammontare) < 0)
         throw new ContoInRossoException("Stai al verde!");
      
      this.saldo += ammontare;
   }
}
e questo è un possibile main per utilizzare sta classe:

Codice:
public class Downloader(){

    public static void main(String[] args){
    
       contoBancario bg = new ContoBancario("Guglielmo", "Cancelli);
       System.out.println("Saldo di Bill: " + bg.saldo());
       bg.movimento(1000000);
       bg.movimento(-5000);
       System.out.println("Saldo di Bill dopo 10 WinMe: " + bg.saldo());
    }
}
E' un codice assolutamente stupido e schifoso, ma solo per rendere l'idea.
Se stai studiando sul libro della Barbara Liskov, ti sarai accorto che nel metodo movimento c'è il controllo affinché il conto non vada in rosso, e questo equivale a garantire che il RepInvariant (invariante di rappresentazione), dato molto probabilmente dalle condizioni {nomeCorrentista != null AND cognomeCorrentista != null AND saldo >= 0}, sia verificato.

Quota:
Originariamente inviato da Downloader
3) Nell'UML cosa rappresentano le linee tratteggiate e i rombi biachi e neri?
Secondo la versione di UML che uso io con Poseidon le linee tratteggiate indicano la realizzazione di un'interfaccia, ossia collegano un'interfaccia con una classe che implementa l'interfaccia stessa. Però non penso che sia questo lo standard... per i rombi non saprei, ormai ho visto 3 "standard" UML diversi... se però non ne veniamo a capo, riapro il mio UML Distilled


Spero che il codice sia abbastanza chiaro
Dav82 non è collegato   Rispondi citando
Vecchio 04-02-2005, 16.31.59   #10
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Aspe, siccome io per il momento non ho mai buttato giu una riga di codice mo mi trovo un po' spiazzato.

Ho dei dubbi riguardo la scrittura di un metodo generico e di quelli set, get o costruttore (che poi dovrebbero essere scritti allo stesso modo, o sbalgio?

Ad ogni modo allego qualche righetta di codice, potete controllare se è scritta nel modo corretto visto che dal pc in cui scrivo non ho un compilatore?
tnx!
Codice:
// Dichiarazione di una classe 
public class Javajava
{
  public metodoGenerico (/*argomenti*/)
   {
   	// codice
   	
   	// va alla fine il return, e se si a che serve?
   	
   }
  
  // Questo è il main, ovvero l'entry point della jvm
  public static void main(String[] args)
  {
    System.out.println("Javaaaaaaa"); 	
 	
  }
	
}
Downloader non è collegato   Rispondi citando
Vecchio 04-02-2005, 18.32.40   #11
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Quota:
Originariamente inviato da Downloader
Aspe, siccome io per il momento non ho mai buttato giu una riga di codice mo mi trovo un po' spiazzato.
Enno no no no!
Appena si studia una roba, bisogna metterla in pratica, tanto più con lo studio di un linguaggio di programmazione: prove stupide, che non servono a niente, ma da fare

Quota:
Ho dei dubbi riguardo la scrittura di un metodo generico e di quelli set, get o costruttore (che poi dovrebbero essere scritti allo stesso modo, o sbalgio?
Esattamente. Tutti i metodi hanno la stessa struttura:

<modificatore>* <tipo_ritornato> <nome_metodo> ( <argomenti> )

dove "*" significa: zero o più (anche se la cosa è un tantino più complicata)

Quota:
Codice:
  public metodoGenerico (/*argomenti*/)
   {
   	// codice   	
   	// va alla fine il return, e se si a che serve?
   	
   }
Ogni metodo deve avere il tipo di ritorno: se non ritorna nulla, devi comunque mettere void, altrimenti il compilatore fa lo schizzinoso

Per i modificatori, quali private, public, static... puoi metterli come non metterli, il compilatore interpreterà l'assenza di modificatori come il modificatore di default, ma questo non può essere fatto per il tipo ritornato.
Tutto il resto è corretto.

Quota:
visto che dal pc in cui scrivo non ho un compilatore?


SACRILEGIO!

In ogni computer deve esserci un compilatore Java!

Ultima modifica di Dav82 : 04-02-2005 alle ore 19.14.23
Dav82 non è collegato   Rispondi citando
Vecchio 05-02-2005, 13.16.21   #12
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Scusa un altra cosa:

quando voglio salvare un valore che inserisco in input col c++ uso il comando cin, in java che comando c'è?
Downloader non è collegato   Rispondi citando
Vecchio 15-02-2005, 22.18.21   #13
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
ULTRA URGENTE!!

Ho bisogno di un consiglio su un buon libro per Java (i suoi fondamenti) che avete magari anche usato e con il quale vi siete trovati bene.

Se avesse anche un po' di esempi sarebbe anche meglio.

Io anche se un po' di fretta ne avevo notato una della Apogeo con copertina blu che non mi pareva malaccio.

Downloader non è collegato   Rispondi citando
Vecchio 15-02-2005, 22.34.25   #14
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Io ho usato il Thinking in Java, di Bruce Eckel, lo puoi trovare su internet con Google, il file si chiama TIJ3.pdf o qualcosa del genere Unica cosa è che è in inglese

Per il resto ho visto i Deitel & Deitel, il libro base e quello avanzato... quello base è più che altro per chi non sa cos'è un ciclo e simili, è proprio molto di base... mentre il secondo ha qualche aspetto più interessante.
Secondo me sono un po' pedanti con gli esempi, ma è un mio modo di vedere.

Altri non te ne saprei consigliare, non ne ho letti
Dav82 non è collegato   Rispondi citando
Vecchio 15-02-2005, 22.42.26   #15
Downloader
Gold Member
Top Poster
 
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
Downloader promette bene
Azz, se non fosse per l'inglese!

Purtroppo avrei bisogno di un qualcosa in italiano che mi spieghi anche gli aspetti piu semplici del java perchè oggi mi sono accorto di non saperne proprio nulla

Tnx! Poi ti faro sapere!
Downloader non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Problemi Java. Armando@56 Software applicativo 4 19-03-2008 16.27.05
Applicazione java pronta per l'uso juggler Programmazione 1 18-12-2006 22.11.18
[NEWS] Java diventa open source! UG0_BOSS Segnalazioni Web 2 14-11-2006 16.27.14
Java 5.0 upd. 10 / 6 RC Thor Archivio News Web 10 14-11-2006 13.56.18
[LINUX] windows media player per linux sacarde Linux e altri Sistemi Operativi 35 19-08-2006 12.55.31

Orario GMT +2. Ora sono le: 17.35.27.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.