dal cloud al mobile con tecnologie google
TRANSCRIPT
FLY S.O.S."Dallo sviluppo cloud a quello mobile con
tecnologie Google"
http://www.7seeds.info
1. Il progetto2. L’architettura3. Tecnologie Google per lo sviluppo
1. Google App Engine2. Google Web Toolkit3. Android SDK
4. Sviluppo web oriented1. Web compliant2. API REST3. Formato JSON4. Autenticazione
5. Modello di sviluppo
Parleremo di
L’architettura
API RESTRisposta JSON
oAuth2
Tecnologie Google per lo sviluppo
BACKEND: Google App Engine
BACKEND: Google App Engine
BACKEND: Google App Engine
Cloud by Google: Platform as a Service
BACKEND: Google App Engine
Cloud by Google: Platform as a Service• Piattaforma pronta per la pubblicazione
BACKEND: Google App Engine
Cloud by Google: Platform as a Service• Piattaforma pronta per la pubblicazione• Autoscaling delle applicazioni
BACKEND: Google App Engine
Cloud by Google: Platform as a Service• Piattaforma pronta per la pubblicazione• Autoscaling delle applicazioni
Offre account gratuiti limitati
BACKEND: Google App Engine
Cloud by Google: Platform as a Service• Piattaforma pronta per la pubblicazione• Autoscaling delle applicazioni
Offre account gratuiti limitati• Limiti giornalieri sulle risorse
BACKEND: Google App Engine
Cloud by Google: Platform as a Service• Piattaforma pronta per la pubblicazione• Autoscaling delle applicazioni
Offre account gratuiti limitati• Limiti giornalieri sulle risorse• Pagamento a consumo
App Engine - Features
App Engine - Features
Ricca offerta di API e tecnologie
App Engine - Features
Ricca offerta di API e tecnologie• Linguaggi supportati: Java, Python
App Engine - Features
Ricca offerta di API e tecnologie• Linguaggi supportati: Java, Python• Supporto a diverse tecnologie out-of-the-box
App Engine - Features
Ricca offerta di API e tecnologie• Linguaggi supportati: Java, Python• Supporto a diverse tecnologie out-of-the-box
• Datastore
App Engine - Features
Ricca offerta di API e tecnologie• Linguaggi supportati: Java, Python• Supporto a diverse tecnologie out-of-the-box
• Datastore• Memcache
App Engine - Features
Ricca offerta di API e tecnologie• Linguaggi supportati: Java, Python• Supporto a diverse tecnologie out-of-the-box
• Datastore• Memcache• XMPP server
App Engine - Features
Ricca offerta di API e tecnologie• Linguaggi supportati: Java, Python• Supporto a diverse tecnologie out-of-the-box
• Datastore• Memcache• XMPP server• Task Queue
App Engine - Features
Ricca offerta di API e tecnologie• Linguaggi supportati: Java, Python• Supporto a diverse tecnologie out-of-the-box
• Datastore• Memcache• XMPP server• Task Queue
• Accesso a API Google (autenticazione)
App Engine - Features
App Engine - FeaturesAmbiente completo per lo sviluppo
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python• Replica locale dei servizi disponibili in produzione
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python• Replica locale dei servizi disponibili in produzione• Software CLI per la pubblicazione
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python• Replica locale dei servizi disponibili in produzione• Software CLI per la pubblicazione• Forte integrazione con Eclipse tramite plugin ufficiali
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python• Replica locale dei servizi disponibili in produzione• Software CLI per la pubblicazione• Forte integrazione con Eclipse tramite plugin ufficiali
Limiti della piattaforma
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python• Replica locale dei servizi disponibili in produzione• Software CLI per la pubblicazione• Forte integrazione con Eclipse tramite plugin ufficiali
Limiti della piattaforma• No threads
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python• Replica locale dei servizi disponibili in produzione• Software CLI per la pubblicazione• Forte integrazione con Eclipse tramite plugin ufficiali
Limiti della piattaforma• No threads• No database SQL
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python• Replica locale dei servizi disponibili in produzione• Software CLI per la pubblicazione• Forte integrazione con Eclipse tramite plugin ufficiali
Limiti della piattaforma• No threads• No database SQL• No accesso al filesystem
App Engine - FeaturesAmbiente completo per lo sviluppo
• SDK per i linguaggi supportati ufficialmente Java, Python• Replica locale dei servizi disponibili in produzione• Software CLI per la pubblicazione• Forte integrazione con Eclipse tramite plugin ufficiali
Limiti della piattaforma• No threads• No database SQL• No accesso al filesystem• Tutti i task hanno un tempo limite
FRONTEND: GWT (area backoffice)
FRONTEND: GWT (area backoffice)
FRONTEND: GWT (area backoffice)
Google Web Toolkit per sviluppo RIA
FRONTEND: GWT (area backoffice)
Google Web Toolkit per sviluppo RIAfrom JAVA to JAVASCRIPT Widgets
FRONTEND: GWT (area backoffice)
Google Web Toolkit per sviluppo RIAfrom JAVA to JAVASCRIPT WidgetsCompatibilità crossbrowser
GWT - Features
GWT - Features
GWT - Features
Plain Old Java: ambiente di sviluppo familiare (oggetti, test...)
GWT - Features
Plain Old Java: ambiente di sviluppo familiare (oggetti, test...)
Utilizza servlet per comunicazioni RPC client/server
GWT - Features
Plain Old Java: ambiente di sviluppo familiare (oggetti, test...)
Utilizza servlet per comunicazioni RPC client/serverPermette l’utilizzo di interfacce condivise tra client e server
GWT - Features
Plain Old Java: ambiente di sviluppo familiare (oggetti, test...)
Utilizza servlet per comunicazioni RPC client/serverPermette l’utilizzo di interfacce condivise tra client e serverMolti widget già pronti (tabelle, popup ...)
GWT - Features
Plain Old Java: ambiente di sviluppo familiare (oggetti, test...)
Utilizza servlet per comunicazioni RPC client/serverPermette l’utilizzo di interfacce condivise tra client e serverMolti widget già pronti (tabelle, popup ...)Integrazione Eclipse - Browser per debugging
MOBILE DEVICE: Android
MOBILE DEVICE: Android
MOBILE DEVICE: Android
Open-source
MOBILE DEVICE: Android
Open-sourceDisponibile per molti device
MOBILE DEVICE: Android
Open-sourceDisponibile per molti deviceSviluppo e distribuzione gratuita
MOBILE DEVICE: Android
Open-sourceDisponibile per molti deviceSviluppo e distribuzione gratuitaGrande visibilità nel Market
MOBILE DEVICE: Android
Open-sourceDisponibile per molti deviceSviluppo e distribuzione gratuitaGrande visibilità nel MarketPoca qualità della concorrenza
Android - Features
Android - Features
Android - Features
Sviluppo in Java
Android - Features
Sviluppo in JavaSDK ufficiale con estensioni delle classi
Android - Features
Sviluppo in JavaSDK ufficiale con estensioni delle classiJVM dalvik depotenziata (classi in blacklist)
Android - Features
Sviluppo in JavaSDK ufficiale con estensioni delle classiJVM dalvik depotenziata (classi in blacklist)Necessario Eclipse con l’emulatore (ottima integrazione!)
Android - Features
Sviluppo in JavaSDK ufficiale con estensioni delle classiJVM dalvik depotenziata (classi in blacklist)Necessario Eclipse con l’emulatore (ottima integrazione!)UIDesigner povero (per ora), necessario XML a mano
Android - Features
Sviluppo in JavaSDK ufficiale con estensioni delle classiJVM dalvik depotenziata (classi in blacklist)Necessario Eclipse con l’emulatore (ottima integrazione!)UIDesigner povero (per ora), necessario XML a manoViste utente diventano “Activities”
Sviluppo web oriented
HTTP
HTTP
HTTP 1.1
HTTP
Universale
HTTP 1.1
HTTP
UniversaleSemplice da implementareHTTP 1.1
HTTP
UniversaleSemplice da implementareStabile e consolidatoHTTP 1.1
HTTP
UniversaleSemplice da implementareStabile e consolidatoIt just works (everywhere)
HTTP 1.1
FRONTEND: HTML (area utente)
FRONTEND: HTML (area utente)
FRONTEND: HTML (area utente)
Standard e compatibile con ogni device
FRONTEND: HTML (area utente)
Standard e compatibile con ogni devicePersonalizza la UX per i diversi media
FRONTEND: HTML (area utente)
Standard e compatibile con ogni devicePersonalizza la UX per i diversi mediaLeggero da scaricare dal browser
FRONTEND: HTML (area utente)
Standard e compatibile con ogni devicePersonalizza la UX per i diversi mediaLeggero da scaricare dal browserVeloce da sviluppare
REST
REST
REST
REST
Chiaro e semplice
REST
REST
Chiaro e sempliceSemanticoREST
REST
Chiaro e sempliceSemanticoRisorse con identificativi univociREST
REST
Chiaro e sempliceSemanticoRisorse con identificativi univociFacilmente estendibile
REST
JSON
JSON
JSON
JSON
Leggero
JSON
JSON
LeggeroSenza schemaJSON
JSON
LeggeroSenza schemaSupportato da tutti i linguaggi
JSON
JSON
LeggeroSenza schemaSupportato da tutti i linguaggiConversioni più veloci di XML
JSON
oAuth
oAuth
oAuth
Tecnologia innovativa
oAuth
Tecnologia innovativaStandard de facto
oAuth
Tecnologia innovativaStandard de factoMaggior sicurezza
oAuth
Tecnologia innovativaStandard de factoMaggior sicurezzaMaggior controllo negli accessi
Modello di sviluppo
Modello di sviluppo
Analisi [30 ore a persona]
Modello di sviluppo
Analisi [30 ore a persona]
Progettazione [40 ore a persona]
Modello di sviluppo
Analisi [30 ore a persona]
Progettazione [40 ore a persona]
Progettazione di Dettaglio [30 ore a persona]
Modello di sviluppo
Analisi [30 ore a persona]
Progettazione [40 ore a persona]
Progettazione di Dettaglio [30 ore a persona]
Codifica [50 ore a persona]
Modello di sviluppo
Analisi [30 ore a persona]
Progettazione [40 ore a persona]
Progettazione di Dettaglio [30 ore a persona]
Codifica [50 ore a persona]
Verifica [25 ore a persona]
Modello di sviluppo
Pro
Pro
1)Tecnologie consistenti ( Java )
Pro
1)Tecnologie consistenti ( Java )2)Tecnologie open-source
Pro
1)Tecnologie consistenti ( Java )2)Tecnologie open-source3)Pronto alla produzione senza ostacoli
Pro
1)Tecnologie consistenti ( Java )2)Tecnologie open-source3)Pronto alla produzione senza ostacoli4)Approfondimento di nuove tecnologie
Pro
Contro
Contro
1)Verbosità linguaggio Java e suoi framework
Contro
1)Verbosità linguaggio Java e suoi framework2)Programmazione mobile non cross-platform
Contro
1)Verbosità linguaggio Java e suoi framework2)Programmazione mobile non cross-platform3)Molte ore dedicate alla documentazione
Contro
1)Verbosità linguaggio Java e suoi framework2)Programmazione mobile non cross-platform3)Molte ore dedicate alla documentazione4)Google App Engine non configurabile
Contro