View Full Version : react native o no?
acronalb
13-01-2020, 09:35
Ciao a tutti, vorrei realizzare un' app per smartphone android, in futuro probabilmente anche per ios.
conosco le basi di C,php e javascript ma nulla che possa permettermi lo sviluppo di un'intera applicazione.
Ho effettuato un po' di ricerche con google ed ero giunto alla conclusione di iscrivermi ad un corso Java, utile per android, ma mi sono imbattuto in un corso di react native che promette la creazione di app compatibile con piu' piattaforme tra cui android e ios.
ho indagato un po' ma mi si sono incasinate ancora di piu' le idee.
Ho capito che react native è un framework javascipt ma non capisco come possa diventare un'app compatibile con piu' piattaforme!
Dato che devo comunque iniziare ad imparare un linguaggio dal principio, le applicazioni sviluppate con react native sono paragonabili ad app native o conviene sempre uno sviluppo ad Hoc usando java per android e object C per ios?
Grazie
pabloski
13-01-2020, 11:11
in futuro probabilmente anche per ios
Il che già potrebbe portarti ad escludere qualsiasi soluzione non cross-platform. Cioè, potresti cominciare con Java/Kotlin e Android SDK, poi in futuro usare Swift/Cocoa o passare ad un framework multipiattaforma.
Ma tanto vale che cominci direttamente con uno multipiattaforma!!
conosco le basi di C,php e javascript ma nulla che possa permettermi lo sviluppo di un'intera applicazione
Ottimo. Se tu fossi stato un programmatore JS, ti avrei consigliato React Native senza pensarci su. In fondo lo scopo di questi strumenti è quello di poter riutlizzare le proprie conoscenze.
Cioè Electron ( per esempio ) non è nato per sfizio, ma perchè qualcuno ha voluto consentire ai programmatori esperti di JS di scrivere programmi per desktop, senza dover imparare da zero altre tecnologie.
Ho capito che react native è un framework javascipt ma non capisco come possa diventare un'app compatibile con piu' piattaforme!
Oddio, RN usa JSX. Però si, alla fine ti servono html, css e js ( oltre a conoscenze specifiche di jsx, ma niente di drammatico ).
Come fa a creare app per ios/android/uwp? Semplice. Il compilatore contiene del codice Java, Swift, ecc... che rappresenta lo scheletero dell'app per la piattaforma specifica. Dentro ci ficca una virtual machine javascript, che esegue il codice js scritto da te.
Dal tuo punto di vista, conta il fatto di poter scrivere l'app in js.
[QUOTE=acronalb;46572528
Dato che devo comunque iniziare ad imparare un linguaggio dal principio, le applicazioni sviluppate con react native sono paragonabili ad app native o conviene sempre uno sviluppo ad Hoc usando java per android e object C per ios?
[/QUOTE]
Ecco, questa è la parte fondamentale. Intanto cominci da zero in ogni caso e quindi non hai il bias dovuto ad una conoscenza pregressa.
Detto questo, RN è discreto, ma c'è di meglio.
Xamarin, Qt, Flutter. Poi Ionic, Cordova. E ce ne sono altri.
I primi a comparire furono Cordova e i suoi figli. La tua app è una pagina web ( SPA nella parlata corrente dei programmatori js ) e gira in una webview. Ha limitata capacità di interagire col sistema operativo. E' lenta.
Per questo motivo nacquero soluzioni come React Native e Nativescript ( un concorrente di RN ). Non usano la webview. Offrono moduli per interfacciarsi con tutte o quasi le funzionalità del sistema operativo. Sono discretamente veloci.
Nessuna di queste due soluzioni batte quella nativa in termini di accesso diretto al sistema operativo e di performance.
Poi però qualcuno penso di fare ancora meglio. Nacquero Xamarin ( che in verità è più vecchio di RN ), Qt fu portato su Android e iOS, nacque Flutter ( di Google ).
Questi qui implementano praticamente tutto da zero. Usano il sistema operativo solo per le funzionalità base. Sono scritti in C/C++/C#. Pensa che implementano pure i controlli grafici ex novo.
Sono più veloci ( in molti casi, non tutti, ma molti ) del nativo.
Qt però è C++. Molto grosso e complesso. Basato su un'architettura anni '90.
Xamarin non mi ha mai convinto più di tanto. Fa il suo lavoro, ma ha le sue pecche. Bug, architettura presa da .Net. E' valido se sei già un programmatori .Net.
Flutter è imho la scelta migliore. Usa Dart come linguaggio, che è nato per sostituire JS ed è quindi molto espressivo e facile da usare. E' molto veloce. Ha un'architettura pensata per i moderni workflow. L'UI si definisce nel codice ( niente XML, XAML, designer WYSIWYG, ecc... ). Supporta l'hot reloading megli di RN ( che già lo supportano ottimamente ).
Quindi, per me, dovresti puntare su Flutter. Ho usato un pò di tutto negli anni ed è stato uno dei pochi strumenti a farmi esclamare "Wow!".
Inoltre lo stanno portando ovunque. Attualmente supporta le principali piattaforme mobile e il web. Stanno lavorando su Windows/Linux/macOS.
E' un ottimo investimento pure in ottica futura. E sarà il framework di default per programmare su Fuchsia ( il futuro sistema operativo di Google ).
acronalb
13-01-2020, 15:48
Detto questo, RN è discreto, ma c'è di meglio.
Xamarin, Qt, Flutter. Poi Ionic, Cordova. E ce ne sono altri.
I primi a comparire furono Cordova e i suoi figli. La tua app è una pagina web ( SPA nella parlata corrente dei programmatori js ) e gira in una webview. Ha limitata capacità di interagire col sistema operativo. E' lenta.
Prima di trovare react native mi ero proprio imbattuto in apache cordova e ionic ma facendo ricerche varie ero arrivato alla conclusione che, basandosi su webview, l'app sarebbe risultata meno performante delle native.
Successivamente mi sono imbattuto in react native e da qui le idee si sono complicate :doh:
Quindi, per me, dovresti puntare su Flutter. Ho usato un pò di tutto negli anni ed è stato uno dei pochi strumenti a farmi esclamare "Wow!".
Flutter non lo conoscevo ma facendo qualche ricerca ho notato che è abbastanza nuovo e in forte crescita.
unica cosa che mi fa storcere il naso è proprio il fatto che sia così recente!
del resto dovrei iniziare praticamente a studiare da 0, per javascript o java ci sono tonnellate di libri, tutorial online e corsi, cosa che per il momento non noto per dart (correggimi se sbaglio).
Ammetto che l'applicazione che devo realizzare è un po' un test per validare se la mia idea funziona ed è richiesta, in caso affermativo potrei anche pensare ad uno sviluppo sicuramente migliore e piu' accurato come nel caso della app native, quindi non volevo imbattermi in qualche cosa di troppo complicato che potrebbe poi risultare inutile.
Comunque i principali "componenti" che dovrò usare sono il bluetooth, il GPS e molta geolocalizzazione, API di paypal, google maps e database quindi nulla di così sofisticato che richieda accesso diretto al sistema operativo.
Ammetto che è molto allettante l'idea di imparare ad usare Flutter anche per un futuro sistema operativo fushia (sperando riesca ad affermarsi) ma, alla luce dei miei dubbi, dici che è semplice imparare l'accoppiata Flutter-dart per chi comincia da 0 con la programmazione o meglio un compromesso scegliendo l'abbinata javascript- react native anche se un po' meno performante e completa?
pabloski
13-01-2020, 16:45
Prima di trovare react native mi ero proprio imbattuto in apache cordova e ionic
Francamente non so a cosa possano servire ionic, cordova e compagnia. Ormai le progressive webapp consentono di portare le webapp direttamente su mobile e vanno pure meglio di cordova e soci.
unica cosa che mi fa storcere il naso è proprio il fatto che sia così recente!
Il framework si, il linguaggio Dart no. Comunque è spettacolare e non soffre di bug particolarmente gravi.
Al massimo c'è poca roba di terze parti in giro.
cosa che per il momento non noto per dart (correggimi se sbaglio).
C'è meno casino.
C'è un ottimo libro che si chiama "Dart for absolute beginners". E c'è una guida succinta a vari aspetti del linguaggio https://dart.dev/guides/language/language-tour
Imho il miglior punto di partenza è questo corso/tutorial https://da-bootcamp.firebaseapp.com/?course=start_programming_dart
Per Flutter c'è un corso su Udacity. Poi una serie di tutorial qui https://codingwithjoe.com/learn/flutter/
C'è un canale reddit apposito https://www.reddit.com/r/FlutterDev/
Questo tizio ha compilato una guida per neofiti con link a tutorial, video, esempi e altro materiale https://medium.com/flutterdevs/roadmap-to-become-a-flutter-developer-resources-for-beginners-ccb68718c84b
quindi non volevo imbattermi in qualche cosa di troppo complicato che potrebbe poi risultare inutile.
In generale la programmazione è sempre complicata. Per esempio è vero che React Native ha dalla sua l'ecosistema JS e gazillioni di libri, tutorial, blog, ecc... Ma è pur vero che, ben presto, scoprirai che l'incasinato ecosistema JS è pieno di librerie che funzionano e non funzionano, crash dovuti all'aggiornamento di dipendenze, difficoltà nel debug ( dovute alla natura stessa del linguaggio ).
che è semplice imparare l'accoppiata Flutter-dart per chi comincia da 0 con la programmazione o meglio un compromesso scegliendo l'abbinata javascript- react native anche se un po' meno performante e completa?
Dart è l'evoluzione di JS. Ovvero è come Google pensa che JS sarebbe dovuto essere. Considera che oggi moltissima gente non usa JS, ma Typescript, Coffeescript, Clojurescript, ecc...
Questo perchè JS ha delle pecche architetturali notevoli, che rendono difficile la programmazione di software robusto. Per cui ci si affida a linguaggi creati apposta per superarne i limiti. Typescript è quello che si è imposto di più e ha battuto Dart. Entrambi puntavano ad essere i sostituti di JS.
Per cui, partendo da Flutter non è un lungo viaggio migrare a RN e viceversa.
Chiaro che la disponibilità di gazillioni di documentazione di vario tipo, può aiutarti ad entrare con più facilità nel mondo mobile. Senza contare che RN è richiestissimo pure in ambito lavorativo.
Per cui nessuno ti vieta di iniziare da quello e poi studiare Flutter con comodo, più in là.
acronalb
13-01-2020, 17:17
Do un'occhiata a tutti i tuoi link su dart e poi tiro le somme sul da farsi!
Grazie sei stato gentilissimo!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.