ssssssssss

37
ssssssssss e quello che gli altri sanno fare sicur meglio e/o hanno già fatto. erale lo sviluppo di applicazioni softw pone sempre gli stessi problemi e que problemi sono ben noti.

description

ssssssssss. Non fare quello che gli altri sanno fare sicuramente meglio e/o hanno già fatto. In generale lo sviluppo di applicazioni software “vere” pone sempre gli stessi problemi e questi problemi sono ben noti. The Java Technology. Corso TAPS 2001/02 Gianna Reggio. Sources. - PowerPoint PPT Presentation

Transcript of ssssssssss

Page 1: ssssssssss

ssssssssss

Non fare quello che gli altri sanno fare sicuramente meglio e/o hanno già fatto.

In generale lo sviluppo di applicazioni software “vere” pone sempre gli stessi problemi e questi

problemi sono ben noti.

Page 2: ssssssssss

The Java Technology

Corso TAPS 2001/02

Gianna Reggio

Page 3: ssssssssss

Sources

• ogni cosa disponibile in lineahttp://java.sun.com/– specifiche (specification)

* descrizioni tecniche precise

– tutorial/demo/esempi– software

* tutto libero, eccetto le versioni “ricche” di alcuni strumenti di sviluppo

Page 4: ssssssssss

Java Technology

• sia linguaggio di programmazione (Java ) sia una piattaforma

• Java– imperative OO, ma molto di più (es. multithread)– "write once, run anywhere"

* compilatore/tradutttore (1 solo) * programmi Java -> Java bytecodes * vari interpreti per il bytecodes per le diverse piattaforme* Java bytecodes: linguaggio macchina per la Java Virtual

Machine (Java VM)* interprete del Java bytecodes = implementazione della Java VM* stesso programma può essere eseguito su ogni computer che

ha una Java VM

Page 5: ssssssssss

Java Platform 1

• platform – ambiente hardware o software dove sono eseguiti i

programmi (Windows 2000, Linux, Solaris, MacOS)– una platform in genere può essere descritta come una

combinazione di sistema operativo e hardware

• la Java platform è solamente software e viene eseguita al di sopra di altre piattaforme basate sull’hardware

Page 6: ssssssssss

Java Platform 2

• consiste di– Java Virtual Machine (Java VM) – Java Application Programming Interface (Java API)

• Java API – collezione di software components/artifacts pronti per

l’uso, es. per gestire Graphical User Interface (GUI)– organizzate in librerie di classi e interfaces correlate

(packages)

Java API e Java VM isolano il programma dall’hardware

Page 7: ssssssssss

Software Development Kit

IntegratedDevelopmentEnvironment

Java Platform: più dettagliata

(hardware based) piattaforme

JRE (Java RuntimeEnvironment)

Java VM(JavaVirtual Machine)

API(ApplicationProgrammingInterface)

Page 8: ssssssssss

Cosa supporta l’API• Gli essenziali

– oggetti, tipi base, strutture dati, threads, input/output, ... • Applets/servlets (programmi speciali client/server side)• Networking: URLs, TCP, UDP, sockets e indirizzi IP • Internazionalizzazione

– aiuta i programmi ad adattarsi alla locazione di uso• Sicurezza ad alto e basso livello

– firma elettronica, gestione delle chiavi pubbliche e private, dei certificati, e controllo degli accessi

• Software components: JavaBeans• Object serialization

– permette persistenza “leggera” e comunicazione via Remote Method Invocation (RMI).

• Java Database Connectivity (JDBC)– permette l’accesso uniforme a database relazionali

• grafica 2D e 3D, accessibilità, server, collaborazione, telefonia, parola, animazione …..

Page 9: ssssssssss

Java 2 Platform• Tre edizioni

– Standard Edition (J2SE)

fornisce compilatori, strumenti, runtime support e API essenziali per scrivere, installare ed eseguire applicazioni ed applet Java

– Enterprise Edition (J2EE)le sue tecnologie e il suo component model semplifica lo sviluppo e l’installazione di applicazioni “enterprise” (a unit of economic organization or activity; especially: a business organization)

– Micro Edition (J2ME)un Java runtime environment altamente ottimizzato indirizzato specificamente a “computer piccoli”: smart card, pager, telefonini, set-top box (dispositivo che permette ad una televisione di diventare una user interface per Internet e ricevere e decodificare trasmissioni digitali)

Page 10: ssssssssss

API / SPI / “componenti” (1)

• Java Application Programming Interface (API)– codice già scritto organizzato in packages relativi ad

argomenti comuni– Java package

A package is a collection of related classes and interfaces providing access protection and namespace management.

* per usare una classe o un’interfaccia in un package˚ usare il nome qualificato completo java.awt.BorderLayout˚ inportare la classe o l’interfaccia import java.awt.BorderLayout;

˚ importare tutto il package import java.awt.*;

– interfaces (intese come in Java)A Java programming language keyword used to define a collection of method definitions and constant values. It can later be implemented

by classes that define this interface with the "implements" keyword.

Page 11: ssssssssss

API / SPI / “componenti” (2)

• Service Provider Interface (SPI)– il mezzo con cui certe API precisano come gli

sviluppatori possano scrivere il codice corrispondente ai servizi di cui necessitano per funzionare

– Java package

• Componenti leggerissime (“veline”)– componente model = commenti– component framework = Java interfaces + packages

Page 12: ssssssssss

J2SE

Page 13: ssssssssss

Java 2 Standard Edition (J2SE) v1.4.1

JavaTM 2 SDK, Standard EditionDocumentation

Version 1.4.1

Disponibile on line ahttp://java.sun.com/j2se/1.4.1/docs/index.htmldownload ahttp://java.sun.com/j2se/1.4.1/download.html#docs

Page 14: ssssssssss

J2SE overview

Solaris Linux Windows MacOS Other

Java Hotspot VM Runtime

Java Hotspot Client Compiler Java Hotspot Server Compiler

Lang Util New I/O Networking

Collections JNI Security

XML Logging Beans Locale Support

Java 2DSound Input Methods Accessibility

Swing

Java Web Start Java Plug-in

Java Compiler

Java Debugger Javadoc JPDA

RMI JDBCJNDICorba

Platforms

JavaVirtual

Machine

CoreAPIs

IntegrationAPIs

User InterfaceToolkits

DeploymentTechnologies

DevelopmentTools & APIs

JRE

SDK

Preferences

AWT

Page 15: ssssssssss

Platforms

• implementazioni Sun del Java 2 SDK and Java Runtime Environment per– Microsoft Windows– Linux– Solaris Operating Environment (Sun)

• implementazioni non-Sun per altri sistemi operativi– Macintosh

Page 16: ssssssssss

Java Virtual Machines• 2 implementazioni della Java VM

– Java HotSpot Client VM * default * miglior performance se eseguita su un client

– Java HotSpot Server VM* miglior performance se eseguita su un server

• Common features della tecnologia HotSpot – Adaptive compiler

* applicazioni sono eseguite da un interprete standard, ma il codice è analizzato per scoprire possibili performance bottlenecks, o “hot spots”, che vengono quindi compilati

– Rapid memory allocation (per gli oggetti) e garbage collection

– Thread synchronization* Java supporta multiple threads (concurrent paths of program

execution)

Page 17: ssssssssss

API: Lang & Util• Lang :le classi fondamentali per il linguaggio Java

– asserzioni (nuovo in Java 2)

• Util: varie cose, tra cui– espressioni regolari

– zip/gzip– jar (file in formato Java Archive = zip + manifesto)

– supporto per riflettività (il linguaggio accede e manipola I suoi programmi)

• permette alle applicazioni di immagazzinare e recuperare preferenze degli utenti e del sitema, e dati sulla configurazione

API: Preferences

Page 18: ssssssssss

Collections Framework• collection = oggetto che rappresenta un gruppo di oggetti

(come la classe Vector)• il framework offre strumenti di rappresentare e manipolare

in modo unitario le collections indipendentemente dai dettagli delle loro implentazioni– Collection Interfaces, per

* vari tipi di insiemi, liste, mappe

– diverse implementazioni* General-purpose

* Legacy

* …..

– algoritmi* metodi che eseguono varie funzioni, come ordinare una lista

– Array Utilities* Utility functions for arrays of primitives and reference objects.

Page 19: ssssssssss

Logging• supporto per produrre log reports

– catturando informazioni come * security failures* configuration errors* performance bottlenecks* ….

– ritornandole come testo o XML in memoria o su streams, sockets,...

• offre il supporto di base per lavorare con documenti XML

• prossimamente nel corso

XML

Page 20: ssssssssss

New I/O

• offre nuove features e migliori performance per gestire l’I/O

• supplementa le facilities del package java.io

Page 21: ssssssssss

Networking

• supporto per implementare applicazioni di (in, sulla) rete– supporto per usare IP e UDP– socket per comunicare con ogni server su Internet o per

implementarsene uno– classi per usare gli Universal Resource Locators (URLs)

per recuperare dati su Internet– socket sicuri per comunicare in modo sicuro usando

SSL, e opzionalmente per criptare i dati ed autenticare coloro con cui si comunica

Page 22: ssssssssss

Security• supporto per stabilire e gestire “politiche di accesso” alle

risorse da parte del codice (permessi di read/write, restrizioni sulle applet)

• crittografia– supporto per

* firma digitale

* sintesi dei messaggi

* creazione e gestione di chiavi

* gestione dei certificati

* Kerberos

– basata su SPI (Service Provider Interface)* per conneterle a “classi” (componenticomponenti) che realizzano effettivamente le

funzionalità

* per scegliere quale algoritmo utilizzare

• tools

Page 23: ssssssssss

JNI (Java Native Interface)

• permette al codice eseguito da una Java Virtual Machine di interoperare con applicazioni e librerie scritte utilizzando altri linguaggi di programmazione, come C, C++, e assembler

• aiuta a sviluppare applicazioni adattabili alle varie lingue e regioni (es. messaggi all’utente, formato dei numeri e date)

Internationalization

Page 24: ssssssssss

Java Beans

• aggiunge la (una?) tecnologia a componenti (dette beans) alla piattaforma

• prossimamente

Corba• Common Object Request Broker Architecture (CORBA)

– è uno standard OMG – per un framework (middleware)

* object-oriented* distribuito* che supporta l’interoperabilità

Page 25: ssssssssss

Java Naming and Directory Interface (JNDI)

• fornisce funzionalità per “naming”

* come dei nomi sono associati a delle cose e come le cose sono ritrovati usando i loro nomi

“directory” * ai nomi sono associati anche degli attributi, le cose si possono cercare

anche usando questi attributi

esempi: Unix/Linux file naming system, DNS

indipendenti dalla loro implementazione • per accedere in modo comune una varietà di servizi N&D• consiste di

– una API (Application Programming Interface) – uno SPI (Service Provider Interface)

• Service Provider implementati da SUN– DNS, RMI Registry Service Provider , COS name server per accedere a

referenze ad oggetti CORBA, ...

Page 26: ssssssssss

Java Remote Method Invocation (RMI)

• Distributed Object Applications – costituite da diversi programmi

* server˚ di solito crea degli oggetti remoti, rende i riferimenti a tali oggetti

accessibili, e poi aspetta che i clienti chiamino i metodi di tali oggetti

* client˚ di solito ottiene dei riferimenti a degli oggetti remoti su un server,

e poi chiama dei loro metodi

– oggetto remoto* i suoi metodi possono essere chiamati da un’altra Java VM,

possibilmente su un altro host* ha una o più interfacce remote (scritte in Java) che dichiarano i suoi

metodi remoti* Remote method invocation (RMI) è l’azione di invocare un metodo di

una interfaccia remota di un oggetto remoto

Page 27: ssssssssss

Distributed Object Applications

• necessitano di:– localizzare oggetti remoti

* un’applicazione può registrare i suoi oggetti remoti usando rmiregistry, il semplice naming system di RMI

* le applicazioni possono semplicemente scambiarsi riferimenti ad oggetti remoti

– comunicare con gli oggetti remoti* RMI si prende cura di ciò, al programmatore la comunicazione

remota sembra la solita chiamata di metodo

– caricare il bytecodes per le classe degli oggetti passati come parametri o valori di ritorno

* RMI offre I meccanismi per caricare il codice degli oggetti e per trasmettere I suoi dati

Page 28: ssssssssss

esempio

client

server

registry

web server

RMIRMI

RMI

URL protocol

URL protocol

URL protocol(HTTP, FTP, …)

web server

registrazione

richiesta riferimento

comunicazione

classloading

Page 29: ssssssssss

I/O speciali

• Sound– per catturare, processare e suonare dati audio e MIDI,

include un sound engine

• Input Methods– per inputtare testo senza usare la tastiera solita (lingue

orientali, handwriting, voce)

• Accesibility– per creare semplicemente applicazioni utilizzabili da

disabili (lettori di schermo, riconoscimento del parlato, braille displays)

Page 30: ssssssssss

JDBC• non un acronimo, ma si può pensare come “Java Database

Connectivity”• è una API (Java puro) per accedere virtualmente ogni genere di dati

tabulari: database relazionali (anche al sapore OO), file contenenti data tabulari,

• rende facile mandare query SQL (qualunque dialetto) • con JDBC è possibile scrivere applicazioni eseguibili su ogni Java VM

non dipendenti dal tipo di database usato

Open Database Connectivity (ODBC)

Page 31: ssssssssss

Abstract Window Toolkit (AWT)

• support la programmazione di Graphical User Interface (GUI)

• include– un ricco insieme di costituenti (component) di interfacce – un robusto meccanismo per gestire eventi – strumenti per gestire disegni ed immagini (forme, colori,

font)– gestori del layout, per organizzare il layout delle finestre

senza dipendere dalla misura della finestra o dalla risoluzione dello schermo

– classi per gestire il trasferimento di dati via cut-and-paste attraverso clipboard della piattaforma

Page 32: ssssssssss

Project Swing

• implementa un insieme di GUI components• usando solo Java• che dovrebbero avere lo stesso aspetto su ogni

piattaforma (Microsoft Windows, Solaris, Macintosh)

• contiene la versione 100% Java puro certificata delle componenti GUI di AWT (Button, Scrollbar, Label, etc.), più un ricco insieme di componenti a più alto livello (come tree view, list box, e tabbed panes)

Page 33: ssssssssss

Java Web Start– una tecnologia per il deployment che permette di

lanciare applicazioni complete con un click da un Web browser (es. uno spreadsheet, un Internet chat client) senza complicate procedure di installazione

The Java Plug-in Component

• permette ad applets di essere eseguite nei Web browsers Netscape Navigator e Microsoft Internet Explorer

Page 34: ssssssssss

Development Tools & APIs• Java Compiler

– traduce i programmi Java in Bytecode

• Java Debugger– aiuta a trovare gli errori nei programmi Java

• Javadoc– produce pagine HTML da file che contengono classi

Java utilizzando i commenti

• Java Platform Debugger Architecture (JPDA)– aiuta a sviluppare debuggers per applicazioni Java

Page 35: ssssssssss

IDE (Integrated Development Tool)

• Sun ONE Studio 4 update 1 - Community Edition (free)

• In laboratorio

Page 36: ssssssssss

Riferimenti su JESE

• The Java Technology Phenomenonhttp://java.sun.com/docs/books/tutorial/getStarted/intro/

index.html

• J2SE il sito http://java.sun.com/j2se/

• J2SE documentazione • http://java.sun.com/j2se/1.4.1/docs/index.html

Page 37: ssssssssss

THE END