Linguaggio Java e Android

Transcript

Linguaggio Java e Android
Linguaggio Java
e Android
Il web e Java dal 95 ad oggi
Da j2me ad Android
Html javascript css
Applicazioni web e dispositivi mobili
Linguaggio Java
● creato da James Gosling nel 1995
● Sun microsytem, 2007 licenza GPL
● Oracle acquista java nel 2010
● deriva dal c++
● simile a C#, J++, J# (microsoft .NET)
● Object Oriented (ereditarietà singola,
polimorfismo, fortemente tipizzato)
● compatibilità diverse piattaforme
le versioni di Java
1.0 Oak, anno 1996
1.2 Playground, anno 1998
1.3 Kestrel, anno 2000
1.4 Merlin, anno 2002
1.5 Tiger, anno 2004
1.6 Mustang, anno 2006
1.7 Dolphin, anno 2011
1.8 Spider, anno 2014
Nota: spessi si dice solo il secondo numero es: java 8
java 5
●
●
●
●
●
annotazioni
generics
autoboxing
enumeration
varargs
java 7
●
●
●
●
●
costrutto switch con stringhe
nuovo costutto catch (con catch multipli)
gestione file (try-with-resources)
Diamond syntax (sintassi del diamante)
utilizzo underscore nei letterali numerici
Java 8
● espressioni lamba
● integrazione con javascript
● nuove api per data e ora
Le nuove caratteristiche renderanno java un po
meno “verboso”.
Sarà inoltre possibile creare dei pacchetti di
installazione più compatti.
Piattaforme e sigle
JDK: Java Development Kit
JRE: Java Runtime Environment
JVM: Java Virtual Machine
JSE: Standard Edition
JEE: Enterprise Edition
JME: Java Mobile Edition o Micro Edition
HTML
● Hyper Text Markup Language
● creato da Tim Berners-Lee, nel 1989 al
CERN di ginevra
● non è un linguaggio di programmazione, ma
di contrassegno
● utilizzato da un Browser
Versioni HTML
●
●
●
●
●
●
●
●
●
●
1991 Mosaic (NCSA) il primo browser
1993 HTML (link ipertestuali)
1995 HTML 2 (immagini, attrib. carattere)
1996 CSS1 W3C
1997 HTML 3.2 (table, frame)
1999 HTML 4 (fogli di stile,scripting)
2000 XHTML (html + xml)
2004 CSS2
2011 HTML 5
(???) CSS3
Javascript
● sviluppato da Brendan Elch della Netscape
Comunication, 1994
● primi standard 1997 e 1999 Ecmascript
● ultimo standard 2008 Ecmascript v5
● linguaggio di scripting, integrato in un altro
programma
● utilizzato pagine web, flash, pdf, ecc.
Android
● sviluppato da google nel 2007, per dispositivi
mobili
● HTC Dream, primo dispositivo con Android,
2008
● Android è basata su un kernel linux
● le app sono normalmente distribuite come
pacchetti apk e derivano da programmi scritti
in java
Caratteristiche Android
● Accesso multitouch (strisciate, tocchi e
pizzichi)
● sensori hardware: telecamere, giroscopi,
accellerometri, sensori di prossimità,
microfoni
● integrazione con reti wi-fi, bluetooth e
telefoniche
● applicazioni girano nella Dalwik Virtual
Machine
Versioni di Android
1.0, htc dream, 2008
2.0, eclair, 2009
2.2, froyo, 2010
2.3, gingerbread, 2011
3.0, honeycomb, 2011
4.0, ice cream sandwich, 2011
4.1, 4.2, 4.3 jelly bean, 2012-3
4.4 kitKat, 2014
giugno 2014: 4.4.4
file apk
● pacchetto autoinstallante
● file compresso (.zip) contiene:
○
○
○
○
○
cartella META-INF
cartella res
file classes.dex
file resources.arsc
file AndroidManifest.xml
sicurezza su android
● ogni applicazione deve dichiarare i permessi
di cui ha bisogno per funzionare (es:
accesso rubrica, accesso rete, ecc.)
● le app su google play sono automaticamente
testate
● antivirus per android
● ambienti di emulazione (es: bluestack)
iPhone e iOS
2007 Steve Jobs presenta iPhone
2008 iPhone 3G
2008 iPhone 3GS
2010 iPhone 4
2011 iPhone 4S
2012 iPhone 5
2013 iPhone 5S e 5C
Sistema opertaivo iOS, variante de MAC OS X
Symbian
● derivato da EPOC, s.o. utilizzato dai palmari
Psion (fine anni ’90)
● utilizzato da sony ericson e nokia fino al
2011
● nel 2013 nokia passa definitivamente a
windows phone
● attualmente non è supportato da alcun hw
recente
Whidows phone 7
● presentato nel 2010
● deriva, ma non è compatibile col precedente
windows mobile
● nel 2011 è stato introdotto dai cell Nokia
Lumia
● versione 7.5 Mango (fine 2011)
● versione 7.8 (2013)
Creare applicazioni per smartphone
● creare applicazione “native”
○ alta complessità
○ problemi di compatibilità e portabilità dell’
applicazione
○ linguaggio Java (eclipse + plugin android)
● creare pagine web
○ html, css, javascript
○ complessità media (phonegap)
○ possibilità di utilizzo strumenti visuali (jquery mobile,
Buzztouch e Sencha Touch, d)
Craere contenuti per smartphone
● esistono vari metodi del tutto visuali per
creare pagine web (es: jimdo, joomla,
wordpress, ecc.)
● ugualmente esistono modi per creare
contenuti per gli smartphone (es:
GoodBarber, AppInventor, AppMakr,
ShoutEm, Mippin, Genwi, BuildAnApp, Apps
Builder, MoFuse, Wapple)
Le app
● su appstore (iphone) 900’000 apps
● su google play ci sono più di un milione di
apps!
● una nuova app:
○
○
○
○
○
○
progetto (indagine di mercato, benchmarketing)
sviluppo
testing
pubblicazione
manutenzione (patch, nuove release)
pubblicità
Schermo
schermo dispositivi android:
l’80% dei dispositivi ha una dimensione dai 3.5
ai 7 pollici (da 7 a 17cm)
Densità dello schermo
● non è facile progettare applicazioni che si
vedano “bene” su qualsiasi dispositivo
● è conveniente mantenere le proporzioni
● concetto di densità:
Density-Independent Pixel (dp) è
equivalente ad 1px su uno schermo da
160dpi; il s.o. in automatico calcola i pixel
effettivi
Tipi di interfaccia
Esistono varie possibilità per mostrare le
informazioni.
● tabs
● paginazione a link
● scorrimento della pagina
Esistono tecniche di caricamento sincrono (tutti
i dati vengono caricati in un’unico istante) e
asincrono (i dati vengono caricati su richiesta)
Tipi di applicazioni
Portable: non ha bisogno di installazione
Standalone: non ha bisogno di altri supporti
(es rete)
Web Application: l’applicazione gira su un
server web ed è utilizzata dai utenti (client)
tramite un browser
Per far girare una web application occorre creare un server
web locale, utilizzando ad esempio wamp, server2go ,
WOS, ecc.
Tecnologia AJAX
● Asynchronous JavaScript and XML
● Tecnologia che permette di aggiornare solo
alcune parti della pagina, rendendo molto
più veloce la fruizione del contenuto da parte
dell’utente.
● Molto utilizzata, utilizza necessariamente un
web server
● Viene solitamente utilizzata all’interno di
pagine html tramite codici javascript
Tecnologia client server
● il Client chiede, il Server risponde
● è la tecnologia di base delle pagine web:
○ il client preme un link sulla pagina web e il browser
invia una nuova richiesta al server
○ il server elabora la richiesta e trasmette al client (al
browser) il contenuto richiesto
○ il browser (client) riceve le informazioni e le
visualizza
Streaming
● Tecnologia utilizzata per la fruizione di flussi
molto grandi di dati
● I dati vengono elaborati dal client man mano
che arrivano
● Non è necessario scaricare l’intero flusso
per poterlo visualizzare
● Il server deve essere predisposto per l’
erogazione di contenuti in streaming
(protocollo rtp: o rtsp:)