Programmazione ad Oggetti. Java Parte I



Похожие документы
IL LINGUAGGIO JAVA: CARATTERISTICHE

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++.

Informatica. Prof. A. Longheu. Introduzione a Java

Linguaggi di programmazione

Approccio stratificato

Panoramica: che cosa è necessario

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Strumenti per la programmazione

Ambienti di Sviluppo

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Architetture Applicative

Java: Compilatore e Interprete

Il linguaggio Java. Concetti base. I packages

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Il Sistema Operativo (1)

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

INFORMATICA 1 L. Mezzalira

Linguaggi 2 e laboratorio

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente:

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

Architettura di un sistema operativo

FONDAMENTI di INFORMATICA L. Mezzalira

Capitolo 3: Strutture dei sistemi operativi

PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE

Comunicazione tra Processi

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione al linguaggio Java

Corso di Informatica

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

dall argomento argomento della malloc()

Principi dell ingegneria del software Relazioni fra

Java Virtual Machine

DBMS e Linguaggi di programmazione nell'era di Internet

Introduzione alla Progettazione per Componenti

Programmazione in Java Parte I: Fondamenti

Componenti Web: client-side e server-side

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Il sistema operativo TinyOS

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Oggetti Lezione 3. aspetti generali e definizione di classi I

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Dispensa di Informatica I.1

RMI Remote Method Invocation

Protocolli e architetture per WIS

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Protezione. Protezione. Protezione. Obiettivi della protezione

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Linguaggi e Paradigmi di Programmazione

Variabili e tipi di dato

Fondamenti di programmazione in Java. Lezione III

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Allocazione dinamica della memoria - riepilogo

Architetture software. Virtualizzazione

Socket & RMI Ingegneria del Software - San Pietro

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Architettura di un computer

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Appunti dei corsi di Programmazione di Rete Sistemi di elaborazione: Reti II

I puntatori e l allocazione dinamica di memoria

Standard di comunicazione

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

LA SOLUZIONE. EVOLUTION, con la E LA TECNOLOGIA TRASPARENTE IL SOFTWARE INVISIBILE INVISIBILE ANCHE NEL PREZZO R.O.I. IMMEDIATO OFFERTA IN PROVA

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A.

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Introduzione alla Virtualizzazione

Programmare in Java. Olga Scotti

Installazione del JDK 6

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Programmazione ad oggetti

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

La gestione della memoria

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Programmi. Algoritmi scritti in un linguaggio di programmazione

Транскрипт:

Programmazione ad Oggetti Java Parte I Overview Caratteristiche generali 1

Caratteristiche generali Un moderno linguaggio orientato agli oggetti Pensato per lo sviluppo di applicazioni che devono essere eseguite in un ambiente eterogeneo connesso in rete Portabile Semplice Robusto Sicuro Multithreaded Portabilità Portabilità del codice sorgente Un programma scritto in un linguaggio ad alto livello per una determinata macchina virtuale (processore, s.o.) può essere riutilizzato in una macchina virtuale differente? Un esempio Livello Semantico Compilatore 1 Macchina 1 Processore 1 Ansi C Compilatore 2 Macchina 2 Processore 2 Gap Semantico Compilatore N Macchina N Processore N 2

Portabilità (2) Il codice sorgente scritto in Ansi C è portabile! ma la portabilità del codice sorgente richiede la ricompilazione su ogni piattaforma Inoltre, cosa succede se un programma C deve invocare API del sistema operativo? La portabilità è limitata a quelle macchine virtuali che supportano quelle specifiche API Portabilità di Java Java garantisce la portabilità del codice eseguibile grazie alla Java Virtual Machine (JVM) Write Once Run Everywhere! Livello Semantico Sorgente Java Eseguibile Java (Byte Code) generato dal compilatore Java JVM JVM JVM Interprete Java 1 Interprete Java 2 Gap Semantico Interprete Java N Macchina 1 Macchina 2 Macchina N Processore 1 Processore 2 Processore N 3

Ciclo di Sviluppo Nome.java Sorgente Compilatore Class Loader Nome.class Bytecode JVM Just in Time Compiler Sistema Operativo Processore Ciclo di Sviluppo (2) Il compilatore non produce codice macchina, ma un insieme ottimizzato di istruzioni detto BYTECODE. Il sistema run-time di Java emula una macchina virtuale (Java Virtual Machine) che esegue il BYTECODE. Ogni architettura per la quale la Virtual Machine sia implementata, può eseguire lo stesso programma Java. L efficienza di esecuzione di Java è superiore rispetto agli altri linguaggi interpretati (Tcl, Perl...), anche se non raggiunge quella dei linguaggi compilati. Inoltre l interprete Java fornisce compilatori just in time per trasformare a runtime il BYTECODE in codice macchina, guadagnando in velocità, ma perdendone la portabilità. 4

Ancora sulla portabilità Oggi possiamo continuare a dire Write Once, Run Everywhere? Java supporta nuovi dispositivi con caratteristiche hardware molto omogenee tra loro Le diverse piattaforme Java 2 Standard Edition (J2SE) E la piattaforma base per workstation e server Java 2 Enterprise Edition (J2EE) E una estensione della piattaforma base arricchita con servizi per la sicurezza, la gestione delle transazioni, Supporta il modello a componenti Enterprise Java Bean (EJB) Java 2 Micro Edition (J2ME) E la piattaforma ridotta per palmari, cellulari, 5

Le diverse piattaforme (2) Portabilità legata alla piattaforma J2SE-JVM ClassLoader Serialization Reflection RMI J2ME-KVM Sicurezza Un eseguibile prodotto da altri e scaricato via rete sulla propria macchina potrebbe trasmettere virus o accedere a dati privati. Un programma Java non può violare la sicurezza! L esecuzione di un BYTECODE Java é confinata nel sistema runtime che lo interpreta. Nel linguaggio non esistono i puntatori. L applet non può scrivere né leggere sul client, né aprire connessioni con altri sistemi. 6

Robustezza Controlli estensivi a compile-time e a run-time, per rilevare gli errori quanto prima possibile (es.: type checking) Per questo, le caratteristiche insicure di C e C++ sono rimosse: Nessuna gestione esplicita dei puntatori (no aritmetica dei puntatori, no malloc e free esplicite, ) Gestione della memoria con garbage collection Array e stringhe veri Verifica del byte-code a load-time Dinamicità Il codice è eseguibile anche in assenza di alcuni moduli: le classi necessarie per la esecuzione di un programma Java possono essere caricate e collegate dinamicamente quando servono Esempio: nuove release di moduli caricabili automaticamente dalla rete quando servono 7

Concorrenza Multithreading parte integrante del linguaggio: Applicazioni interattive più facili a scriversi Migliore "reattività" (anche se non real-time) Esempio: caricamento asincrono di immagini nei browser di rete riduce i tempi di attesa Ricchezza La Standard Library Java contiene una ricca collezione di classi e di metodi preconfezionati: Language support Utilities Input/output Networking Abstract Window Toolkit (AWT) 8

Package Un package raggruppa un insieme di classi correlate, che possono essere importate nelle applicazioni. L appartenenza ad un pacchetto si realizza inserendo all inizio del file l istruzione : package MyPackage; Per importare in una applicazione le classi del pacchetto: import MyPackage.*; java.lang java.io java.util java.net java.applet java.awt java.awt.image java.awt.peer Semplicità Sintassi simile a C e C++ (facile da imparare) Elimina i costrutti più "pericolosi" di C e C++ aritmetica dei puntatori (de)allocazione esplicita della memoria strutture (struct) definizione di tipi (typedef) preprocessore (#define) Aggiunge garbage collection automatica Conserva la tecnologia OO di base di C++ Rivisita C++ in alcuni aspetti (C++--==) 9

Distribuzione Pensato per essere eseguito in rete L ambiente run-time incorpora funzioni di rete (sia di basso livello: TCP/IP, che di alto livello: HTTP, ) La rete è facilmente accessibile (come i file locali) 10