Introduzione a Java

Storia e concetti di base

Storia di Java

  • Tutto deriva da C
  • C++ come estensione (OOP)
  • Oak come progetto di ricerca (1991)
  • Esplosione di Java grazie al WWW (1993)

 

Fasi della compilazione ed esecuzione

  1. scrittura del codice sorgente ( p.java )
  2. compilazione del sorgente ( p.class )
    • $ javac p.java
  3. esecuzione del codice compilato
    • $ java p

p.class e' un file binario ?

No! e' un file chiamato BYTECODE comprensibile alla JVM ( Java Virtual Machine )

JVM

  • Java non e' propriamente definito come un linguaggio compilato; nel senso in cui non produce un file binario eseguibile dalla macchina
  • Al contrario produce un BYTECODE che viene eseguito dalla JVM.

Ma se non e' binario come e' in grado la JVM di eseguire le istruzioni?

Non puo'. Infatti il bytecode non viene "eseguito" ma viene INTERPRETATO a runtime dalla JVM e poi eseguito

JVM

  • Si puo' immaginare la JVM come un processo Padre
  • Il quale esegue tutti i bytecode richiesti come processi Figli
  • Cio' non toglie che i processi Figli non siano a loro volta Padri di altri processi (anzi...)

Terminologia

  • Il codice e' suddiviso in CLASSI
  • Le classi contengono
    • METODI (funzioni)
    • ATTRIBUTI (variabili)
  • JDK (Java Development Kit)
  • JRE (Java Runtime Environment)
  • JAR (Java Archive) descritto meglio in seguito..
  • Package
  • ClassPath
  • Esistono molte classi gia' pronte per l'uso: Java API (Application Program Interface)

Progetto Java

  • La compilazione a riga di comando e' consigliata quando si hanno pochi file.
  • Si parla di progetto quando le classi iniziano ad aumentare notevolmente.
  • Esistono sistemi che aiutano la scrittura, lettura ed gestione del codice

Progetto Java - Esempio

~/Documents/workspace/Life/
  • /bin
    • /com/myfantasticproject/life/Life.class
  • /src
    • /com/myfantasticproject/life/Life.java
  • /lib
    • UtilityLib.jar
  • /build
    • /dist
      • Life-1.0.jar
    • /javadoc
      • [...]

Ends

andrea.ghz@gmail.com 

andreaghizzoni.github.io

@_ghzz

Java Introduction

By AndreaGhizzoni

Java Introduction

Java intro

  • 504