Java: un linguaggio per applicazioni di rete

Documenti analoghi
Linguaggi di programmazione e astrazione

Linguaggi di Programmazione

Macchine astratte, linguaggi, interpretazione, compilazione

Traduzione e interpretazione

Programma Master Programmatore Java

Lezione 2 Introduzione a Java (2)

Introduzione a Java A. FERRARI

Traduzione ed Interpretazione

Traduzione ed Interpretazione. Queste sconosciute

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Java: vantaggi e applicazioni di un linguaggio moderno in contesti aziendali e produttivi. Presentazione a cura di: Andrea Bertolini

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Linguaggi, Traduttori e le Basi della Programmazione

Prof. Pagani corrado JAVA

A. Ferrari. informatica. introduzione a Java. Alberto Ferrari Informatica

Linguaggi di Programmazione

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2)

Introduzione - aspetti generali dell informatica

Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione

Introduzione allo Studio dei Linguaggi di Programmazione. Corso di Linguaggi di Programmazione Informatica e Tecnologie Produzione Software

LINGUAGGI DI ALTO LIVELLO

Iniziare a programmare in C++

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Sistemi Operativi: Concetti Introduttivi

Fondamenti di Java Lezione n. 1. Che cos'è Java?

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Linguaggi di alto livello, compilatori e interpreti

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio. Messaggio

AMBIENTI DI PROGRAMMAZIONE

Macchine Astratte. Definizione e tipi di implementazione

Concetti introduttivi

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Programmazione: Sommario

Prefazione. Capitolo 1 Sistemi di elaborazione 1

Linguaggi di alto livello, compilatori e interpreti

Il linguaggio di programmazione Python

Linguaggi di programmazione

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Concetti introduttivi

permette di utilizzare lo stesso programma su CPU diverse (con opportuni traduttori)

Linguaggi di Programmazione

Cos'e un linguaggio di programmazione?

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010.

1: Linguaggi di Programmazione

1: Linguaggi di Programmazione

Programmazione. Andrea Passerini Informatica. Programmazione

Politecnico di Milano Facoltà del Design Bovisa. Ing. Marco Funaro Dipartimento di Elettronica e Informazione.

Indice. Prefazione. 3 Oggetti e Java 53

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Programmazione. Andrea Passerini Informatica. Programmazione

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

Concetti introduttivi

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

TCL PAD: UN EDITOR DI TESTO ESTENDIBILE, INCORPORABILE E CON INTERFACCE DI TEXT-PROCESSING

Metodologie di Programmazione. ovvero, Principi e Tecniche per la costruzione di programmi

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Macchine astratte, linguaggi, interpretazione, compilazione

Ingegneria del software

Introduzione. Sommario. Il software. Definizione di Ingegneria del software

Corso Programmazione Java Standard

Dichiarazione di una classe. Dichiarazione ereditarietà

STORIA E CARATTERISTICHE

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java

Cenni Storici. Introduction to Fortran 90. Maurizio Cremonesi, CINECA

Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste. Basi di Dati e Web. Credits to: Prof. M. Di Felice UniBO

Elementi di programmazione

Java e i Tipi di dati primitivi. Parte 3

La Programmazione. Cos è la programmazione? Concetti preliminari. Programmazione e Laboratorio di Programmazione Luca Tesei 1

I Linguaggi di Programmazione

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Sommario. La Programmazione. Programmare vs Usare un computer. Programmare vs Usare un computer. Programmi ognidove. Programmi ognidove

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Ingegneria del Software 4. Introduzione a UML. Dipartimento di Informatica Università di Pisa A.A. 2014/15

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

REGISTRI D'ESAME CODICE ESAME CORSO DI LAUREA NOME DEL CORSO LAUREA CFU

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe

Elementi di programmazione

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

LINGUAGGI DI ALTO LIVELLO

28/02/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Il sistema operativo

Introduzione a Java. Riferimenti

Introduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi

Transcript:

Java: un linguaggio per applicazioni di rete Moreno Falaschi Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena March 3, 2014 1

Caratteristiche di Java (SUN) Linguaggio semplice, orientato agli oggetti, distribuito, interpretato, indipendente dall architettura, portabile, alte-prestazioni, multi-thread, dinamico. Le caratteristiche di Java per applicazioni di rete: Un programma Java (applet) (sottoclasse della classe di sistema APPLET) può essere richiamato mediante alcune istruzioni (TAG apposito) inserite in un documento HTML eseguibili su un qualsiasi WEB-browser abilitato per Java. Un programma Java puo accedere a files contenenti suoni, immagini, testi ed altri programmi Java ovunque situati sulla rete WEB, mediante dei riferimenti basati su indirizzi WEB (URL). 2

Caratteristiche di rete: Permette una programmazione interattiva (creazione e gestione di finestre, movimenti del mouse, bottoni, menu, ecc...), indipendente dalla architettura! Queste caratteristiche non fanno parte del linguaggio, ma sono aggiunte mediante un gran numero di classi di sistema. L esecuzione dei programmi Java caricati sulla rete avviene con il metodo della migrazione del codice. Il codice Java eseguibile viene caricato dal WEB-browser prelevandolo dal sito remoto e viene eseguito sulla propria macchina. Non si aggravia il server remoto. L esecuzione locale è efficiente (alternative?) Quindi il costo maggiore (con le reti attuali, lente) risiede nel trasferimento del codice. 3

Java: caratteristiche linguistiche Linguaggio object-oriented, con una sintassi simile a C e C++. per permettere ai programmatori di linguaggi diffusi ed efficienti come C e C++ di passare agevolmente alla programmazione in Java È cosi agevole? C è procedurale, non è semplice passare ad una programmazione in stile O.O. Un programmatore C++ trova meno difficoltà però vi sono diverse differenze per le caratteristiche O.O. Linguaggio interpretato. Il compilatore Java produce codice intermedio indipendente dalla macchina (bytecode) che verrà poi interpretato dall interprete Java (sulla macchina astratta Java). La indipendenza dall architettura è fondamentale dato che il codice Java deve essere eseguito su architetture diversissime sulla rete. 4

Codice portabile: applicazioni sviluppate in Java eseguibili ovunque. Tutti i tipi di dato primitivi (ad esempio i tipi numerici) sono definiti mediante degli standard. i compilatori Java devono rispettarli (a differenza del C++) 5

Caratteristiche di Java È un linguaggio dinamico in quanto permette di caricare classi durante l esecuzione con opportuni metodi. Linguaggio distribuito: il package java.net (contenente la classe URL..) permette di caricare files distribuiti trattandoli come fossero locali. La versione Java 1.0 non dava nessuna possibilità di esecuzione distribuita in senso classico. Nella versione 1.1 è stata aggiunta la possibilità di invocare un metodo remoto contenuto in un oggetto Java su un sito remoto. Linguaggio semplice: pochi costrutti, semplici e sintatticamente simili a C e C++. Importanti rimozioni dal linguaggio: goto, puntatori, istruzioni esplicite per recuperare segmenti di memoria dinamica allocata per le strutture dati. 6

Caratteristiche linguistiche di Java Linguaggio Robusto: permette lo sviluppo di software affidabile Controllo dei tipi forte (quasi tutto statico) Assenza di puntatori Conversioni di tipo esplicite sugli oggetti controllate a run-time. Garbage collection, incrementale: meno errori gestione memoria. Meccanismi linguistici per la gestione delle condizioni di errore (eccezioni) 7

Sicurezza: l esecuzione del codice avviene sul proprio computer quindi bisogna evitare di caricare virus. Ovviamente non c e mai una garanzia totale, però: il bytecode non puo contenere operazioni di accesso alla memoria (niente puntatori) l interprete Java effettua un controllo accurato da questo punto di vista sul codice potenzialmente non sicuro verificando che il bytecode sia tutto codice eseguibile. Le richieste di risorse di sistema (come per esempio la gestione dei file) vengono monitorate da una classe di sistema SecurityManager. Molte limitazioni. In Java 1.1 si può aggiungere una firma digitale (di garanzia) crittografata al codice Java, per poter eseguire il codice in sicurezza. 8

Velocità e esecuzione parallela/distribuita Alta velocità: 20 volte più lento di codice C (in Java 1.0), 10 volte (in Java 1.1) Si puo compilare a run time in codice nativo. Alcuni interpreti Java includono compilatori Just in time Ci sono metodi in Java che permettono di interfacciarsi con codice compilato C o C++ (ovviamente perdendo la portabilita ) Linguaggio Multithread Quindi permette programmazione concorrente basata su thread (programmi sequenziali) eseguibili in parallelo e sincronizzati mediante il costrutto sincronized. classe di sistema Thread (creazione thread, assegnazione priorita, ecc..) costrutto syncronized. Permette di marcare regioni critiche e metodi che devono essere eseguiti in mutua esclusione. 9

Conclusioni: Java è un linguaggio intermedio tra scripting languages e linguaggi compilati in codice di basso livello come C e C++ Introduce un controllo diretto della multimedialità rendendo le operazioni interattive. È portabile e rende le applicazioni eseguibili ovunque. Alcune critiche/osservazioni: il linguaggio è semplice ma non è semplice usare le classi di sistema (oltre 500 metodi di sistema nella versione 1.1. Anche spiegare il significato dei parametri risulta complesso) La costruzione di un interfaccia grafica è meno automatica che in un linguaggio visuale. Il linguaggio non possiede ancora una definizione rigorosa fornita dai progettisti (esistono adesso molti lavori di ricerca che definiscono una semantica formale del nucleo del linguaggio). Le classi di sistema si apprendono per esempi. Risulta difficile poi fare modifiche con sicurezza. Sarebbe quindi opportuno avere a disposizione potenti strumenti di sviluppo del software. 10

Il fatto che manchi una definizione rigorosa può portare ad errori anche nell implementazione. Estensioni per la programmazione distribuita. Strumenti di ottimizzazione del codice Estensione dei tipi in Java. Verifica di correttezza di programmi Java. Utilità di altri linguaggi a più alto livello (linguaggi dichiarativi) compilati su Java, per ampliare l insieme delle possibili applicazioni: Intelligenza artificiale, sistemi esperti, problemi di ricerca di soluzioni, soluzione di vincoli. 11