Miglior ambiente di sviluppo applicazioni per mobile

Stato
Discussione chiusa ad ulteriori risposte.

hddsfortuna

Utente Attivo
657
37
Internet
FTTC 100/20
Sistema Operativo
Ubuntu 18.04
Salve a tutti,

attualmente sono un programmatore dilettante (cioè autodidatta con buoni risultati) e le mie conoscenze sono HTML, PHP, CSS, JS, JSON e SQL.

Ora voglio orientarmi alle applicazioni per dispositivi mobili.

Ho visto che ci sono vari ambienti di sviluppo per queste applicazioni, tra cui Eclipse, Android Studio e Intel XDK.

Vorrei sapere da voi quale sarebbe l'ideale per me (con le mie conoscenze informatiche) e possibilmente che mi faccia creare l'applicazione per i sistemi operativi mobili Android, iOS e Windows Phone.





Grazie
 

fedi98

Nuovo Utente
121
8
intel xdk non lo conosco, e comunque android studio ed eclipse sono solo per app che operano su device android... tra i due io preferisco android studio
 

LazyAfternoons

Utente Attivo
772
134
CPU
i7 7800X
Dissipatore
Ek Custom Loop
Scheda Madre
Asus TUF X299 Mark 1
Hard Disk
Samsung 960 EVO M2 256GB / WD Blue 1TB
RAM
G.Skill Trident Z RGB 16GB DDR4 3200MHz
Scheda Video
Asus Strix 1080Ti 11G
Alimentatore
EVGA SuperNova G3 850W
Case
Coolermaster Mastercase Maker 5
Sistema Operativo
Windows 10
Visto i linguaggi che conosci, direi che Intel XDK è probabilmente la tua opzione migliore, almeno per iniziare.
Altrimenti potresti provare Xamarin (Mi pare sia C#).
 
  • Mi piace
Reactions: Zofen

pabloski

Utente Èlite
2,062
447
Intel XDK e' una possibilita' viste le tue conoscenze. Tuttavia Intel e' uscita dal settore mobile, per cui non e' chiaro se continuera' a supportare XDK. Un ottimo sostituto che sfrutta sempre HTML5 e' React Native. Altro tool simile e' Native Script.

Detto questo, devi sempre considerare che utilizzando framework basati su HTML5 non otterrai mai performance stellari. Questo puo' non essere un problema per molte applicazioni, ma non e' sempre questo il caso.

C'e' poi il settore dei videogiochi, che possono permettersi il lusso d'implementare interfacce utente senza look nativo, per cui e' possibile sfruttare engine gaming di alto livello tipo Unigine, Unity, Cocos-2d ( per i giochi 2d ), Corona, Unreal.

Se invece vuoi framework multipiattaforma, performanti e con supporto alle UI native, allora puoi optare per Xamarin, Qt, HaXe, Rubymotion o Kivy.

Ognuno di questi supporta un certo paniere di linguaggi, ma nessuno ha a che fare con HTML5. Xamarin ha un suoi IDE, Qt idem. Per gli altri puoi usare Eclipse, Intellij, ecc...

Sul fronte sviluppo nativo ( cioe' con i tool ufficiali ) ci sono invece il SDK Android con Java e Android Studio ( derivato di IntelliJ ). In passato Android Studio era basato su Eclipse. iOS invece usa XCode e ObjC o Swift come linguaggi. Windows Phone ( che pero' viste le vendite in continuo declino, non mi fa ben sperare per il futuro ) usa Visual Studio e C# come linguaggio. Con questi tool pero' non puoi realizzare applicazioni multipiattaforma.

Se vuoi usare C# allora punta su Xamarin perche' e' invece multipiattaforma.
 

hddsfortuna

Utente Attivo
657
37
Internet
FTTC 100/20
Sistema Operativo
Ubuntu 18.04
Visto i linguaggi che conosci, direi che Intel XDK è probabilmente la tua opzione migliore, almeno per iniziare.
Infatti per ora mi serve un'applicazione che preleva dati dal server in formato JSON e li elabora sull'applicazione. Vorrei sapere se e come Intel XDK supporta PHP.

Intel XDK e' una possibilita' viste le tue conoscenze. Tuttavia Intel e' uscita dal settore mobile, per cui non e' chiaro se continuera' a supportare XDK. Un ottimo sostituto che sfrutta sempre HTML5 e' React Native. Altro tool simile e' Native Script.
Ciò che mi serve è creare un applicazione partendo dalle mie conoscenze, che la scrivo una sola volta e me la compila almeno per Android e iOS.

Detto questo, devi sempre considerare che utilizzando framework basati su HTML5 non otterrai mai performance stellari. Questo puo' non essere un problema per molte applicazioni, ma non e' sempre questo il caso.

C'e' poi il settore dei videogiochi, che possono permettersi il lusso d'implementare interfacce utente senza look nativo, per cui e' possibile sfruttare engine gaming di alto livello tipo Unigine, Unity, Cocos-2d ( per i giochi 2d ), Corona, Unreal.
Qui voglio capire meglio una cosa: perché su HTML5 non posso fare ciò che voglio, e come si fanno le applicazioni videogiochi (es. Pokemon Go).

Inoltre vorrei sapere come sono state create le applicazioni che usiamo maggiormente (es. Facebook e WhatsApp), dato che chiedono dati al server (penso in JSON) e comunque sono multipiattaforma.



Grazie
 

LazyAfternoons

Utente Attivo
772
134
CPU
i7 7800X
Dissipatore
Ek Custom Loop
Scheda Madre
Asus TUF X299 Mark 1
Hard Disk
Samsung 960 EVO M2 256GB / WD Blue 1TB
RAM
G.Skill Trident Z RGB 16GB DDR4 3200MHz
Scheda Video
Asus Strix 1080Ti 11G
Alimentatore
EVGA SuperNova G3 850W
Case
Coolermaster Mastercase Maker 5
Sistema Operativo
Windows 10
Infatti per ora mi serve un'applicazione che preleva dati dal server in formato JSON e li elabora sull'applicazione. Vorrei sapere se e come Intel XDK supporta PHP.


Ciò che mi serve è creare un applicazione partendo dalle mie conoscenze, che la scrivo una sola volta e me la compila almeno per Android e iOS.


Qui voglio capire meglio una cosa: perché su HTML5 non posso fare ciò che voglio, e come si fanno le applicazioni videogiochi (es. Pokemon Go).

Inoltre vorrei sapere come sono state create le applicazioni che usiamo maggiormente (es. Facebook e WhatsApp), dato che chiedono dati al server (penso in JSON) e comunque sono multipiattaforma.



Grazie
Sì, puoi integrare PHP e creare le tua API JSON o sfruttarne di già esistenti.
 

pabloski

Utente Èlite
2,062
447
Ciò che mi serve è creare un applicazione partendo dalle mie conoscenze, che la scrivo una sola volta e me la compila almeno per Android e iOS.
Relativamente alle tue conoscenze, la questione e' questa:

HTML --> usato come linguaggio di markup dai framework basati su HTML5
PHP --> non e' usabile per sviluppare le app mobile, ovviamente lo si puo' usare per sviluppare eventuali backend che girano su dei server remoti
JS -> e' la spina dorsale di tutti i framework basati su HTML5 come React Native, Phonegap/Cordova, Ionic, Intel XDK, Sencha, ecc...
JSON --> e' usato ampiamente dalle app mobile, ma al loro interno, cioe' come strumento di scambio dati tra web services e l'app stessa. Ma e' del resto lo stesso uso che se ne fa sul web.
SQL --> anche questo e' molto usato per lo stoccaggio dei dati. Android supporta nativamente Sqlite, sotto iOS si usa sempre Sqlite, WP usa C# che a sua volta supporta il famoso LINQ ( che e' SQL like ) e ovviamente puoi usare Sqlite


I framework basati su HTML5, unitamente a Qt, Xamarin e una manciata di altri sono l'unica soluzione esistente per lo sviluppo di app multipiattaforma. I tool nativi di Android, iOS, ecc... non supportano il multipiattaforma.

Qui voglio capire meglio una cosa: perché su HTML5 non posso fare ciò che voglio, e come si fanno le applicazioni videogiochi (es. Pokemon Go).
Per due motivi:

1. prestazioni, perche' i framework basati su HTML5 producono invariabilmente app piu' lente rispetto a quelle native e/o realizzate tramite Qt/Xamarin. Ma la situazione e' cambiata radicalmente con l'arrivo di React Native et similia. Le prestazioni delle app native restano ovviamente maggiori, ma il gap si e' ridotto drasticamente.

2. i framework citati implementano un'API che s'interfaccia con l'API dei sistemi operativi supportati e questo puo' portare a non avere il supporto per tutte le funzionalita' disponibili. Per esempio non era raro ( non so se sia ancora cosi' ) non avere il supporto per la camera in Cordova. Chiaramente un framework come React Native, sviluppato, supportato ed usato da Facebook, puntera' ad avere il massimo supporto possibile. Ma puo' capitare che qualcosa manchi, specialmente le funzionalita' presenti nelle ultimissime versioni dei sistemi operativi mobile.

Pokem Go non so come sia stato realizzato, ma non mi meraviglierei se avessero usato Unity. Se guardi sul play store/app store, noterai che la stragrande maggioranza dei giochi 3D usano Unity.

Inoltre vorrei sapere come sono state create le applicazioni che usiamo maggiormente (es. Facebook e WhatsApp), dato che chiedono dati al server (penso in JSON) e comunque sono multipiattaforma.
Whatsapp e' di vecchia concezione, sviluppato in C++ per la parte cross-platform, con una UI sviluppata usando gli SDK nativi e Java su Android/Objc su iOS. Facebook invece e' stata implementata con React Native.

Comunque per farla breve, se t'interessa realizzare app generiche multipiattaforma, la scelta e' tra React Native, Qt e Xamarin. Per i giochi non ha senso non usare pacchetti "chiavi in mano" come Unity, Cocos-2d, ecc...

Per le tue conoscenze e' piu' facile cominciare con React Native. Unity supporta Javascript ( oltre a C# ) come linguaggio di scripting, per cui e' la scelta migliore sul fronte videogiochi.
 

hddsfortuna

Utente Attivo
657
37
Internet
FTTC 100/20
Sistema Operativo
Ubuntu 18.04
Sì, puoi integrare PHP e creare le tua API JSON o sfruttarne di già esistenti.
PHP --> non e' usabile per sviluppare le app mobile, ovviamente lo si puo' usare per sviluppare eventuali backend che girano su dei server remoti
Allora PHP mi servirebbe perché lo conosco meglio di JS, e quindi a livello di funzioni, ecc... so usare meglio PHP. L'applicazione che mi servirebbe creare ho già scritto di che tipo è, per cui voglio sapere se è supportata la libreria curl di PHP nell'ambiente Intel XDK.

Pokem Go non so come sia stato realizzato, ma non mi meraviglierei se avessero usato Unity. Se guardi sul play store/app store, noterai che la stragrande maggioranza dei giochi 3D usano Unity.

Whatsapp e' di vecchia concezione, sviluppato in C++ per la parte cross-platform, con una UI sviluppata usando gli SDK nativi e Java su Android/Objc su iOS. Facebook invece e' stata implementata con React Native.
Ho visto che Pokemon Go è un gioco di tutto rispetto (a livello programmativo), che usa la geolocalizzazione, comunicazione con i server (penso in JSON), e anche a livello di server c'è dietro un lavoro di database, ecc...
Per WhatsApp noto le differenze sui cellulari con lo stesso sistema operativo (es. Android), su un cell appare l'icona Impostazioni, su altri no perché il cell ha il pulsante suo sotto lo schermo. Ecco, vorrei capire com'è possibile fare questa cosa dato che (almeno penso) l'applicazione sia stata programmata solo una volta per Android.

Chiaramente un framework come React Native, sviluppato, supportato ed usato da Facebook, puntera' ad avere il massimo supporto possibile. Ma puo' capitare che qualcosa manchi, specialmente le funzionalita' presenti nelle ultimissime versioni dei sistemi operativi mobile.
[...]
Per le tue conoscenze e' piu' facile cominciare con React Native. Unity supporta Javascript ( oltre a C# ) come linguaggio di scripting, per cui e' la scelta migliore sul fronte videogiochi.
Posso installarmi React Native, non ci sono problemi. Vorrei sapere se mi basta programmare l'applicazione solo una volta, e se poi se la vede il compilatore a farla per i vari sistemi operativi mobili.



Grazie
 

pabloski

Utente Èlite
2,062
447
Allora PHP mi servirebbe perché lo conosco meglio di JS, e quindi a livello di funzioni, ecc... so usare meglio PHP. L'applicazione che mi servirebbe creare ho già scritto di che tipo è, per cui voglio sapere se è supportata la libreria curl di PHP nell'ambiente Intel XDK.


Curl non e' una libreria di PHP ma e' scritta in C e ha binding per una ventina di linguaggi diversi, tra cui pure PHP. Intel XDK non implementa nessun binding per Curl, ma fornisce comunque funzionalita' equivalenti. Se posso darti un consiglio, non fissarti troppo su una specifica libreria perche' potresti non poterla usare in certi scenari. Devi avere la necessaria flessibilita' per passare ad eventuali alternative disponibili sulla piattaforma target.


Per WhatsApp noto le differenze sui cellulari con lo stesso sistema operativo (es. Android), su un cell appare l'icona Impostazioni, su altri no perché il cell ha il pulsante suo sotto lo schermo. Ecco, vorrei capire com'è possibile fare questa cosa dato che (almeno penso) l'applicazione sia stata programmata solo una volta per Android.


Android espone le caratteristiche dell'hardware, per cui basta un if per far apparire/sparire quell'icona sui vari modelli di smartphone. Il discorso e' ben diverso se si para di app che girano su Android e iOS.

Posso installarmi React Native, non ci sono problemi. Vorrei sapere se mi basta programmare l'applicazione solo una volta, e se poi se la vede il compilatore a farla per i vari sistemi operativi mobili.
React Native supporta Android e iOS e a breve Windows UWP. E si, l'app va scritta una volta sola, altrimenti non sarebbe un framework multipiattaforma.
 

hddsfortuna

Utente Attivo
657
37
Internet
FTTC 100/20
Sistema Operativo
Ubuntu 18.04
Ho visto che per scaricare react native, devo aver installato android studio. A questo punto, uso quest'ultimo. E poi ho visto esempi di codice alla pagina "getting started" che non capisco (però simili a js).

Ho pensato di optare per intel xdk, dove l'ho già installato e iniziato a far qualcosina. Non è tanto difficile in quanto ho creato una pagina html con tante funzioni js che interagiscono con i pulsanti e il server per prelevare i dati. Vorrei sapere se e come con questo ambiente è possibile memorizzare i dati sul dispositivo per poi leggerli quando mi serve.


Tuttavia, non butto via l'idea del tuo consiglio, react native, però vorrei sapere meglio come funziona.



Grazie
 

pabloski

Utente Èlite
2,062
447
Ho visto che per scaricare react native, devo aver installato android studio. A questo punto, uso quest'ultimo.
No un momento. Stai parlando di IDE, di linguaggi di programmazione o di framework. Android Studio e' un IDE e non e' usato per scrivere app Android in Javascript bensi' in Java. Se vuoi usare Javascript DEVI usare necessariamente React Native ( o Ionic, Cordova, NativeScript, ecc... ).

E poi ho visto esempi di codice alla pagina "getting started" che non capisco (però simili a js).
React Native fa uso di Javascript, aggiungendovi delle caratteristiche sue. Apprendere come funziona non e' difficile, ma c'e' da studiare un pochino. I risultati pero' sono estremamente buoni.

Ho pensato di optare per intel xdk, dove l'ho già installato e iniziato a far qualcosina. Non è tanto difficile in quanto ho creato una pagina html con tante funzioni js che interagiscono con i pulsanti e il server per prelevare i dati. Vorrei sapere se e come con questo ambiente è possibile memorizzare i dati sul dispositivo per poi leggerli quando mi serve.
Localstorage and IndexedDB sono le due possibilita' offerte da XDK. Dai un'occhiata nella documentazione ufficiale del framework per i dettagli.

Tuttavia, non butto via l'idea del tuo consiglio, react native, però vorrei sapere meglio come funziona.
Il framework fa uso di JavascriptCore su iOS e V8 su Android per eseguire gli script js. I componenti ( le classi ) usano le classi native delle due piattaforme, per cui ottieni pure un'UI con look and feel nativo. A livello architetturale presenta delle aggiunte rispetto a JS liscio, ma e' quello che fanno anche tutti gli altri framework JS in circolazione. E considera che per realizzare qualsiasi webapp di un certo livello, non puoi prescindere dall'uso di un framework di qualche tipo.
 

hddsfortuna

Utente Attivo
657
37
Internet
FTTC 100/20
Sistema Operativo
Ubuntu 18.04
Inanzitutto grazie per tutte le risposte che mi hai dato.

A questo punto vorrei sapere un'altra cosa: dato che io sono novellino in programmazione di applicazioni, si può sapere passo passo come installare e come creare un'app rudimentale con react native e intel xdk?

So che chiedo troppo, ma purtroppo, come hai già letto, di applicazioni ne capisco poco e niente.



Grazie
 

pabloski

Utente Èlite
2,062
447
A questo punto vorrei sapere un'altra cosa: dato che io sono novellino in programmazione di applicazioni, si può sapere passo passo come installare e come creare un'app rudimentale con react native e intel xdk?
La cosa migliore e' seguire i tutorial ufficiali

https://software.intel.com/en-us/xdk/docs/intel-xdk-guided-tutorial
https://facebook.github.io/react-native/docs/getting-started.html

React Native richiede una totale comprensione del modello su cui e' basato React, per cui ti potrebbe essere molto utile cominciare col creare qualche webapp basata su React https://scotch.io/tutorials/learning-react-getting-started-and-concepts
 

hddsfortuna

Utente Attivo
657
37
Internet
FTTC 100/20
Sistema Operativo
Ubuntu 18.04
Date le mie capacità, ho pensato di optare per intel xdk, almeno per ora.

Ho visto che questo ambiente supporta cordova con queste belle funzionalità ma una volta che ho creato una semplice pagina html con qualcosa di js (per interagire con il server) e css, vorrei sapere come faccio a prelevare informazioni dai componenti hardware del telefonino (es. coordinate geografiche, compasso/bussola o peggio ancora la videocamera).

Inoltre se è possibile, vorrei avere un progetto esempio (anche fatto da te), molto semplice con l'utilizzo dei componenti del cell. Se poi ci sono video su internet che spiegano (il più dettagliatamente possibile) questa cosa è meglio.

Grazie
 

pabloski

Utente Èlite
2,062
447
vorrei sapere come faccio a prelevare informazioni dai componenti hardware del telefonino (es. coordinate geografiche, compasso/bussola o peggio ancora la videocamera).
Usi le API messe a disposizione da XDK https://software.intel.com/en-us/xdk/docs/intel-xdk-api-cordova-plugin-methods-properties-events

Noterai che c'e' un mucchio di roba marcata come RETIRED. In pratica Intel sta rinnovando completamente il framework, basandolo al 100% su Cordova e relativi plugin. Per cui e' utile fare riferimento alla documentazione di Cordova per quanto concerne le API.

Inoltre se è possibile, vorrei avere un progetto esempio (anche fatto da te), molto semplice con l'utilizzo dei componenti del cell. Se poi ci sono video su internet che spiegano (il più dettagliatamente possibile) questa cosa è meglio.
Su youtube ne trovi un bel po'. Personalmente non ho mai usato XDK, gli ho giusto dato un'occhiata quando cercavo una soluzione multipiattaforma. Alla fin fine stanno migrando verso Cordova, per cui non vedo perche' non usare direttamente quest'ultimo.

Inoltre non sono un fan delle app che laggano, per cui i framework cosiddetti ibridi non mi fanno impazzire di gioia.
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando