1 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java JAVA: una introduzione.

Slides:



Advertisements
Presentazioni simili
Trieste, 26 novembre © 2005 – Renato Lukač Using OSS in Slovenian High Schools doc. dr. Renato Lukač LinuxDay Trieste.
Advertisements

Programmazione in Java
/ fax
Midrange Modernization Conference 1 Scenari evolutivi per le soluzioni basate su AS/400 Walter Poloni Direttore Developer & Platform Evangelism Microsoft.
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
Java Enterprise Edition (JEE)
Massa Laura Mela Enrica
Italiano Da quando siamo passati al corso di metallurgia (3^o ) abbiamo cominciato a lavorare utilizzando i maniera didattica tecnologie di tipo hardware.
Seam.
Microsoft Robotics Studio Marco Petrucco Microsoft Student Partner - Udine.
Dipartimento di Ricerca Sociale - Università del Piemonte Orientale 1 Castelli Aperti giugno 2005 Castello di Camino (AL) IL PUBBLICO DI CASTELLI.
Introduzione a JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA
EJB Enterprise Java Beans B. Pernici. Approccio Java.
1 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java JAVA: una introduzione.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
J0 1 Marco Ronchetti - Corso di Formazione Sodalia – Febbraio 2001 – Modulo Web Programming Tomcat configuration.
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
Programmazione II Marco Ronchetti
prompt> java SumAverage
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
1 Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dellambiente di sviluppo, compilazione.
Introduzione al linguaggio Java
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
JAVA C import java.util.*; #include <stdio.h>
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 3 - Functions Outline 3.1Introduction 3.2Program Components in C++ 3.3Math Library Functions 3.4Functions.
Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario 2: Microsoft.NET.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
1 laboratorio di calcolo II AA 2003/04 ottava settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Packages. Package: insieme di classi e interfacce in relazione Per formare un package basta inserire la direttiva come prima istruzione nel file sorgente.
Applicazioni dell'Elettronica basata sul Diamante _________________________________________ Arnaldo Galbiati SOLARIS PHOTONICS Alkaline Solar Cells and.
ATE / 31 Lezione 3 i sistemi automatici di misurazione - gli ATE.
Architettura Java/J2EE
Introduzione a Java.
Argomenti della lezione
Programmazione in Java
Palermo, may 2010 F.Doumaz, S.Vinci (INGV-CNT- Gruppo di telerilevamento)
Java Contardi Carlo A.S. 2008/09.
PROGETTO DI STRUMENTI PER LA CONFIGURAZIONE DI APPLICAZIONI JAVA ENTERPRISE Anno Accademico 2006 / 2007 Sessione III FACOLTÀ DI INGEGNERIA CORSO DI LAUREA.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Roberto Ariani Presidente Comm. Supporto e sviluppo informatico I Siti in cui dobbiamo navigare per crescere SINS - Seminario Istruzione Nuovi Soci - Arezzo,
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
Visual Studio Tools for Office: Developer Solutions Platform Fulvio Giaccari MCSD.NET / MCT Responsabile Usergroup ShareOffice Blog:
Test con JUnit. zJUnit è un ambiente di test per programmi Java ySviluppato da Kent Beck É possibile usare JUnit allinterno di Eclipse per eseguire i.
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Collection & Generics in Java
Introduction to automatic ABMs documentation Keywords: Doxygen ODD protocol MASON documentation Simone Romano.
Bando Pittori e Scultori in Piemonte alla metà del ‘700
Java Enterprise Edition
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Vannucci Roberto (5BM), De Nardin Axel (5AM)
lun mar mer gio ven SAB DOM FEBBRAIO.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Introduzione alla programmazione MIDI
Java World Introduzione.
Programmazione per la Musica | Adriano Baratè
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
Corso Java Introduzione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Java Introduzione.
Transcript della presentazione:

1 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java JAVA: una introduzione

2 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Traditional portability (ideal) C-code Compiler (Linux) Compiler (Pentium) Compiler (Mac) Linux Mac Windows 32 Executable (Linux) Executable (Win32) Executable (Mac)

3 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Portability of Java programs Java-code Compiler (Unix) Compiler (Pentium) Compiler (Mac) Unix+JVM Bytecode (Platform independent) WRITE ONCE, RUN EVERYWHERE! Executable files can be dowloaded through the net But… Java version problem… Solve with a Plug-In Mac+JVM Pentium +JVM Java based NETWORK COMPUTER

4 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Esecutori di bytecode Java può essere eseguito: come standalone program da interpreti java (o compilatori JIT, o Java Chips) come applet : da browsers Web: da applicativi ad hoc: come add-on module : da server Web da application server (Enterprise Java Beans)

5 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java - Introduction Applications are built in the frame of the OPERATING SYSTEM Which in turn is built over a particular HARDWARE

6 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java - Introduction Java defines a HW-OS neutral SOFTWARE LAYER on top of which its code runs JVM Applications Java Applications

7 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti The Software Layer is called Java Virtual Machine It is a (smart) interpreter of an assembly-like language called ByteCode The Java Virtual Machine

8 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java - Introduction In principle the JVM could be a SW component ff the OS

9 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Java - Introduction In principle the JVM could be embedded in the Hardware!

10 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti the first universal software platform Consists of: The language The Virtual Machine (Many) class libraries and API Java: the platform for Internet Computing Hardware independent Scalable Open Easy! You dont care! Thats the difficult part!

11 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti The Java Platform Java APIs Java Programming Language Java Virtual Machine Java Commerce JavaBeans Java Security Java Management Java Media Java Server Java Enterprise

12 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Storia di Java Inizio anni 90: Java nasce come Oak target: intelligent consumer electronics. Successivamente, nuovo target: set top box 1994: linguaggio per la Web (client side) 1996: la prospettiva é network computing Oggi: Successi Device-independent GUI Web on the server side (Servlets, JSP, EJB, XML…) Prospettive intelligent consumer electronics + smartcards Java Oak

13 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Applicazioni Definizione : Programmi stand-alone scritti in linguaggio Java. Possono essere eseguiti da una Java Virtual Machine: Fisica: un processore il cui assembler e il bytecode Virtuale: un interprete o Just In Time Compiler Java.

14 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Prestazioni… Inferiori al C++… Tempo di sviluppo: Inferiore al C++...

15 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Per cosa è usato Java? Molte cose, ma soprattutto: - Web programming (server side) -Costruzione di interfacce grafiche -Software su piccoli dispositivi (telefonini)

16 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Hello World (application) Lo schema MINIMO di ogni applicazione é: class HelloWorld { /* Hello World, my first Java application */ public static void main (String args[]) { System.out.println("Hello World!"); // qui va il resto del programma principale }

17 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Hello World (application) Lo schema CONSIGLIATO di ogni applicazione é: class Applicazione{ /* Hello World, my first Java application - second version*/ public static void main (String args[]) { Applicazione p= new Applicazione(); } Applicazione() { System.out.println("Hello World!"); // qui va il resto del programma principale }

18 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Uso di JDK Compilazione: $javac HelloWorld.java produce HelloWorld.class (in realtà: un file class per ogni classe contenuta nel sorgente) Esecuzione… $ java HelloWorld (la classe indicata deve contenere il main) Obbligatorio specificare lestensione! Obbligatorio omettere lestensione!

19 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Basic tools Java TM 2 Platform, Standard Edition (J2SE TM ) Java TM 2 Platform, Standard Edition (J2SE TM ) The essential Java 2 SDK, tools, runtimes, and APIs for developers writing, deploying, and running applets and applications in the Java programming language.

20 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Advanced development tool Personal edition is free

21 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Advanced development tool Oracle JDeveloper free Oracle JDeveloper 10 g (10.1.3)

22 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Advanced development tool free Eclipse Project jdt java development tools subproject

23 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Un buon libro… Gratis in forma elettronica: Thinking in Java Bruce Eckel In Italiano: Thinking in Java Bruce Eckel Ed. Apogeo (in libreria)

24 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti The Tutorials and examples

25 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti More Tutorials and examples

26 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Facilità Java è basato sul C, come il C++. Java TOGLIE al C alcune caratteristiche difficili e pericolose (puntatori). Java AGGIUNGE al C le caratteristiche di un linguaggio object- oriented (classi, ereditarietà, messaggi). Java INTRODUCE una gerarchia di classi predefinite: AWT, IO, Lang(tipi, Math, Thread), Exeptions, Net, Utils(Vector, Dictionary, Date...)

27 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Robustezza La maggior parte degli errori sono legati alla gestione della memoria tramite i PUNTATORI : puntatori che puntano a locazioni illecite (non allocate) puntatori che puntano a locazioni lecite ma sbagliate indirizzi di vettori sbagliati memoria allocata e non più rilasciata (memory leaks) Soluzione di Java: ABOLIZIONE DEI PUNTATORI GARBAGE COLLECTION

28 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Differenze tra Java e C++ ?(Java == ((C++)- -)++)

29 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Forma di un programma In Java tutto e una classe. Lo scheletro minimo di un programma e: import <= Include intelligente (senza bisogno di #ifdef) NON cè precompilatore! import...; class myProgram { public static void main (String args[]) {... }

30 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Nomi I programmi Java includono nomi per identificare alcune entità di programmazione (packages, classes, interfaces, methods, variables, statement) Nomi validi sono composti da un numero illimitato di lettere e numeri UNICODE, iniziare con una lettera. I nomi non possone essere Java keywords.

31 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Unicode Java characters, strings, and identifiers are composed of 16-bit Unicode characters. This makes Java programs relatively easy to internationalize for non-English-speaking users. Most platforms cannot display all 38,885 currently defined Unicode characters The Unicode character set is compatible with ASCII and the first 256 characters (0x0000 to 0x00FF) are identical to the ISO (Latin-1) characters 0x00 to 0xFF. Unicode \u escape sequences are processed before the other escape characters

32 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Keywords Le keywords usate attualmente sono abstract boolean break byte case catch char class continue default do double else extends final finally float for generic if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient try void volatile while Oltre a queste, alcune keywords sono riservate per usi futuri : by value cast const future generic goto inner operator outer rest var

33 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Commenti 3 forme di commento: / * C style */ /* Questo tipo di commento può proseguire su pi linee */ /* NOTA: ATTENZIONE AI /*COMMENTI*/ NIDIFICATI! */ // C++ style // Una intera riga commentata a=a+3; // Commento su una linea di codice /**documentation */ /**Stile di commento usato da JAVADOC per la generazione automatica di documentazione */

34 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Tipi di dato primitivi TypeContainsDefaultSizeMin/Max Value booleantrue or falsefalse1 bitN.A. / N.A. charUnicode char\u bits\u0000 / \uFFFF Bytesigned integer08 bits-128 / 127 shortsigned integer016 bits / intsigned integer032 bits / longsigned integer064 bits / floatIEEE 754 f.p bits+/ E+38 / +/ E-45 doubleIEEE 754 f.p bits+/ E+308 / +/ E-324

35 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Literals (costanti) interi (sempre int, long se serve) 0777 ottale 0xFF esadecimale 77L long reali E01 double 10.4F 1.04E01F float boolean true false carattere tutte le escape sequences del C sono riconosciute (\n \t \ \ \\ …) Unicode: \u0022 has exactly the same meaning to the compiler as " stringhe questa e una stringa

36 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Arrays E possibile definire arrays di tutti i tipi di dati (elementari o classi). In fase di DEFINIZIONE non e necessario specificare la dimensione del vettore. Solo al momento della ALLOCAZIONE viene richiesto lo spazio desiderato. String[ ] strings; // this variable can refer to any String array strings = new String[10]; // one that contains 10 Strings strings = new String[20]; // or one that contains 20. float f[ ][ ] = new float[5][3]; //array bidimensionale char s[]={'+','-','*','/','=','C'}; // array inizializzato in creazione

37 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Class String

38 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Class String

39 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Class String

40 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Class String

41 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Class String

42 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti String Per trasformare il contenuto di una stringa in un intero: int Integer.parseInt(String s) Per trasformare il contenuto di una stringa in un float: float Float.parseFloat(String s)

43 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Parametri di ingresso /* sum and average command lines */ class SumAverage { public static void main (String args[]) { int sum = 0; float avg = 0; for (int i = 0; i < args.length; i++) { sum += Integer.parseInt(args[i]); } System.out.println("Sum is: " + sum); System.out.println("Average is: " + (float)sum / args.length); } I parametri del main sono inclusi in un vettore di String

44 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Operatori GruppoFunzioneOperatori Arithmetic comparazione= =, !=,, >= unitari +, - algebrici+, -, *, /, % postfissi++, -- Bit shift >, >>> bitwise comparison~, &, |, ^ Boolean relationali= =, != logici!, &, |, ^, &&, || String concatenazione+

45 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Operatori Since Java does not allow you to manipulate pointers directly, it does not support the reference and dereference operators *, ->, and &, nor the sizeof operator. Java also adds some new operators: The + operator applied to String values concatenates them. If only one operand of + is a String, the other one is converted to a string.

46 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti package Una collezione di classi correlate package myclasses; class A {...}; class B {...}; import myclasses.A; import myclasses.*;

47 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Annidamento di package package myclasses; class A {...}; package myclasses; class B {...}; package myclasses.veryUsefulClasses; class C {...}; import myclasses.*; // NON importa C! Definizione suggerita di un nome univoco per i packages: È basata sul nome internet (es.: it.unitn.science.mypackage)

48 Fac.Scienze – Università di Trento Programmazione 2 - Marco Ronchetti Annidamento di package I packages si riflettono in una struttura di directories myclasses A.classB.class veryUsefulClasses C.class