Archivi categoria: android

Come diventare uno sviluppatore Android – (android skills 2015)

FONTE ORIGINALE (by 

Si sa che le app mobile (applicazioni per mobile)  collegano sempre più gente del pianeta, e permettono agli utenti di tutto il mondo ad interattuare o  interagire  in modo sempre più interessante e innovativo come non si era mai immaginato, il lavoro dello sviluppatore app mobile è diventato sempre più arricchente, appagante, e necessario per l’economia globale moderna.

Le applicazioni per cellulari che usiamo ogni giorno hanno cambiato il nostro modo di comunicare e di consumare intrattenimento, anche il nostro modo di imparare le cose sul mondo.  Non sarebbe male se si pensasi allo sviluppo delle mobile app come ad una delle industrie di lavoro più cool (di moda – più trainante) del momento.

Quindi, come si fa a diventare uno sviluppatore di applicazioni per mobile (appmobile – mobileapp developer ) ?

Ecco la sua versione essenziale : si sceglie una delle piattaforme – come Android ,iOS o Windows Mobile – si apprendono le competenze tecniche di base, se si cimenta  sulle proprie competenze trasversali -migliorandole (soft skills), e ci si diventa.

Come diventare uno sviluppatore Android ?

Ma veniamo in un  po più in dettaglio. Qui, stiamo andando ad affrontare la prospettiva di diventare uno sviluppatore di Android appositamente (dedicato ).

Perché Android?

Android a livello globale, è il leader indiscusso della quota di mercato degli smartphone. Grazie alla crescita dei mercati emergenti come il Messico, la Turchia e il Brasile, quella posizione dominante non tramuterà nel breve periodo.

android developer
android developer

Grafico via 9to5Mac

facendo si che questa preponderanza di mercato si traduca in una grave  difficoltà, per la sicurezza del lavoro degli sviluppatori di Android.

Inoltre, la piattaforma Android è open source (l’intero codice sorgente di Android è consultabile (browsable)  e condivisibile, anche se con un po di software proprietario come Google Play), rendendo l’ecosistema di sviluppatori dinamico e collettivamente arricchente.

Gli sviluppatori di Android condividono consigli, trucchi e tutorial con tutta la comunità Android, e dal momento che Google gli aiuta  con lo sviluppo di strumenti come Google Play Services  per tutte le attività comuni delle app:  come l’accesso, l’autenticazione, la posizione e la archiviazione di dati,  cosi permettendo agli sviluppatori di Android di concentrarsi sulla costruzione delle ‘funzionalità di base’  delle loro applicazioni

In sostanza, si tratta di un momento particolarmente emozionante per lanciare una carriera nello sviluppo di Android. Vi è una fonte sana di posti di lavoro, la domanda di applicazioni Android promette di aumentare in futuro, e le tecnologie – app indossabile e app TV-  stanno intrigantemente avanzando.

Le Abilità o Competenze richieste (Hard Skills): cosa imparare

Per prima cosa: le competenze tecniche. siccome lo Sviluppo di Android può essere fatto su un computer Mac, PC Windows o Linux. Avrete anche bisogno di un dispositivo Android (è possibile utilizzare un emulatore come Genymotion per lo sviluppo, ma alla fine ti consigliamo di provare su un dispositivo reale).

Ecco il breve elenco degli strumenti da conoscere (must-know skills) per diventare uno sviluppatore Android.

Java

L’elemento più fondamentale  per lo sviluppo con Android è il linguaggio di programmazione Java. Per essere un  sviluppatore Android di successo, è necessario stare bene con i concetti di Java come loop, liste, variabili e strutture di controllo.  Java è uno dei linguaggi di programmazione più utilizzati dagli sviluppatori di software di oggi, in modo cheimparare i suoi pro e  contro ci metterà in una buona posizione per trovare lavoro. (qualcuno dal mondo di sviluppo back-end?) Anche al di là della piattaforma Android.

SQL

Avrete anche bisogno di imparare le basi di SQL per gestire e organizzare i database all’interno delle applicazioni Android.   SQL è un linguaggio per esprimere le query (filtri chiamate) e cosi consultare e recuperare dati o informazioni dai database. Una volta imparate a scrivere (filtri e query), non ci saranno domande che non si possano chiedere ai tuoi database (dati).

SDK- Android Software Development Kit e Android Studio

Una delle parti migliori dello sviluppo per Android è che gli strumenti necessari sono gratuiti e facili da ottenere. L’SDK Android è disponibile per il download free-of-charge -gratis -, come lo è anche Android Studio, l’ambiente di sviluppo integrato ufficiale (IDE) per lo sviluppo di applicazioni Android.     Android Studio è il programma principale con cui gli sviluppatori a scrivere codice e assemblare le loro applicazioni da vari pacchetti e le librerie. L’Android SDK include codice di esempio, librerie software, utili strumenti di codifica, e molto di più per aiutarvi a costruire, testare, e debug-gare (mettere appunto)  le vostre applicazioni Android.

Un altro punto rilevante di sviluppare per Android è la facilità del processo di distribuzione (deploy)  delle app. Una volta che si è pronti per inviare la tua applicazione a Google Play Store, basta registrarsi con un account editore/sviluppatore – Google Play publisher account -(che include il pagamento di una tassa di 25 dollari tramite Google Wallet), seguire passo a passo tutte le voci della lista di lancio di Android (launch checklist), pubblicare la app attraverso il Developer Google Play Console, attendere la approvazione di Google, e vederla apparire. Semplice e soddisfacente.

XML

I programmatori usano XML per descrivere i dati. Le basi della sintassi XML sarà utile – a pieno titolo  – nel vostro viaggio  degli sviluppatori Android  per sviluppare diversi compiti, come la progettazione di interfaccie utente (UI), presentazione( layout) e analisi dei dati alimentati o provenienti da internet. Molto di ciò che è necessario per XML può essere fatto attraverso Android Studio, ma è costruttivo essere fondato nelle basi di questo linguaggio di markup.

Le Abilità o Competenze richieste (Hard Skills): Come imparare a dimostrare di averle

Per gli sviluppatori di Android abbondano  le resource (strumenti) per potere cosi affinare le proprie competenze e  condividere suggerimenti e migliori pratiche (best practice).    Alcuni preferiti del settore includono Stack OverflowAndroid Weekly, il  Android Dev subreddit, vogella tutorials, YouTube(lezioni di Youtube), e il sito ufficiale di  Google per gli sviluppatori Android Developers site—specialmente il Building Your First App modulo.    Se sei un allievo della carta stampata, ci sono del libri molto popolari di Android come  Head First Java, Android Programming (programmazione) : Pushing the Limits(superare i limiti), e Java: A Beginner’s Guide( Guida per principianti di Java.)

Quando si inizia a pensare ad attrarre delle nuove  opportunità di lavoro, e alla vendita (migliore presentazione)  di se stessi come validi candidati,  è importante prendere in considerazione di mettere in in mostra il proprio lavoro sviluppato su Android (apps) nei siti come suon LinkedInXing, attraverso un portfoglio – cartella di (app) personale online, o su siti come e BehanceGitHub.    Gomito a gomito, di persona o  in forma virtuale, incontrarsi con altri sviluppatori Android e con molteplici responsabili delle assunzioni o reclutatori tramite Meetup (incontri conferenze) , tali come droidcon, e concentratori di gruppi o reti digitali (hubs) come LinkedIn groups, Twitter chats, e Quora feeds (sviluppi e notizie). Lei non saprà mai cosa potrà imparare, o a chi potrà mai trovare ?

Le competenze e abilità trasversali (soft skills)

Come per qualsiasi lavoro, non è sufficiente essere completo o senza difetti a livello tecnico, devi fare in modo di affinare le proprie abilità interpersonali tanto quanto quelle di codifica (scrittura analisi di codice).

Perseveranza (e pazienza … a.d.t.)

La pratica rende perfetti davvero quando si parla di sviluppo delle applicazioni. Inevitabilmente, si troveranno dei posti di blocco o degli ostacoli nel processo di sviluppo, in particolare agli inizi dello stesso.  Avrete bisogno di un gran cumulo di perseveranza per poterlo utilizzare a dovere nei momenti frustranti. Per fortuna, dal momento che Android è open-source, cosi che gli sviluppatori di Android potranno  usufruire di librerie e di  framework – pieni di lavori condivisi (codice example)  creati e pubblicati su siti come GitHub.

Avere un atteggiamento Collaborativo

L’atteggiamento Collaborativo è una richiesta di vitale importanza, nella maggior parte dei lavori offerti agli sviluppatori.   Anche se si sta lavorando in un solo progetto, sarà inevitabile dovere lavorare  insieme con altre persone, tali come specialisti in grafica e design (grafici) , personale del marketing, o della alta direzione aziendale (top managers).  Inizia a prendere confidenza con l’accettare semplicemente (umilmente a.d.t)  i feedback (appunti, commenti, e/ o suggerimenti migliorativi) sul proprio lavoro, giungendo a compromessi  con i colleghi, e collaborando con gli altri partecipanti  del progetto per cosi  creare dei prodotti eccezionali.

Sete di conoscenza

Tutti i buoni sviluppatori, mobile e non, sono impegnati nella formazione continua e permanente. Soprattutto nel paesaggio del rapido sviluppo di applicazioni mobile:  con l’avvento di app indossabili, app TV, app per le auto, e altro ancora, gli sviluppatori mobile devono tenere gli occhi e le orecchie aperte alle nuove tecnologie e alle mutabilità continua delle “migliori pratiche”.   Non importa il  livello  raggiunto delle loro conoscenze,essi  non si fermano mai nello  indagare, esplorare, giocare attorno, e fare delle domande.

Sintesi (the bottom line)

Le mobile applicazioni hanno una richiesta altissima, oggi più che che mai, il che rende questo momento uno fra il più incredibile  per lanciare propria carriera come sviluppatore Android. Con l’allargamento Androidoltre lo spazio dei consumatori al lavoro e all’istruzione, e continua a spingere le frontiere i limiti consolidando ricche esperienze utente di tipo cross-device(attraverso molteplice dispositivi) con il nuovo Material design language, Sono tempi eccitanti (momento particolarmente emozionante)  per tuffarsi nello sviluppo di Android. Quindi, andare avanti, con i i piedi per prima. L’acqua è calda (tiepida a.d.t.!).

Molte grazie agli sviluppatori esperti per conto di Google: Enrique López-Mañas (eenriquelopez) ed Etienne Caron, e allo sviluppatore per conto di Udacity Eric Gonzalez per i loro contributi e commenti tecnici all’interno di questo articolo.

a.d.t. (annotazione del traduttore Carmen Vargas)

Annunci

come scaricare (download) una immagine da web (url) usando AsyncTask in Android

asynctask steps
asynctask steps
LA CHIAMATA
new DownloadImageTask(holder.imageview).execute(urlImgS);


LA ASYNCTASK
		
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
		ImageView bmImage;

public DownloadImageTask(ImageView bmImage) {
	this.bmImage = bmImage;
}

protected Bitmap doInBackground(String... urls) {
	String urldisplay = urls[0];
	Bitmap mIcon11 = null;
	try {
	   InputStream in = new  java.net.URL(urldisplay).openStream();
	mIcon11 = BitmapFactory.decodeStream(in);
	} catch (Exception e) {
	  Log.e("Error", e.getMessage());
	  e.printStackTrace();
	}
	 return mIcon11;
}

protected void onPostExecute(Bitmap result) {
   bmImage.setImageBitmap(result);
}
}
}//AsyncTask

Come e quando si usa AsyncTask in android (thread) – code esempio

 

Un’attività asincrona è definita da un calcolo che viene eseguito su un thread (filo o processo) in background (sottofondo) e il cui risultato è condiviso e pubblicato sul thread UI (processo della UI).

android AsyncTask
android AsyncTask (image  lucadentella)

Un thread o thread di esecuzione, in informatica, è una suddivisione di un processo in due o più filoni o sotto processi, che vengono eseguiti con-correntemente da un sistema di elaborazione.

AsyncTask consente un uso corretto e semplice del thread UI (processo o filo principale della Interfaccia Utente).

Questa classe consente di eseguire operazioni in background (sottofondo) e di condividere i loro risultati sul thread UI ossia sul filo o processo dell’interfaccia utente, senza dover gestire processi/fili o utilizzare maipolatori di eventi (handlers).

AsyncTask è stato progettato per essere una classe di supporto per Thread ed Handler e non costituisce framework di thread generico.
AsyncTask dovrebbe idealmente essere utilizzato per operazioni di breve durata (pochi secondi al massimo).

Se è necessario conservare un thread (filo) in esecuzione per lunghi periodi di tempo, si consiglia vivamente di utilizzare le varie API fornite dal pacchetto java.util.concurrent package tali come Executor, ThreadPoolExecutor e FutureTask.

Un compito asincrono è definito da 3 tipi generici, chiamati (params, progress, result), e di 4 momenti (passaggi nel tempo), chiamati respettivamente OnPreExecute, doInBackground, onProgressUpdate e OnPostExecute.

params, progress, result

 

Android Code Esempio AsyncTask

LA CHIAMATA

package com.apps.xxxx.xxxx;

import android.app.Activity;
...
public class MainActivity extends Activity {
   ...
  public GridView gridview;
  @Override
  protected void onCreate(Bundle savedInstanceState)      {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main1);
     
     // Creating a new non-ui thread
     jsonAsyncTask downloadTask = new jsonAsyncTask();
     ...
 }
}


I QUATTRO (TRE) PASSAGGI
(attenzione ai parametri generici...params, progress, result ... String, Void, String)

/** AsyncTask to download json data */
private class jsonAsyncTask extends AsyncTask
<String, Void, String> {

ProgressDialog dialog;
@Override
protected void onPreExecute() {
   super.onPreExecute();
   //dialog
   dialog = new ProgressDialog(MainActivity.this);
   dialog.setTitle("Connecting server  ");
   dialog.setMessage("Loading, please wait");
   dialog.setIndeterminate(true);
   dialog.setCancelable(false);
   dialog.show();
 }
//last param String
  String data = null;

@Override
protected String doInBackground(String... url) {
try{
   data = getJSONString(url[0]);
   }catch(Exception e){
    return "notok";
   }
    return "ok";
  }

/** Invoked by the Android on "doInBackground" is executed */

@Override
protected void onPostExecute(String result) {
dialog.dismiss();
//dialog.cancel();
//adapter.notifyDataSetChanged();
 if(result =="ok") {
  adapter = new ItemAdapter(MainActivity.this, R.layout.row, listitems);
   gridview.setAdapter(adapter);
  }else{
   showToast("Unable to fetch data from server");                
  }//endif
 }//onPosExecute
}//AsyncTask

come fare il parsering dei dati in formato Json in Android

del formato json si deve conoscere …

appissue json rest http
appissue json rest http

In primo luogo si deve analizzare i dati, gli oggetti o le stringhe in formato Json.

In particolare Items è un oggetto, conformato da un Array da oggetti con CodPro, Brand, FormattedFullPrice.

{"Items": 
   [
	{
	"CodPro": "2234567899",
	"Brand": "XXX ZZZ",	
	"FormattedFullPrice": "Euro 2,620.00",
	},
        {
	"CodPro": "2234123456",
	"Brand": "ALPHA",	
	"FormattedFullPrice": "Euro 1,120.00",
	},
        {
	"CodPro": "2234234567",
	"Brand": "BETA",	
	"FormattedFullPrice": "Euro 1,112.00",
	},
   ]
}

dopo si devono creare le classi per gestire l’oggetto Item. creare la Classe Items con gli getters e setters e infine creare le constanti per gestire i nomi dei componenti degli array di oggetti.

LA CLASSE ITEMS

public class Items{
  private String brand;
  private String codPro;
  private String formattedFullPrice; 
  	
  
  public String getBrand(){
	return this.brand;
 }
public void setBrand(String brand){
	this.brand = brand;
 }
 public String getCodPro(){
	return this.codPro;
 }
 public void setCodPro(String cod10){
	this.codPro = codPro;
 }
 public String getFormattedFullPrice(){
	return this.formattedFullPrice;
 }
 public void setFormattedFullPrice(String  formattedFullPrice){
	this.formattedFullPrice = formattedFullPrice;
}
 	
}
...

LE VARIABILI

 private static final String ENTITY_NAME = "Items";  
 private static final String BRAND = "Brand";
 private static final String CODPRO = "CodPro";
 private static final String FORMATTEDFULLPRICE = "FormattedFullPrice"; 
PARSERING

private Boolean parseJson(String jsonString) {
 String myS;
 try {
  JSONObject jsono = new JSONObject(jsonString);
  JSONArray jarray = jsono.getJSONArray(ENTITY_NAME);

  for (int i = 0; i < jarray.length(); i++) {
    JSONObject object = jarray.getJSONObject(i);
    Items item = new Items();
    item.setCodPro(object.getString(CODPRO));
    item.setBrand(object.getString(BRAND));         item.setFormattedFullPrice(object.getString
    (FORMATTEDFULLPRICE));
    /* myS = (item.getCod10() + " " + item.getBrand()  + " " + item.getCod10());
    Log.d("item iessimo " , myS);*/
    listitems.add(item);
  }//endfor*/
  //test
  /*for (int i = 0; i < jarray.length(); i++) {
    Log.d(" *** ***   iesimo ",   listitems.get(i).getCod10());
   }*/
 } catch (JSONException e) {
      Log.d("Parse Json error ",e.toString());
      return false;
  }//endcarch
 return true;
}

Come usare HttpURLConnection in Android

Una URLConnection per HTTP (RFC 2616) consente di inviare e ricevere dati attraverso il web.

appissue json
appissue json

Questi dati possono essere di qualsiasi tipo e lunghezza.

Questa classe può essere utilizzata per inviare e ricevere dati in streaming cui lunghezza non è nota in anticipo.

  • Ottenere un nuovo HttpURLConnection chiamando URL.openConnection () e lanciando il risultato di HttpURLConnection.
  • Preparare la richiesta. La struttura primaria di una richiesta è suo URI. (la richiesta può comprendere anchei metadati quali le credenziali, i tipi di contenuti preferiti e cookies di sessione.
    Opzionalmente si può caricare un corpo della richiesta.
  • Le istanze devono essere configurati con setDoOutput (vero) se includono un corpo.
  • I dati vengono trasmessi ad un flusso restituito da getOutputStream ().
  • si legge la risposta. Il corpo di risposta può essere letto dal flusso restituito da getInputStream (). Se la risposta non ha corpo, il metodo restituisce un flusso di vuoto.
  • Disconnect. Una volta che il corpo della risposta è stato letto, il HttpURLConnection dovrebbe essere chiuso chiamando disconnessione().  Questa  disconnessione rilascia le risorse detenute dalla connessione in modo che possano essere chiusi o riutilizzati.

vedi su android reference HttpURLConnection


private String getJSONString(String strUrl){
  InputStream is = null;
  URL url = null;
  BufferedReader br = null;
  StringBuilder sb = new StringBuilder();
   HttpURLConnection conn = null;
  String jsonString = null;
  try {
      url = new URL(strUrl);
      conn = HttpURLConnection)url.openConnection();
      //set the timeout in milliseconds
      conn.setReadTimeout(15000);
      //set the timeout in milliseconds
      conn.setConnectTimeout(15000);
      conn.setRequestMethod("GET");
      conn.setDoInput(true);
      conn.connect();

      // Log.d("-----url 1 ", String.valueOf(url));
      int response = conn.getResponseCode();
      is = new BufferedInputStream(conn.getInputStream());
      //Log.d("!!!!!!!!is  2", String.valueOf(is));
      br = new BufferedReader(new InputStreamReader(is));
      byte[] b = new byte[1024];
      // to implement try catch…
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      //readstream
      while ( is.read(b) != -1) {
        baos.write(b);
      }
      //Log.d("+sb 3 ", String.valueOf(sb));
      //String JSONResp= new String(baos.toByteArray());
       byte[] data1 = baos.toByteArray();
      // to implement try catch…
      jsonString = new String(data1);
      //Log.d("JSON jsonSTRing  ", jsonString);
      //call parse json data
       myFlag = parseJson(jsonString);
  } catch (MalformedURLException e) {
       e.printStackTrace();
  } catch (java.net.ProtocolException e) {
       e.printStackTrace();
  } catch (IOException e) {
       e.printStackTrace();
  }finally{
      if(br!=null){
          try {
              br.close();
              is.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
          if(conn!=null) {
              conn.disconnect();
          }
      }
  }
  return jsonString;
}

app e doppiaggio : Dubsmash video selfie abbinato a canzoni famose (menziona Francesco Fiumarella)

sarebbe interessante capire le sue funzionalità e la capacità di fare in forma ottimale quello che la App Dubsmash promette … a voi il compito…

La Vita Attraverso Cinema e Arte

image

image

Grazie a Wikipedia di aver menzionato il mio stile innovativo di doppiaggio segnalando il mio nome nella pagina di Dubsmash ! Contento di essere stato riconosciuto come novità artistica e di sapere che questa app sta avendo un grande successo mondiale… Bravi i ragazzi Tedeschi ad averla sviluppata!

Francesco Fiumarella

View original post

Applicazioni Android con REST client, API ed altro

In questo post vorrei approfondire le tematiche necessarie per comprender meglio la filosofia e  l’importanza degli  web services nello lo sviluppo ottimale delle applicazione Android mobile.  attraverso una serie di collegamenti esterni (links) porterò il lettore ad una più consapevole conoscenza della tematica esposta qui.

json-rest3

#appissue

è importante ricordare che una connessione RESTful web service è una simple connessione a un URI attraverso l’oggetto HttpURLConnection  e anche la parserizzazione (analisi e interpretazione secondo determinate regole)  dei dati della risposta.

 

 

una lista di siti di interesse:

libri:

android: aggiornare un archivio lato server con richieste POST dal lato client

android_linee_guida android_topics android_codice_esempio
android_linee_guida android_topics android_codice_esempio

come  aggiornare un archivio lato server con richieste POST dal lato client ?

 
 SERVER SIDE SCRIPT PHP
<?php
$messaggio=$_POST["message"];
$nomeArchivio="ricevutodaApp.html";
file_put_contents($nomeArchivio,$messaggio."<br />",FILE_APPEND);
$androidMess=$file_get_contents($nomeArchivio);
echo $androidMess;
?>

 vedi file_put_contents in php

LATO CLIENT – LATO APP – file .java

//import fondamentali per gestire http
import 
org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;
//una edit test per leggere da app il messaggio //da inviare al Server EditText
 msgTextField
;

//leggere il messaggio da inviare al Server String mess = msgTextField.getText().toString(); 
if(mess.length()>0) {
 HttpClient clientAndr = new DefaultHttpClient();
 HttpPost   postHeader = new HttpPost 
            ("http://www.sito.it/PhpScript.php");
 try { 
   List<NameValuePair> coppieValori =  new    ArrayList<NameValuePair>(2);  
//
   coppieValori.add(new
   BasicNameValuePair("id","11116"));  
//
   coppieValori.add(new
   BasicNameValuePair ("message",mess));  
//
    postHeader.setEntity(new
    UrlEncodedFormEntity(coppieValori));  
//
    clientAndr.execute(postHeader);    //msgTextField.setText(""); 
// re inizializzare la variabile
 
catch(ClientProtocolException e)
  {
   // ....
  }
catch(IOException e)
  { 
   // ...
  } 
}else
{ 
  // messaggio di errore se non c'è dato   Toast.makeText(getBaseContext(), "dati   richiesti",Toast.LENGTH_SHORT).show();}
} 

collegamenti fondamentali per approfondire:
HttpClient
HttpPost
vedi .BasicNameValuePair

vedi http.client.methods
UrlEncodedFormEntity
Fonte1 webtutsdepot.com:
Fonte2 androidsnippets.com
F
onte3 mobiledevtuts.com-task asincrona

  articolo relazionato android i 4 famosi del Http

image di doscadesa
image di http://www.doscadesa.com/index.php/category/productos/especias/?lang=es&lang=es

 

app mobile ibrida web o nativa le ragioni di una scelta

Già dai primi momenti in cui si decide di sviluppare una App mobile, ci si deve confrontare con il dover scegliere se essa sarà di tipo Nativo, Web o Ibrido ?

app nativa web ibrida
app nativa web ibrida

Si rende utile allora capire cosa sono le Mobile app.
Le mobile app sono programmi software sviluppati espressamente per essere installati nei dispositivi mobili chiamati oggi smartphone, tablet, PDA o altri mobile gadgets, sono piccoli applicativi software “specifici e specialistici” che rendono possibile ad un particolare utente, in determinati momenti, la sua connessione permanente con il web, la posta elettronica, i social, il proprio pc, il cloud, società di servizi ecc… (esiste anche la possibilità di utilizzare mobile app off-line).

Queste App sono gestite da un sistema operativo mobile Android, Blackberry, iOS, Windows Phone, Firefox OS, OS Sailfish, Symbian, Tizen, Ubuntu touch OS, Canonical Ltd. e possono svolgere una molteplicità di funzioni utilizzando le caratteristiche tecniche del proprio dispositivo: GPS di navigazione portatile, macchina fotografica, videocamera, riconoscimento vocale, registratore vocale, lettore musicale, Near Field Communication e blaster a infrarossi, touchscreen, cellulare, Bluetooth, Wi-Fi.

a questo punto viene chiaro a noi sviluppatori il chiedersi ma con quale di tutti questi sistemi operativi è meglio iniziare il processo di sviluppo della mobile app ?
la risposta è una nuova domanda, nell’ albero decisionale,  si vuole sviluppare una mobile app uni-piattaforma o multi-piattaforma ?

se la risposta è la prima si chiamano mobile App native, se è  la seconda si possono chiamare web mobile app… ma se è una combinazione di tutte le due decisioni si chiamano mobile app ibride.

ma quali le ragioni di una o altra scelta programmatica ?
la risposta la dà il marketing,  gli studi di mercato, la reale conoscenza del comportamenti di acquisto degli utenti delle app,  le tendenze del mercato….  oggi è ovvio sviluppare mobile App Native per il Mondo Android, iOS, e Blackberry e Windows Phone …

chi deve sviluppare o decidere deve pensare a … 4 sistemi operativi diversi !!!, quattro applicativi differenti, utilizzo di tecnologie per ogni piattaforma diverse e complesse, quasi quasi si ha la necessità di 4 esperti diversi, con conoscenze tecniche specifiche per ogni ambiente di sviluppo… ovvero Objective-C per iOS, Java per Android e. NET per Windows.  con tempi e costi da non sottovalutare…

allora arriva un dubbio ma come lasciare fuori il mercato trainato da Firefox OS, OS Sailfish, Symbian, Tizen, Ubuntu touch OS, Canonical Ltd ?

si tende a pensare alle soluzioni web e ibride che offrono oggi gli studiosi di HTML5 CSS3 e Javascript MVC. Molte soluzioni che emulano la visualizzazione della web app attraverso i browser. Sistemi che interpretano web view. Ambienti di sviluppo che creano una sola SOLUZIONE… Cross-platform che permettono di farle girare in tutte le piattaforme mobile (o cosi predicano…) senza grandi problemi di adattamento…

si è catapultati  allora in un approfondito studio su tutti i  toolkit mobili cross-platform un vero conglomerato… quasi infinito di soluzioni per  trovare LA unica SOLUZIONE … una App ibrida  (vedi Phonegap, AngularJs, Titanium, todoMVC, emberjs, backbone ecc..)  tutti con un minimo comune denominatore … quello di offrire una soluzione quasi miracolosa. che funziona uguale (o quasi) su tutte le piattaforme mobile.

viene da credere che questi tools di sviluppo siano caduti dal cielo … e anche che essi siano facili da apprendere, da utilizzare o si tende a credere che la curva di apprendimento sia corta… ma non è così .

che la mobile  App sia  ibrida web o nativa, il gruppo di lavoro, gli, analisti e gli sviluppatori, deveno conoscere molto bene il proprio mercato, le necessità del mercato obiettivo,  le specificità della app che si vuole sviluppare, la propensione al acquisto di apparecchiature mobile come iphone, android, winphone, o blackberry dei futuri utilizzatori e sopratutto del’utilizzo che farà l’utente della mobile app… sia in termini del dove, del come e del quando … mobile in movimento…

concludendo posso dire che  ci sono mobile app che è definitivamente necessario sviluppare in ambiente nativo (si pensi alla propria interazione con la piattaforma hardware, la connettività on-line off-line, la relazione con i meccanismi di gps, geo,ecc)….  altre che va bene sviluppare in ambiente web … per la facilità di reperimento dei dati on line, per le potenzialità che offrono oggi i browser, i linguaggi come html, la gestione diretta dei dati nei server, le web services (REST) e  i nuovi formati dati come  json, sqlite ecc… e infine ci sono mobile app che vanno bene sviluppate come ibride (con una architettura che unisce caratteristiche delle app native a delle web app… in fondo sono  nativa che sfruttano il web per adattarsi alle diverse piattaforme e ai diversi mobile devices).
… addirittura negli ultimi giorni c’è la tendenza di fare coesistere nei market o store le  App in due soluzioni …native e ibride.


 

collegamenti

vargas carmen
autor