PDA

View Full Version : iPhone - come iniziare?


sottovento
21-03-2017, 19:34
Scusate la domanda ma per quanto semplice non ho trovato in rete una risposta altrettanto semplice.

Ho scritto un'app per Android che e' molto apprezzata in azienda. Non e' distribuita perche' ha senso solo fra queste mura.
I possessori dell'iPhone si sono lamentati perche' vorrebbero avere la stessa app, ma io non ho mai visto un iPhone.

Stavo pensando di convertire l'applicazione (scritta in maniera nativa) e vorrei valutare
- sforzo economico (cosa devo compare, oltre l'iphone?)
- sforzo necessario x imparare;
- sforzo per mantenere entrambe le versioni;

Come vedete, sono tutte informazioni di base che ci sono sicuramente in rete ma che non sono riuscito a trovare in maniera organica.

Come si inizia? Devo necessariamente comprare un mac? Devo per forza registrarmi presso qualche comunita' di sviluppatori nonostante l'app non uscira' dall'azienda?

Esiste un documento di una pagina che mi dice punto per punto cosa devo fare, cosi' che riesca a valutare se ne vale la pena?

grazie a tutti

tomminno
22-03-2017, 09:07
Per sviluppare per iOS devi iscriverti al loro programma sviluppatori e costa 99$/anno di base. Puoi iscriverti come privato o come azienda, come azienda sono 299$/anno e hai il vantaggio di poter distribuire app privatamente.
Ti serve un Mac per generare i CSR necessari a generare tutti i certificati richiesti per firmare le App ed eventuali servizi accessori (es Notifiche push).
Per lo sviluppo ci sono tool multipiattaforma (es Xamarin) per cui non è strettamente necessario usare XCode e un Mac.

I costi dovrebbe sostenerli l'azienda (Mac, iPhone e iscrizione annuale), per cui non credo dovrebbero essere un problema, se l'app serve per lavoro.
Quanto allo sviluppo dipende se vuoi usare XCode e Swift o altro.

[Kendall]
22-03-2017, 09:33
Scusate la domanda ma per quanto semplice non ho trovato in rete una risposta altrettanto semplice.

Ho scritto un'app per Android che e' molto apprezzata in azienda. Non e' distribuita perche' ha senso solo fra queste mura.
I possessori dell'iPhone si sono lamentati perche' vorrebbero avere la stessa app, ma io non ho mai visto un iPhone.

Stavo pensando di convertire l'applicazione (scritta in maniera nativa) e vorrei valutare
- sforzo economico (cosa devo compare, oltre l'iphone?)
- sforzo necessario x imparare;
- sforzo per mantenere entrambe le versioni;

Come vedete, sono tutte informazioni di base che ci sono sicuramente in rete ma che non sono riuscito a trovare in maniera organica.

Come si inizia? Devo necessariamente comprare un mac? Devo per forza registrarmi presso qualche comunita' di sviluppatori nonostante l'app non uscira' dall'azienda?

Esiste un documento di una pagina che mi dice punto per punto cosa devo fare, cosi' che riesca a valutare se ne vale la pena?

grazie a tutti

Per quanto riguarda il lato sviluppo, se vuoi restare sulla programmazione nativa come mi par di capire dal tuo post, si apre un capitolo abbastanza ampio.
Imparare swift di per sè è piuttosto banale, quello che non è banale è tutto il framework che sta dietro ad iOS e che di punti in comune con Android ne ha praticamente zero.

Poi ovviamente il grado di complessità dell'apprendimento dipende anche molto da quello che la tua app deve fare, sia lato funzionale che lato estetico.

Sul lato funzionale, a supporto del tuo lavoro avrai una notevole quantità di librerie free disponibili per swift ed objective-c (quelle scritte in quest'ultimo linguaggio sono utilizzabili anche da swift). Non quante ne puoi trovare per java/android ma comunque in quantità elevata.

Per quanto riguarda invece l'interfaccia grafica il lavoro potrebbe essere banale come parecchio complesso, in base alla complessità dell'interfaccia.
Personalmente lato UI apprezzo molto di più gli strumenti e il framework a disposizione su android. Essendo definita tramite xml è molto più facilmente modificabile che su XCode dove imparerai ben presto ad odiare quel maledetto autolayout, come l'incapacità di definire risorse (che siano colori, dimensioni, animazioni o qualcunque altra cosa) tramite xml.

Se hai dubbi o domande particolari fammi pure sapere.

OoZic
22-03-2017, 11:05
PREMESSA: tutto quello che sto per dire vale se la tua app e' basata su interfacce, se parliamo di giochi 2d/3d o roba che richiede uso intensivo di cpu/gpu o manipolare API low-level del sistema allora non fa al caso tuo

https://facebook.github.io/react-native/

leggiti questo blog post:
https://facebook.github.io/react-native/blog/2017/03/13/introducing-create-react-native-app.html

secondo me e' il top al momento e continuera' ad esserlo visto che React per il web e' gia' il framework piu' utilizzato e richiesto del momento.
hanno pure rilasciato React-VR tra le altre cose...insomma impari una tecnologia che nei prossimi anni ti permettera' di sviluppare per qualsiasi piattaforma web/mobile/vr...

qualche motivo a favore di react-native rispetto a Xamarin
https://medium.com/@reicheltp/dev-diary-4-why-i-left-xamarin-behind-35817ccd07b2#.7ejsgjt0o

e in piu ci aggiungerei NPM e tutto l'ecosistema javascript (il piu' numeroso in assoluto) che secondo me da solo vale la scelta.

il riutilizzo del codice in un app iOS/Android con React-Native e' mediamente tra 85% - 95%, insomma 1 dev puo' sviluppare 2 app nello stesso tempo.

sottovento
23-03-2017, 03:20
Grazie a tutti, ora le idee sono un po' piu' chiare. Direi che l'obiettivo di avere una pagina con elencato quello che serve e' stato centrato. Anzi, di piu' visto che ora ho anche le possibili opzioni multipiattaforma.

Riguardo al budget: stranamente non ho problemi, ho un budget personale da cui posso attingere e quest'anno e' davvero abbondante. Acquistare tutto il materiale e pagare i vari abbonamenti non e' quindi un problema.
Tuttavia non mi piace l'idea di dover pagare una sottoscrizione annuale, specialmente alla luce del fatto che l'app e' solo ad uso interno.

Qualcuno di voi ha mai sentito parlare di https://hockeyapp.net/? Sembra che per una singola applicazione sia gratuita. Vale la pena?

@Oozic, @coffe_killer grazie anche per il suggerimento di ambienti multipiattaforma che si applicano benissimo al mio caso. Tuttavia credo che continuero' a mantenere l'attuale versione per Android ed una eventuale versione nativa per iPhone. Beh, in realta' non sono ancora sicuro di niente, ci sono talmente tante strade percorribili che non so quale percorrere (anzi, non so nemmeno se cominciare visto che non so se sono in grado di finire).

pabloski
23-03-2017, 08:44
Anzi, di piu' visto che ora ho anche le possibili opzioni multipiattaforma.

Non sempre. Il multipiattaforma su mobile funzionicchia, ma ci sono angoli da smussare, partendo dal look&feel non proprio nativo fino alla mancanza di parti delle funzionalita' offerte dagli SDK nativi ( specialmente le funzionalita' aggiunte nelle ultimissime versioni ).

Nel complesso e' fattibile, ma in alcuni casi nun se po fa. Per i giochi inutile provare soluzioni varie ed eventuali, vai di Unity e similari, altrimenti perdi tempo e pazienza.



Qualcuno di voi ha mai sentito parlare di https://hockeyapp.net/? Sembra che per una singola applicazione sia gratuita. Vale la pena?

10 app gratis. Ma non se quali altre limitazioni imponga. Inoltre imho le robe cloud sono da evitare, per motivi di efficienza e soprattutto di privacy.


Tuttavia credo che continuero' a mantenere l'attuale versione per Android ed una eventuale versione nativa per iPhone.

Certamente se hai gia' un'app android scritta in java, diventa sicuramente meno appetibile il cross-platform.

Tuttavia il gioco vale la candela nel lungo periodo.

Suggerirei di aggiungere QT e Nativescript/Angular alla lista dei tool indicati.

pabloski
23-03-2017, 09:23
Xamarin compila in codice nativo, e questo toglie il layer di virtualizzazione, semplicemente perchè quel layer non esiste.


Non esattamente. Gli assemblies sono in IL, come accade con tutti i programmi .NET.

Il problema di Xamarin e' che non e' propriamente esente da bug, basta dare un'occhiata sui forum di supporto per notare che avrebbe bisogno di una curetta.



ovvio che se devo fare un gioco 3D programmo direttamente sulla piattaforma che mi interessa, altrimenti non vedo perchè non usare Xamarin o simili.

Ovviamente in quei casi in cui hai assoluta necessita' di usare feature non supportate ( o mal supportate ) dai framework multipiattaforma. Sono casi rari, ma ci sono.

pabloski
24-03-2017, 09:43
Bè non si può dire che, dati i livelli di efficienza raggiunti negli ultimi anni, ci sia così tanta inefficienza rispetto a programmare nativo...almeno io non ne ho mai trovati fino ad ora, e ritengo che Xamarin sia un eccelente prodotto.


Ma infatti le prestazioni sono a volte migliori di quelli delle app Android/ART https://medium.com/@harrycheung/cross-platform-mobile-performance-testing-d0454f5cd4e9

Il problema di Xamarin e' che e' parecchio buggato. Credo migliorera', sempre che MS abbia deciso di fare sul serio. Di sicuro e' una tecnologia da tenere presente nello sviluppo mobile. QT e' il diretto concorrente e presenta gli stessi pregi e difetti ( anche qui i bug non si contano ).



Sicuro preferisco programmare così che introdurre strati su strati di virtualizzazione, come fa titanium (non ricordo se fosse questo il nome)

Titanium, Cordova, Ionic, React Native, Nativescript. Ibridi, ibridi nativi. Si divertono ad inventare termini su termini.

E li spacciano pure per soluzioni native, con tanto di fan che scrivono post chilometrici sui loro blog e/o su medium, sostenendo che le prestazioni sono favolose.

La realta'? Siamo sempre un paio di ordini di grandezza al di sotto delle soluzioni native e di Xamarin/QT.

Quindi no, i framework ibridi ( o come cavolo si chiamano questa settimana ) sono utili se hai un background da web developer ( cioe' non vai oltre javascript ) e se l'app e' veramente basilare e non presenta elementi dove le performance sono critiche ( tipo una datagrid con decine di migliaia di righe ).

OoZic
24-03-2017, 12:59
secondo me state facendo una grande confusione tra i cosi detti "ibridi" (cordova/phonegap) e react-native.

i primi sono sostanzialmente webview con in piu supporto di API del sistema tramite js e si sono rivelati un fallimento totale.

react-native non e' una webview ma sono UIview native e le performance quando si parla di interfacce sono > 60fps come un app nativa.

datagrid con decine di migliaia di righe? un milione bastano?
http://adazzle.github.io/react-data-grid/examples.html#/one-million-rows
o se sono liste anche infinite:
https://facebook.github.io/react-native/docs/listview.html

poi qui c'e' il showcase di app famose fatte in react-native:
https://facebook.github.io/react-native/showcase.html

giusto per citarne alcune, sia facebook che airbnb che instagram hanno piu' o meno parti scritte in react native in produzione mentre alcune app tipo discord sono completamente fatte in react-native

tomminno
24-03-2017, 14:43
Ora non so come stiano le cose su React-Native, ma non trovo la documentazione per usare le notifiche push su Android, è presente solo per iOS.
Su Xamarin per lo meno è la traduzione letterale in C# del codice Java disponibile sugli esempi Android.
La vedo difficile scriversi su React-Native l'interfacciamento per gestire le notifiche push e tutti i permessi che si tirano dietro, non trovo molte spiegazioni su come mappare l'SDK sottostante all'interno di React-Native.

OoZic
27-03-2017, 16:54
Ora non so come stiano le cose su React-Native, ma non trovo la documentazione per usare le notifiche push su Android, è presente solo per iOS.
Su Xamarin per lo meno è la traduzione letterale in C# del codice Java disponibile sugli esempi Android.
La vedo difficile scriversi su React-Native l'interfacciamento per gestire le notifiche push e tutti i permessi che si tirano dietro, non trovo molte spiegazioni su come mappare l'SDK sottostante all'interno di React-Native.

https://github.com/zo0r/react-native-push-notification

io personalmente uso OneSignal (https://onesignal.com/) che e' gratis e funziona benone
https://github.com/geektimecoil/react-native-onesignal

sottovento
27-03-2017, 20:21
Grazie ancora per tutti gli interventi, tutti apprezzatissimi.
Credo che aspettero' a fare la versione iPhone, anche perche' quella android ha avuto successo e sono state richieste parecchie funzionalita' aggiuntive, e questo non mi da' tempo di studiare.

L'app di per se' e' banale (qualche ricerca in database, spedizione/ricezione dati da socket, ...) e riscriverla in un ambiente multipiattaforma e' possibilissimo, anche se sono ancora per la piattaforma nativa (ma ammetto che non e' una cosa razionale).

Ho un paio di domande quasi OT:
1 - visto che devo continuare ad aggiornare la mia app android, sapete se esiste qualcosa di gia' implementato per fare gli aggiornamenti? Come dicevo non vorrei pubblicare l'app in google ma tenerla privata (magari questo limita la possibilita'). Devo implementarmi un sistema automatico per aggiornare? Purtroppo non so niente di queste cose;

2 - Strano ma vero, mi ritrovo ad avere un budget personale piuttosto nutrito con il quale posso comprare materiale informatico. Purtroppo ho tempo fino a settembre per spenderlo, dopo di che lo perdero' (pero' le cose stanno cambiando e sto correndo il rischio di perderlo prima).
Come le investireste, considerando anche questi problemi? Io cerchero' di informarmi per poter capire se posso spenderlo anche per pagare qualcuno di voi (se disponibile) per fare quest'app al posto mio, ma non posso garantire. Voi come fareste, considerando che magari avrei tempo di sviluppare quando il budget e' ormai perso e non so quando ne avro' un altro cosi' sostanzioso?

OoZic
27-03-2017, 21:18
2 - Strano ma vero, mi ritrovo ad avere un budget personale piuttosto nutrito con il quale posso comprare materiale informatico. Purtroppo ho tempo fino a settembre per spenderlo, dopo di che lo perdero' (pero' le cose stanno cambiando e sto correndo il rischio di perderlo prima).
Come le investireste, considerando anche questi problemi? Io cerchero' di informarmi per poter capire se posso spenderlo anche per pagare qualcuno di voi (se disponibile) per fare quest'app al posto mio, ma non posso garantire. Voi come fareste, considerando che magari avrei tempo di sviluppare quando il budget e' ormai perso e non so quando ne avro' un altro cosi' sostanzioso?

parla con il tuo manager o la direzione aziendale e spiegagli che se non hai tempo potrebbero dare questa app in outsourcing con la tua supervisione.

ci fai piu' bella figura che non usare il tuo budget personale, che l'azienda in genere stanzia appunto per la tua formazione (che in questo caso non avverrebbe perche' dai in outsourcing il progetto :)

sottovento
27-03-2017, 21:25
parla con il tuo manager o la direzione aziendale e spiegagli che se non hai tempo potrebbero dare questa app in outsourcing con la tua supervisione.

ci fai piu' bella figura che non usare il tuo budget personale, che l'azienda in genere stanzia appunto per la tua formazione (che in questo caso non avverrebbe perche' dai in outsourcing il progetto :)

No, non si tratta di un budget per formazione, la quale e' gestita da un apposito ufficio (che con gran fantasia hanno chiamato "academy") in collaborazione con varie universita'.
E' una cosa che posso amministrare direttamente io ma per un certo tipo di destinazioni. Potrebbe aver senso chiedere di poterlo usare anche per outsourcing. Magari me lo aumentano pure :D

Beh, vedremo. Comunque grazie per il suggerimento.

tomminno
28-03-2017, 14:37
https://github.com/zo0r/react-native-push-notification

io personalmente uso OneSignal (https://onesignal.com/) che e' gratis e funziona benone
https://github.com/geektimecoil/react-native-onesignal

Aspetta in entrambi vedo codice Java! :banned: :ciapet:

Comunque si torna lì, al momento non è supportata una funzionalità abbastanza basilare e presente in molte App.

OoZic
29-03-2017, 09:41
Aspetta in entrambi vedo codice Java! :banned: :ciapet:

Comunque si torna lì, al momento non è supportata una funzionalità abbastanza basilare e presente in molte App.

il codice java (che fa cagare pure a me) non devi toccarlo, a parte due righe da aggiungere qua e la per la configurazione.

quel che ti vedi come una mancanza puo' essere anche un punto di forza ed e' un po la regola generale del mondo javascript/npm

se guardi i core modules di node vedrai che c'e' molta molta meno roba di altri linguaggi tipo python / go, eppure npm e' il package manager con il maggior numero di moduli al momento e ci trovi di tutto, tanta roba funziona bene, alcune non bene ma e' la natura dell'open source.

non mi sentirei di dire "al momento non è supportata una funzionalità abbastanza basilare" quanto piu' "non fa parte dei core modules ma ci son valide alternative usate in produzione da centinaia di migliaia di utenti"

sottovento
10-05-2017, 15:48
Scusate se riprendo il thread, ma siete stati tutti gentili e pensavo fosse interessante aggiornare la situazione.

Visti i suggerimenti, ho preso in considerazione QT perche'
- multipiattaforma;
- usato in precedenza (vecchie versioni su Windows);
- si programma in QML (che devo imparare), C++ e Javascript;
- performante;
- genera codice nativo;

La situazione pero' non e' cosi' semplice quando si va sul campo. Ho fatto i test solamente con Android e mi sono accorto che serve una ferrea volonta' se lo si vuole effettivamente usare!!

Occorre fare il download di qt, poi dell'ndk di android and dell'sdk di android.
A causa dei vari aggiornamenti nelle release, l'sdk di android non conteneva piu' molti file/template necessari a qt creator. Quindi la semplice installazione dei pacchetti non aiuta ad avere un ambiente funzionante.
Occorre lavorarci parecchio, capire cosa manca, trovare le patch, ecc. Inoltre mi sono imbattuto anche in diversi bug che mi hanno fatto perdere parecchie nottate. Per uno che si alza alle 4:30, e' pesante....
Inoltre a migliorare la situazione ci si e' messo anche il laptop che avevo scelto per i test: "vedeva" il dispositivo android ma per una serie di problemi/conflitti/... non era possibile fare il debugging. Occorreva reinstallare driver, trovare il driver per il dispositivo, ecc.

Alla fine sono riuscito a far funzionare "Hello World", cosi' sono passato a qualcosa di piu' impegnativo. Ma... al cambio del progetto, non so perche', l'ambiente ha ricominciato a non funzionare piu' correttamente e non ho potuto fare il download nel dispositivo della nuova test app.

Mi sono fermato qui, ci sono troppi problemi per il sottoscritto. Anche perche' immagino di incontrare gli stessi problemi per settare la piattaforma iOS. Troppi, davvero troppi.

Sicuramente QT e' un ottimo ambiente e sono convinto che in futuro potrebbe essere la soluzione vincente. Saro' stato sfortunato ma per ora i vari package necessari a compilare ed eseguire sui target sono troppo disaccoppiati ed ottenere (e mantenere) l'ambiente funzionante e' troppo oneroso.

Provero' altre soluzioni. Tanto vi dovevo per la vostra gentilezza, grazie a tutti

sottovento
10-05-2017, 16:04
Dimenticavo - ora provero' un'altra piattaforma.
Il cliente sembra gradire C# visto che ha tonnellate di software per questa piattaforma. Sembra logico provare Xamarin.

Se ritenete sia interessante, posso poi pubblicare le mie impressioni.

Grazie ancora!

pabloski
10-05-2017, 17:34
A causa dei vari aggiornamenti nelle release, l'sdk di android non conteneva piu' molti file/template necessari a qt creator. Quindi la semplice installazione dei pacchetti non aiuta ad avere un ambiente funzionante.
Occorre lavorarci parecchio, capire cosa manca, trovare le patch, ecc. Inoltre mi sono


Ed e' la ragione per cui uso Linux per programmare. Il lavoro dei mantainer delle distro si nota e fa la differenza.

sottovento
10-05-2017, 17:46
Ed e' la ragione per cui uso Linux per programmare. Il lavoro dei mantainer delle distro si nota e fa la differenza.
Hai ragione da vendere! Purtroppo non posso farlo, qui al lavoro.

Per curiosita': hai provato anche le qt per piattaforme mobili? Se si, puoi dare qualche info/impressione? Soprattutto sull'ambiente....

sottovento
10-05-2017, 17:50
Prima lamentela su Xamarin: sono 34Gb da scaricare!!!
Mi aspettavo una cosa piu' leggera. Mah!

pabloski
10-05-2017, 18:23
Per curiosita': hai provato anche le qt per piattaforme mobili? Se si, puoi dare qualche info/impressione? Soprattutto sull'ambiente....

Ho fatto giusto qualcosina tanto per vedere come andava. il setup e' stato abbastanza liscio grazie al lavoro dei mantainer della distro, l'utilizzo e' un po' ruvido ( ma vale pure per lo sviluppo windows/macos ), la presenza di bug e' purtroppo un problema abbastanza serio.

Un vantaggio e' di avere un IDE buono, con intellisense, autocomplete e tutte le cose tipicamente presenti in prodotti di alto livello.

Personalmente lamento tanto la mancanza del compilatore QML nella versione free, che rende impossibile compilare gli script ( penalizza in particolare le prestazioni ). Il sistema di gestione delle risorse e' troppo macchinoso, ho trovato difficolta' ( almeno le prime volte che l'ho usato ) nel settare correttamente le resources, in modo che funzionassero a dovere. Comparativamente, e' banale fare lo stesso con .Net.

La nota dolente riguarda l'ecosistema Android, ovvero gli handicap che gli OEM affibiano ai loro device per attivita' di sviluppo. Nella pratica, uno sviluppatore dovrebbe sempre avere un Nexus.

Inoltre non mi garba tanto la scelta di utilizzare un linguaggio Javascript-like per QML. Rende poco integrato il tutto ( sembra di avere a che fare con due mondi separati ), l'interazione tra componenti C++ e QML non e' immediata ( occorre parecchio codice ).

L'uso di Ecmascript mina inoltre le prestazioni ( .NET ad esempio ti permette di usare C# con XAML, per cui hai i vantaggi prestazionali di C# e quelli della programmazione dichiarativa di XAML ), rende necessaria l'implementazione di un ulteriore runtime per farlo girare e si porta dietro tutti i difetti tipici di Javascript ( progetti di grandi dimensioni ne soffrono terribilmente ).

Loro dicono che ovviamente QML va usato per la sola UI, che pero' contempla ( in termini di pattern MVVM ) le view e le vievmodel. Cioe' parecchia roba se si fanno bene i conti. Un bel po' di codice, realizzato in un linguaggio che non ha nemmeno uno straccio di tipizzazione.

Ad esempio io avrei preferito una soluzione tipo Sciter, almeno li' puoi usare codice scritto in uno dei linguaggi per cui esistono bindings, facendolo interagire facilmente con i componenti html. In questo modo le viewmodels possono essere implementate in un linguaggio piu' adeguato.

pabloski
10-05-2017, 18:29
Prima lamentela su Xamarin: sono 34Gb da scaricare!!!
Mi aspettavo una cosa piu' leggera. Mah!

Xamarin e' ormai di fatto integrato con Visual Studio, per cui....

Ho visto che hanno eliminato pure Xamarin Studio per Mac, al suo posto c'e' Visual Studio per Mac. Non saprei direi pero' se e' solo un rebranding o se si tratta di VS, lo stesso che gira su Windows.

sottovento
10-05-2017, 20:00
Mi sentirei di dire che è proprio VS, anche Microsoft si sta muovendo per rendere tutto multipiattaforma, e insieme al comparto cloud posso dire che stanno facendo davvero un ottimo lavoro (i numeri dell'utilizzo di Azure da parte degli sviluppatori lo conferma).
VS inoltre lo ritengo un ambiente di sviluppo davvero devastante, che giustifica appieno la sua "pesantezza" in GB (io lo uso ormai da 3 anni per lavoro e non mi sono mai trovato così bene a lavorare su un IDE come su VS)

Ho utilizzato un installer online dal sito xamarin. Erano presenti diverse opzioni. L'installazione di VS2017 era di circa 8Gb; alla selezione di Xamarin lo spazio necessario e' balzato a 34GB!
Ho appena finito. Non so se andro' a controllare, ma l'impressione e' che sia stata installata meno roba. Insomma quei 34Gb dichiarati devono essere un limite superiore.
Non ho la stessa opinione, comunque devo dire che e' di utilizzo molto semplice. Inoltre installo sempre il plug-in Vim che mi permette di usare vi come editor, e la cosa mi aiuta molto.

@pabloski alla faccia dell'occhiata! Direi che hai fatto molto di piu'! Rileggendo il tuo post mi verrebbe comunque voglia di dare un'altra chance a Qt, magari su una macchina Linux. Comunque nei post piu' vecchi non era la prima soluzione che consigliavi... beh, ora faccio un po' di test con xamarin, poi vediamo. Ciao

pabloski
11-05-2017, 09:34
verrebbe comunque voglia di dare un'altra chance a Qt,


E' una tecnologia da tener presente. Non la migliore in assoluto, ma sicuramente un 8 glielo darei. In genere non lo metto al primo posto, per via dei molti bug che affliggono queste librerie. E ho il dubbio che lo facciano apposta, perche' la versione a pagamento include un supporto molto presente, che ti guida quasi per mano. Del resto se lo usano colossi dell'automotive, medicale, aerospazio, soprattutto su QNX, direi che ha i suoi vantaggi. Se poi i bug vengono corretti "dal supporto" ( quando paghi ovviamente ), l'esperienza diventa decisamente piu' piacevole.

Poi, per applicazioni non troppo onerose computazionalmente, e' bene considerare le tecnologie web-like, tipo React Native ( supportato per lo sviluppo di applicazione Windows UWP oltretutto ), Nativescript/Angular.

Angular ( la versione 2 ) ha delle similitudini con WPF impressionanti. Implementa l'equivalente di ICommand ( tramite eventi DOM ), il data binding one-way e two-way, la suddivisione in componenti ( a loro volta divisi in una parte di business logic e una di codice dichiarativo per la presentazione, che sarebbe html + css ) consente d'implementare semplicissimamente il paradigma MVVM.

L'unico neo potrebbero essere le prestazioni, che pero' stanno migliorando col miglioramento dei motori javascript. In particolare Nativescript evita l'utilizzo di un componente bridge e del marshalling per consentire la comunicazione tra logica di business e interfaccia. Quindi migliori prestazionali in generale, al costo di avere un unico thread per interfaccia e logica ( ma si possono creare piu' worker thread laddove necessario ). Inoltre il fatto che consenta l'hooking delle api del sistema operativo sottostante, permette di supportare al day one tutte le nuove api ios/android.

sottovento
26-05-2017, 21:53
Ciao, sono ancora io. Sono testardo ;)
E... sto ancora testando i vari ambienti che avete proposto. Se lo ritenete opportuno, posso aggiornare la lista dei problemi che ho trovato e le mie impressioni. Ovviamente non senza un certa, inevitabile soggettivita'.

Ho una domanda: Oracle ADF Mobile. Non ne conoscevo l'esistenza, sto provando a leggere qualcosa e sembra convincente.
Lo conoscete? Vale la pena provare anche quello?

Grazie a tutti!!!!

pabloski
27-05-2017, 15:19
Se lo ritenete opportuno, posso aggiornare la lista dei problemi che ho trovato e le mie impressioni. Ovviamente non senza un certa, inevitabile soggettivita'.

Certo, puo' essere utile ad altri che si trovano nelle medesime condizioni. La soggettivita' poi e' giustamente inevitabile.


Ho una domanda: Oracle ADF Mobile. Non ne conoscevo l'esistenza, sto provando a leggere qualcosa e sembra convincente.
Lo conoscete? Vale la pena provare anche quello?

Grazie a tutti!!!!

Non lo conoscevo neppure io. Ma mi pare di capire che e' una soluzione tipo Sciter, cioe' usi Java per la business logic e HTML5 per l'interfaccia. Se e' cosi' e' una gran cosa ( al netto di Java che alcuni proprio non digeriscono ).

Cioe' si porrebbe sullo stesso piano di Qt.

sottovento
27-05-2017, 15:31
Certo, puo' essere utile ad altri che si trovano nelle medesime condizioni. La soggettivita' poi e' giustamente inevitabile.

Faro' del mio meglio, allora. Sempre molto gentile, grazie.


Non lo conoscevo neppure io. Ma mi pare di capire che e' una soluzione tipo Sciter, cioe' usi Java per la business logic e HTML5 per l'interfaccia. Se e' cosi' e' una gran cosa ( al netto di Java che alcuni proprio non digeriscono ).

Cioe' si porrebbe sullo stesso piano di Qt.

Ho visto un video di pochi minuti e mi e' sembrato proprio carino. Si, sembra sullo stesso piano di qt ma con java come linguaggio comune. Non male, direi.
So che molti non lo digeriscono ma.... beh, e' soggettivita', a me piace parecchio.

sottovento
27-05-2017, 17:20
@coffe_killer - so che sei esperto di Xamarin.
Ho provato anche lui ma mi ha lasciato molto perplesso. E' vero, secondo la tradizione Microsoft, si puo' fare tutto a colpi di mouse. Ma non per questo e' piu' semplice. Non ci ho capito molto, per la verita': mi sembrava che fosse necessario generare progetti diversi per target diversi e questo non mi piace proprio. Tuttavia potrei anche capirlo se si riuscisse a riutilizzare il codice ed avere un solo sorgente.

Magari se hai tempo potresti venire in aiuto ;)
E' possibile generare un piccolo applicativo che visualizzi 2 o 3 bottoni ed alla pressione di ognuno di essi visualizzi un messaggio?
E' possibile farlo girare sia su Android sia su iOs?

OoZic
28-05-2017, 10:50
Ma xke volete farvi del male?

React Native, gia' detto e ripetuto.

L'hai provato almeno?
https://facebook.github.io/react-native/
https://github.com/react-community/create-react-native-app

sottovento
28-05-2017, 14:47
Ma xke volete farvi del male?

React Native, gia' detto e ripetuto.

L'hai provato almeno?
https://facebook.github.io/react-native/
https://github.com/react-community/create-react-native-app

Si, lo sto provando.
Mi piace, ma... ho bisogno di piu' tempo.
Ho visto che con un paio di comandi si puo' creare il progetto facilmente (cosa che non sono riuscito a fare con Xamarin), farne il build e farne il deploy (per ora ho provato solo su Android).
E' eccitante, in poco tempo sono arrivato a questo punto.

Ora sto cercando di modificare il progetto, e qui cominciano i dolori: ottengo sempre la schermata rossa, anche se seguo dei tutorial.
Ovviamente e' colpa mia, ho bisogno di imparare qualcosa di piu'.

Ad ogni modo, la cosa che ho imparato e' che c'e' sempre bisogno dell'ambiente nativo di sviluppo per tutti i cross-environment che ho visto, che sia react native, xamarin,qt, ...

pabloski
28-05-2017, 15:00
Sui tool cross-platform ibridi e React in particolare ho i seguenti dubbi:

1. prestazioni ==> vero che siamo a livelli molto superiori a Cordova e compagnia, ma in alcuni casi d'uso il problema si sente

2. React e' una libreria bare-bone, poi devi integrare altre librerie per ottenere un ambiente in grado di offrirti il necessario per sviluppare applicazioni medio/grandi. Spesso mi e' capitato di dover combattere con conflitti tra dipendenze, spesso dovuti al passaggio da una versione all'altra. A questo punto tanto vale puntare su Angular 2/Nativescript, che almeno e' un framework completo

3. ti porti dietro tutti i problemi di un linguaggio a tipizzazione dinamica e debole ( Javascript ), a meno di integrare lo stack con Typescript e similari, il che richiede un ulteriore lavoro di setup ( non sempre semplice e lineare )

4. React ha una peculiare architettura, voluta per garantire prestazioni deterministiche all'interfaccia grafica, ma che crea colli di bottiglia prestazionali dovuti al meccanismo di bridging tra Javascript e l'API nativa del sistema operativo

5. il supporto alle nuove funzionalita' delle API dell'OS non e' presente al day-one ( nel caso di React )

sottovento
28-05-2017, 15:13
bè sì certo che si può, ovviamente per fare deploy con iOS devi avere un mac che faccia da "build server".
Si, me ne sono accorto. Ma e' giusta la mia intuizione? Devo generare due progetti diversi (uno per android, uno per iOS?) oppure un progetto solo a cui posso poi cambiare il target?
E' difficile fare il programmino di cui parlavo?

Una volta che ho installato l'ambiente, ho provato a creare un nuovo progetto e nella lunga lista di progetti disponibili non sono nemmeno riuscito a capire qual e' quello che mi interessava. Ho cosi' cercato un esempio, ne ho fatto il download e cliccato sulla solution per aprirlo. C'erano un sacco di errori dovuti principalmente versioni non corrette, librerie mancanti e cosi' via.
Li ho risolti ad uno ad uno ma non sono riuscito ad ottenere lo stesso un package per android e tanto meno sono riuscito a selezionare come target il mio S6 per fare il debug, nonostante sia il telefono che uso con Android Studio senza problemi.

Per questi motivi ho accantonato Xamarin. So che lo usi intensamente e lo apprezzi, quindi ho provato a scrivere quel post, magari con un paio di suggerimenti riesco a risolvere.

Tuttavia ora sto provando react native, dopo di che provero' Oracle ADF, che promette bene (soprattutto per uno come me, che apprezza java).

sottovento
29-05-2017, 13:25
Bè il fatto che ti stesse dando un sacco di errori già mi sembra strano...ti darei un consiglio, di provare a reinstallare tutto.

Purtroppo è difficile riuscire a spiegarti da qui, però hai provato anche a vedere i video su Xamarin di Channel 9? Sono davvero ben fatti e in pochi step prendi già dimestichezza con l'ambiente.

Il link è questo, e mi ha insegnato davvero tanto, specialmente quando ho approcciato queesta suite dall'inizio.

https://channel9.msdn.com/Shows/XamarinShow

Daro' un'occhiata, ma ci vorra' tempo,visto che ora sto provando altri ambienti. Cmq lo faccio, promesso :D

sottovento
29-05-2017, 14:01
Scusa se non posso esserti di aiuto più di questo, però fidati che quei corsi sono fatti divinamente, spero davvero che ti sarà utile :)

Ci mancherebbe! Anzi, molto gentile! Tutte le informazioni che si trovano nel forum sono date a titolo gratuito, devi quindi ringraziare te e tutti gli altri per il tempo che mi e' stato dedicato.
Guardero' quei corsi anche se, come accennato, avro' bisogno di tempo. Ho gia' "esplorato" diversi ambienti e per quanto possa dedicar loro del tempo, sara' sempre troppo poco. Il mio lavoro sara' sempre parziale, purtroppo...

sottovento
29-05-2017, 15:44
Ma giusto per capire, visto che sono intervenuto non subito all'inizio e mi sono perso un sacco di cose....come mai hai necessità di utilizzare uno strumento Xamarin style?

Ho fatto una app in Android, ed ora gli utenti iPhone (che qui in USA sono la maggioranza) la vogliono.
L'app non ha prestazioni critiche, semplicemente spedisce via socket delle richieste XML e riceve delle risposte XML che deve mostrare in varie liste/tabelle.

OoZic
30-05-2017, 11:34
Sui tool cross-platform ibridi e React in particolare ho i seguenti dubbi:

1. prestazioni ==> vero che siamo a livelli molto superiori a Cordova e compagnia, ma in alcuni casi d'uso il problema si sente

2. React e' una libreria bare-bone, poi devi integrare altre librerie per ottenere un ambiente in grado di offrirti il necessario per sviluppare applicazioni medio/grandi. Spesso mi e' capitato di dover combattere con conflitti tra dipendenze, spesso dovuti al passaggio da una versione all'altra. A questo punto tanto vale puntare su Angular 2/Nativescript, che almeno e' un framework completo

3. ti porti dietro tutti i problemi di un linguaggio a tipizzazione dinamica e debole ( Javascript ), a meno di integrare lo stack con Typescript e similari, il che richiede un ulteriore lavoro di setup ( non sempre semplice e lineare )

4. React ha una peculiare architettura, voluta per garantire prestazioni deterministiche all'interfaccia grafica, ma che crea colli di bottiglia prestazionali dovuti al meccanismo di bridging tra Javascript e l'API nativa del sistema operativo

5. il supporto alle nuove funzionalita' delle API dell'OS non e' presente al day-one ( nel caso di React )

1 un esempio? perche' io non ho mai riscontrato il problema (10mesi che lavoro con React Native, un app in produzione e la seconda a breve)

2 direi che sono cose che capitano piu' o meno con tutte le libreria per mia esperienza, e dipende sempre da progetto a progetto, non ne farei un caso di React

3 non e' assolutamente necessario, ci sono server in node che servono milioni di richieste ogni giorno, scritti in JS. cosi come app in produzione scritte in JS.

4 si e no, ad esempio le immagini vengono gestite su un thread diverso da quello del JS (single threaded), di che colli di bottiglia parli?

5 perfettamente d'accordo, ma se devi fare un app che richiede sempre accesso alle ultime API di sistema probabilmente React Native (che brilla per creare interfacce) non e' la scelta adatta.

sottovento
30-05-2017, 13:46
Quindi presumo che sia un tiny client che semplicemente si interfaccia con servizi restful.

Non proprio. E' un protocollo "leggero" sviluppato per funzionare in ambiente ostile. Scusa se sono stringato, dare i dettagli e' un po' difficile.


Fidati che con Xamarin, una volta capito come sviluppare le 3-4 cose che ti servono, è semplicissimo e veloce sviluppare il tutto.

All'inizio non e' facilissimo, credimi. Soprattutto se faccio il paragone con l'app sviluppata nativamente per android. So che si tratta di me e non dell'ambiente, ma ora ho davanti un sacco di ambienti, tutti nuovi e tutti inizialmente ostili.


Per curiosità (oggi ho proprio voglia di farmi gli affari tuoi :D), come mai XML e non JSON, che è una codifica più leggera e portabile, utile specialmente per il traffico dati da dispositivi mobili?
Il progetto e' piu' grande e deve fare altre cose. E' stato sviluppato per parecchi anni, quindi... lo si tiene cosi' :D

sottovento
17-06-2017, 20:39
Riprendo questo thread un'altra volta per aggiungere ancora le mie considerazioni da neofita.
Stavo provando react-native ma nella testa mi ronzava continuamente "Oracle MAF" (Mobile Application Framework).
Cosi' alla fine ho ceduto ed ho accantonato react-native per provare MAF. Complice di questo anche le video lezioni (chiarissime) su youtube, che mi hanno invogliato a provare.

E' l'ambiente che mi e' piaciuto di piu' e con il quale sono riuscito ad ottenere dei risultati significativi in poco tempo. Certo, la strada e' ancora lunga ma e' l'ambiente sul quale voglio scommettere.

Un paio di disclaimer:
- @OoZic grazie per il suggerimento su react-native. Ho ottenuto dei risultati significativi anche con quest'ambiente, ma credo concorderai che e' piu' difficile da imparare, soprattutto per uno che parte da (quasi) zero sul mondo mobile/cross platform;
- @coffe_killer per me Xamarin rimane ancora un mistero;
- devo anche ammettere che indagando sugli ambienti precedenti ho imparato a risolvere molti problemi che inevitabilmente sono comuni a tutti i cross-platform. Quindi, quando e' arrivato il momento di testare MAF, questi problemi non esistevano piu' e l'ambiente mi e' sembrato piu' facile anche per questo motivo;
- mi piace java. Chiedo scusa per questo, so che non e' molto professionale avere preferenze in campo informatico;

Per ora ho fatto solo le prove con android, ma sembra che non cambi molto con iOs.

Per chi e' interessato a provare:
- occorre scaricare Oracle JDeveloper. Non tutte le versioni sono compatibili con MAF. La piu' aggiornata che support MAF e' la 12.2.1.0.0.
- Una volta installato Oracle JDeveloper, basta andare su Help -> Check for updates. Confermare gli update centers. Nella schermata successiva vi sara' un Tree con una cartella "Mobile", sotto la quale c'e' "Mobile Application Framework". Basta selezionarlo e verra' installato automaticamente. Se non vedete la cartella "Mobile" allora avete scaricato una versione non compatibile. Io vi ho avvertito :D
- una volta installato basta configurare dove si trova l'Android SDK. Analogamente si deve fare per iOS nel caso sia in uso (solo su Mac per motivi di licenza, ovviamente).

Fatto questo, e' tutto pronto. Per creare un nuovo progetto, basta selezionare new->application-> Mobile Application Framework application.

Ovviamente non e' tutto in discesa: la documentazione Oracle e' corposa, occorre leggere parecchio per imparare poco. E poi esiste ben poca documentazione al di fuori di quella standard Oracle (anche se, come sempre, stack overflow e' di aiuto).

Vedremo se riusciro' ad arrivare al termine della mia app, e se questa app funzionera' su entrambe le piattaforme. Ci dovro' lavorare parecchio ma credo che - salvo problemi insormontabili - continuero' a lavorare con Oracle MAF.

Spero che questa mia piccola, parziale analisi possa essere utile a chi deve cominciare. Quando mi e' stato chiesto di portare la mia app su un'altra applicazione onestamente non sapevo dove sbattere la testa: in rete c'e' tanta documentazione, ma che mi risultava criptica non conoscendo l'abc dello sviluppo mobile....

Grazie a tutti

sottovento
06-07-2017, 01:45
ATTENZIONE - sono costretto a riprendere questo thread per un buon motivo: le licenze per Oracle MAF.

Ho controllato parecchi siti, ma c'e' solo una grande confusione in giro. Nessuno che sappia nulla di preciso, nemmeno Oracle.
Sembra che ci siano diverse possibilita' di licensing ma apparentemente sono tutte estremamente costose!!! (si parla di 50000 dollari o giu' di li).

E' un peccato perche' nel giro di poco tempo ho portato la mia applicazione, che e' gia' pronta! Ora pero' non so esattamente cosa ne faro': se le licenze hanno questi prezzi, ovviamente mi conviene cancellare tutto e ripartire un'altra volta.

Comunque provero' a contattare Oracle ed avere una parola chiara sulla faccenda.
Questo per vostra informazione: mi piace l'ambiente, e' davvero bello ma il sistema di licenze non e' ancora chiaro ed e' probabile che siano tutte molto costose.
Tenete questo in considerazione se volete provare a sviluppare con MAF

pabloski
06-07-2017, 09:02
Nessuno che sappia nulla di preciso, nemmeno Oracle

Come al solito insomma :asd:

Comunque se hanno denunciato Google, sta sicuro che sono pronti a molestare qualsiasi altro soggetto.

Brutta gente quelli di Oracle!

sottovento
06-07-2017, 13:39
Come al solito insomma :asd:

Comunque se hanno denunciato Google, sta sicuro che sono pronti a molestare qualsiasi altro soggetto.

Brutta gente quelli di Oracle!
Purtroppo hai ragione. Lavoro per una grossa azienda e siamo praticamente sempre sotto controllo. Non correro' il rischio di distribuire nulla se non ho certezze sulle licenze.
Addirittura spesso occorre valutare le licenze per i singoli tool o le singole feature. Non e' raro sviluppare del software e poi accorgersi che non lo si puo' distribuire e quindi buttare tutto.

Ad ogni modo ho spedito una richiesta di informazioni ad Oracle, nella speranza di ottenere una risposta, che eventualmente riportero' qui per chi e' interessato ad usare MAF.

Ho verificato anche il listino prezzi delle licenze e c'erano dei prodotti relativi allo sviluppo Mobile, ma si riferivano ai prodotti server e non c'era alcun riferimento a MAF.

Personalmente... vista la situazione cosi' ingarbugliata credo che con MAF siano alla finestra a vedere cosa succede per poi decidere: ci sono tanti concorrenti sul cross-development e non hanno ancora deciso come fare.
Vorrebbero ovviamente imporre una licenza super costosa ma hanno paura di tagliare le gambe al prodotto, quindi stanno studiando l'accoglienza di MAF presso gli sviluppatori e poi decidere. Non vedo altro motivo: insomma, non c'e' una sola parola sulla licenza, e' davvero un disastro!

sottovento
06-07-2017, 15:46
Ricevuto una risposta da Oracle, utile come uno spazzaneve ai tropici.
Per motivi di privacy riporto solo una parte del messaggio, la piu' importante:

What is the company that you work for? I could connect you with your account manager and discuss the licensing structure.


In pratica non si sa ancora nulla della licenza. Non so perche' mi ero convinto che MAF avesse una licenza tipo Java, che mi permettesse di usarlo per le mie applicazioni senza particolari problemi.
Ehi! Aspetta un attimo: sul sito c'e' anche una licenza per l'uso di Java a circa 9000 dollari! Meglio non investigare....

Ho risposto ad Oracle dando ulteriori specifiche sul mio caso ma senza riportare le informazioni richieste perche' non sono rilevanti per me: voglio solo sapere se si puo' usare MAF per semplici app senza dover contattare il mondo e pagare cifre astronomiche.

Credo che dovro' rassegnarmi a cancellare e portare il tutto un'altra volta.

Spero di non avervi annoiato, e spero che questa discussione possa essere utile a qualcuno...

sottovento
06-07-2017, 16:28
"siamo belli, siamo fighi, siamo i migliori"

Ho avuto anch'io questa impressione.
Comunque non mi hanno ancora risposto, lascio passare ancora qualche ora, poi telefono alla tipa che ha spedito il messaggio che ho riportato sopra.
Avro' diritto ad una risposta, no?

[Kendall]
06-07-2017, 16:44
Sottovento, domanda:
Vista la velocità con la quale hai convertito l'app nativa android tramite MAF mi viene da pensare che la struttura non sia comunque particolarmente complessa a livello di interfaccia e/o modello dati.

Sicuro che lo sbattimento nel cercare tool e framework per lo sviluppo multipiattaforma valga davvero la candela?
Se il progetto in questione non è particolarmente complesso secondo me ti converrebbe quasi quasi buttarti sullo sviluppo nativo, tanto ormai la versione android già ce l'hai, ti mancherebbe solo quella per ios, che però secondo me non ti porterebbe via troppo tempo nè con la prima stesura nè poi con la manutenzione.
Alla fin fine se non hai necessità di interfacce super sbarluccicose e con animazioni "esoteriche" l'app la metti su davvero in quattro e quattro otto.
Conta che swift è un linguaggio semplicissimo da imparare (ma immagino non sia questo il problema) e cocoa touch una volta imparata quella manciata di concetti base è davvero semplice da usare.

sottovento
06-07-2017, 16:55
;44868504']Sottovento, domanda:
Vista la velocità con la quale hai convertito l'app nativa android tramite MAF mi viene da pensare che la struttura non sia comunque particolarmente complessa a livello di interfaccia e/o modello dati.

Sicuro che lo sbattimento nel cercare tool e framework per lo sviluppo multipiattaforma valga davvero la candela?
Se il progetto in questione non è particolarmente complesso secondo me ti converrebbe quasi quasi buttarti sullo sviluppo nativo, tanto ormai la versione android già ce l'hai, ti mancherebbe solo quella per ios, che però secondo me non ti porterebbe via troppo tempo nè con la prima stesura nè poi con la manutenzione.
Alla fin fine se non hai necessità di interfacce super sbarluccicose e con animazioni "esoteriche" l'app la metti su davvero in quattro e quattro otto.
Conta che swift è un linguaggio semplicissimo da imparare (ma immagino non sia questo il problema) e cocoa touch una volta imparata quella manciata di concetti base è davvero semplice da usare.

E' un po' che mi frullava 'sta cosa nella testa. Hai ragione, ho speso piu' tempo a cercare e testare piattaforme che non a scrivere l'app stessa.

Non c'e' un reale motivo per questo se non una genuina stupidita' da parte mia.
Tuttavia ora sono curioso di sapere la risposta di Oracle (if any, of course) che riportero' qui a beneficio di chi sta valutando MAF.

Credo che passero' a comprare un mac ed un iphone...

DIMENTICAVO - passando da Android nativo (in java) a MAF (java), l'applicazione e' passata da 5Mb a 30Mb, e le velocita' di esecuzione si e' ridotta drasticamente. Insomma, la nuova app e' decisamente piu' lenta se scritta in MAF anche se sono entrambe Java.
L'app semplicemente riceve dati da socket e li mostra in diverse liste, poca roba. Non vedo il motivo di un simile rallentamento

GTKM
06-07-2017, 20:15
E' un po' che mi frullava 'sta cosa nella testa. Hai ragione, ho speso piu' tempo a cercare e testare piattaforme che non a scrivere l'app stessa.

Non c'e' un reale motivo per questo se non una genuina stupidita' da parte mia.
Tuttavia ora sono curioso di sapere la risposta di Oracle (if any, of course) che riportero' qui a beneficio di chi sta valutando MAF.

Non è solo ingenuità tua. Questo "errore" si fa spesso. Si perde un sacco di tempo a cercare framework e scorciatoie per poi rendersi conto che nello stesso tempo, forse, si sarebbe potuto produrre qualcosa. :D

DIMENTICAVO - passando da Android nativo (in java) a MAF (java), l'applicazione e' passata da 5Mb a 30Mb, e le velocita' di esecuzione si e' ridotta drasticamente. Insomma, la nuova app e' decisamente piu' lenta se scritta in MAF anche se sono entrambe Java.
L'app semplicemente riceve dati da socket e li mostra in diverse liste, poca roba. Non vedo il motivo di un simile rallentamento
Il rallentamento è dovuto a tutto l'accrocchio del MAF. :D

Ma io sono rimasto sconvolto dai prezzi che hai scritto. 9000$ di licenza Java, per cosa?

sottovento
06-07-2017, 20:31
Non è solo ingenuità tua. Questo "errore" si fa spesso. Si perde un sacco di tempo a cercare framework e scorciatoie per poi rendersi conto che nello stesso tempo, forse, si sarebbe potuto produrre qualcosa. :D

Si. Cercavo di risparmiare ed avere qualcosa che funziona. Ma non e' ancora detto, la tata di Oracle deve ancora rispondermi. Non so se lo fara', voleva parlare con il mio Account Manager (non sapevo di averne uno).
Comunque ora so cos'e' un account manager: uno che si occupa delle licenze Oracle e della loro struttura. Credo ce ne voglia uno per ogni installazione...


Il rallentamento è dovuto a tutto l'accrocchio del MAF. :D

Si, ma mi sembra irragionevole: ricevo un centinaio di record da socket, non e' una gran roba. Android nativo le mostra istantaneamente, MAF ha bisogno di parecchio tempo, ed e' un'operazione banale.


Ma io sono rimasto sconvolto dai prezzi che hai scritto. 9000$ di licenza Java, per cosa?

Non l'ho capito nemmeno io. Ho provato a cercare ancora il listino prezzi ma ne ho trovato un altro con prezzi completamente diversi. Ho scoperto che ci sono prodotti che vengono licenziati anche a 2 milioni/anno, tecnologie cosi' avanzate che gente come me non riesce nemmeno a pronunciarne il nome.

sottovento
07-07-2017, 03:14
La tata dell'Oracle non ha risposto, forse e' timida o forse vuole che faccia io il primo passo. La chiamero' e vi faro' sapere.

Nel frattempo ho continuato a cercare le licenze ed ho trovato un articolo interessante: https://blogs.oracle.com/jdeveloperpm/say-hello-to-the-new-oracle-mobile-application-framework

Nelle varie risposte che l'autore da' a chi, come me, ha cercato senza trovare nulla, scrive (nel maggio 2016):

Oracle MAF is now part of Oracle Mobile Cloud Service offering in terms of licensing - so you'll get it through and Oracle MCS license. http://cloud.oracle.com/mobile

I furbetti obbligano quindi a comprare altri servizi. I prezzi su quel sito sono questi: https://cloud.oracle.com/en_US/mobile/pricing
(potrebbero anche sembrare ragionevoli, occorre fare una stima).

Sul loro shop i prezzi sono ovviamente diversi, ci mancherebbe che combaciassero: https://shop.oracle.com/apex/f?p=dstore:4:27645128659009:::RIR:IR_ROWFILTER:mobile%20cloud

Comunque se i prezzi sono questi, non sono proprio impossibili per un'azienda, anche se si parla di un'app interna. Sta a vedere se ho capito correttamente, con Oracle non si sa mai. Nemmeno la tata si e' azzardata a fare una stima dei prezzi (e nemmeno a suggerire un tipo di licenza)

[Kendall]
07-07-2017, 08:12
La tata dell'Oracle non ha risposto, forse e' timida o forse vuole che faccia io il primo passo. La chiamero' e vi faro' sapere.

Nel frattempo ho continuato a cercare le licenze ed ho trovato un articolo interessante: https://blogs.oracle.com/jdeveloperpm/say-hello-to-the-new-oracle-mobile-application-framework

Nelle varie risposte che l'autore da' a chi, come me, ha cercato senza trovare nulla, scrive (nel maggio 2016):

I furbetti obbligano quindi a comprare altri servizi. I prezzi su quel sito sono questi: https://cloud.oracle.com/en_US/mobile/pricing
(potrebbero anche sembrare ragionevoli, occorre fare una stima).

Sul loro shop i prezzi sono ovviamente diversi, ci mancherebbe che combaciassero: https://shop.oracle.com/apex/f?p=dstore:4:27645128659009:::RIR:IR_ROWFILTER:mobile%20cloud

Comunque se i prezzi sono questi, non sono proprio impossibili per un'azienda, anche se si parla di un'app interna. Sta a vedere se ho capito correttamente, con Oracle non si sa mai. Nemmeno la tata si e' azzardata a fare una stima dei prezzi (e nemmeno a suggerire un tipo di licenza)

A livello informativo tieni conto l'Apple Developer Enterprise Program ha un costo annuale di 299$ ed è l'abbonamento che servirebbe alla tua azienda per firmare e distribuire l'app in-house.
Sinceramente non so come funzioni per i vari framework crossplatform, ma immagino che sia comunque necessario passare attraverso il sistema di firma digitale Apple per poter installare le applicazioni sui dispositivi.

sottovento
07-07-2017, 19:58
;44869472']A livello informativo tieni conto l'Apple Developer Enterprise Program ha un costo annuale di 299$ ed è l'abbonamento che servirebbe alla tua azienda per firmare e distribuire l'app in-house.
Sinceramente non so come funzioni per i vari framework crossplatform, ma immagino che sia comunque necessario passare attraverso il sistema di firma digitale Apple per poter installare le applicazioni sui dispositivi.

Si, e' sicuramente necessario anche se si passa dai vari crossplatform. E' anche per questo che in MAF come in QT ed in Xamarin e' necessario specificare dov'e' l'installazione dell'SDK (sia in Android sia in iOS).

La licenza Oracle e' ancora un mistero: ho provato a telefonare alla tipa di Oracle qui negli USA ma non ha nemmeno risposto al telefono. Ho l'impressione che se non spendi almeno qualche migliaio di dollari in licenze non si abbia nemmeno il diritto di avere una risposta al telefono.
Continuero' a tenere questo thread aggiornato, nel caso possa interessare a qualcuno.

Nuke987
07-07-2017, 22:01
La butto lì. Premetto che sono un back-end developer e che quindi raramente sconfino nel front-end e nelle App perchè se ne occupano altri. Non so cosa faccia di preciso la tua App ma a meno che non utilizzi funzioni proprie del telefono, non puoi semplicemente cavartela con un'App fake? Mi spiego.

3 annetti fa abbiamo sviluppato un'App per un'assicurazione e c'era proprio il problema del multi-piattaforma (Android, iOS e BB10/Windows Mobile prima che ne fosse decretata la fine). Non volevano dover mandare avanti N App separate quindi abbiamo fatto un sito dal quale si accede scaricando le App dai relativi store di ogni piattaforma. Ogni cliente è convinto di stare utilizzando un'App ma in realtà sta navigando su sito che si adatta mascherandosi da App. Praticamente la stessa cosa che ha fatto Wind su BB10 dove ha realizzato un'applicazione nello store di BlackBerry che in realtà non è altro che (tra virgolette) un iframe. Se lo scopo è macinare dati, prenderli, salvarli, elaborarli ecc. te la puoi cavare in questo modo senza essere costretto ad imparare N linguaggi ed investire tanti più soldi in sviluppo. Senza considerare che è molto più facile mantenere e sviluppare il progetto dal momento che lavori sempre solo su un sistema. Con jQuery puoi fare tante cose belle e fare anche in modo che l'App tenga dei dati offline sempre disponibili.

sottovento
16-07-2017, 10:53
Nuke, grazie per l'idea ma non si applica al mio caso: l'app viene usata in posti dove la rete e' di cattivissima qualita'. Uso quindi delle socket per spedire i dati utilizzando un protocollo mio, che gestisce i timeout, le riconnessioni, etc. e soprattutto riprende a spedire dall'ultimo byte ricevuto correttamente.

I protocolli standard non sembrano funzionare, sempre a causa della rete e delle riconnessioni.

A proposito delle licenze, ho ottenuto un'altra risposta da Oracle:


I first need to know the name of your company to find your account manager and product specialist.


E' quindi chiaro che e' meglio lasciar perdere Oracle MAF in quanto non si sapra' mai se quello che avete realizzato puo' essere distribuito e a quali condizioni. Credo di non insistere, sono davvero irritato.

Spero che nessuno abbia seguito il mio suggerimento iniziale: e' vero, MAF sembra bello e permette di scrivere in Java su entrambe le piattaforme.
Ma la politica di Oracle e' suicida. Meglio lasciar perdere.

[Kendall]
17-07-2017, 08:14
Nuke, grazie per l'idea ma non si applica al mio caso: l'app viene usata in posti dove la rete e' di cattivissima qualita'. Uso quindi delle socket per spedire i dati utilizzando un protocollo mio, che gestisce i timeout, le riconnessioni, etc. e soprattutto riprende a spedire dall'ultimo byte ricevuto correttamente.

I protocolli standard non sembrano funzionare, sempre a causa della rete e delle riconnessioni.

A proposito delle licenze, ho ottenuto un'altra risposta da Oracle:


I first need to know the name of your company to find your account manager and product specialist.


E' quindi chiaro che e' meglio lasciar perdere Oracle MAF in quanto non si sapra' mai se quello che avete realizzato puo' essere distribuito e a quali condizioni. Credo di non insistere, sono davvero irritato.

Spero che nessuno abbia seguito il mio suggerimento iniziale: e' vero, MAF sembra bello e permette di scrivere in Java su entrambe le piattaforme.
Ma la politica di Oracle e' suicida. Meglio lasciar perdere.

Nel caso ti affidassi alla soluzione nativa anche per la versione iOS, per quanto concerne le comunicazioni ti consiglio di dare un'occhiata a questa libreria (scritta in Objective-C ma utilizzabile tranquillamente anche da Swift): CocoaAsyncSocket (https://github.com/robbiehanson/CocoaAsyncSocket)
Si tratta di una libreria per comunicazioni socket completamente asincrona, dove tutta la comunicazione viene gestita in thread separati tramite GDC (https://developer.apple.com/documentation/dispatch) mentre tutti gli eventi (connessione stabilita, timeout, ricezione dati, invio dati, ecc...) vengono notificati tramite delegato (interfaccia) nel main thread dell'applicazione. Delle API davvero potenti e di facile utilizzo (e supportate attivamente da parecchio tempo).

sottovento
17-07-2017, 08:26
;44890919']Nel caso ti affidassi alla soluzione nativa anche per la versione iOS, per quanto concerne le comunicazioni ti consiglio di dare un'occhiata a questa libreria (scritta in Objective-C ma utilizzabile tranquillamente anche da Swift): CocoaAsyncSocket (https://github.com/robbiehanson/CocoaAsyncSocket)
Si tratta di una libreria per comunicazioni socket completamente asincrona, dove tutta la comunicazione viene gestita in thread separati tramite GDC (https://developer.apple.com/documentation/dispatch) mentre tutti gli eventi (connessione stabilita, timeout, ricezione dati, invio dati, ecc...) vengono notificati tramite delegato (interfaccia) nel main thread dell'applicazione. Delle API davvero potenti e di facile utilizzo (e supportate attivamente da parecchio tempo).

Ok Grazie, ci pensero'. Ora devo pensare a ripartire...

sottovento
27-02-2018, 19:47
Scusate per il necropost ma ho l'impressione che possa essere utile a qualcuno, quindi riesumo il thread.

Dopo varie peripezie, sono approdato a GLUON, il quale mi permette di sviluppare in java FX. Il risultato puo' girare sotto android (provato), iOS (non ancora provato) e qualsiasi JVM, per esempio su un laptop Win/Linux (provato).

E' basato su un progetto open source. Tuttavia ho preferito installare il plug in GLUON per il quale c'e' una versione free (visualizza uno splash screen in partenza) ed una a pagamento, ovviamente senza splash screen.

Ho realizzato un'app che mi era stata chiesta nel giro di pochi giorni, usando la versione free. Trattandosi di programmazione java + java FX, mi ci e' voluto poco.

L'ho trovato molto bello. Inoltre il plug in e' disponibile per Netbeans/Android Studio/.... quindi non occorre cambiare ambiente di sviluppo preferito.

Ne so ancora poco, per esempio non ho ancora usato il debugger android: siccome il risultato gira anche sul laptop, ho sempre testato prima la versione desk e preparato il package quando il funzionamento era ok.

Grazie a tutti

pabloski
28-02-2018, 10:32
Scusate per il necropost ma ho l'impressione che possa essere utile a qualcuno, quindi riesumo il thread.

Dopo varie peripezie, sono approdato a GLUON, il quale mi permette di sviluppare in java FX. Il risultato puo' girare sotto android (provato), iOS (non ancora provato) e qualsiasi JVM, per esempio su un laptop Win/Linux (provato).


No no figurati, anzi hai fatto bene a postarlo. Da qualche mese mi sto interessando a JavaFX e il suo feeling WPF-like mi ha convinto. Avevo letto anch'io di Gluon e mi era sembrato troppo bello per essere vero.

Invece mi pare di capire che faccia esattamente quanto promesso. Ed è lecito aspettarsi che funga alla perfezione pure su iOS.

Se le cose stanno così, è decisamente un toolkit d aggiungere alla lista dei preferiti per lo sviluppo di app mobile. Peccato che arriva in un'epoca in cui c'è Flutter, che onestamente è strabiliante, un mondo a parte rispetto ai soliti framework basati su Javascript.

sottovento
28-02-2018, 14:15
No no figurati, anzi hai fatto bene a postarlo. Da qualche mese mi sto interessando a JavaFX e il suo feeling WPF-like mi ha convinto. Avevo letto anch'io di Gluon e mi era sembrato troppo bello per essere vero.

Invece mi pare di capire che faccia esattamente quanto promesso. Ed è lecito aspettarsi che funga alla perfezione pure su iOS.

Se le cose stanno così, è decisamente un toolkit d aggiungere alla lista dei preferiti per lo sviluppo di app mobile. Peccato che arriva in un'epoca in cui c'è Flutter, che onestamente è strabiliante, un mondo a parte rispetto ai soliti framework basati su Javascript.
Flutter! Mai sentito prima! Grazie dell'informazione, vado a controllare.

Attualmente ho app scritte usando Android Studio (native) e scritte usando Gluon. Preferisco Gluon, e credo che continuero' a preferirlo nel caso la prova con iOS (per la quale non sono ancora attrezzato) sia positiva.
Ogni volta che mi viene chiesta una app, cerco di valutare quale ambiente devo usare in accordo con le mie conoscenze, che sono limitate ma che cambiano nel tempo.

Da come ne parli, Flutter potrebbe entrare nella rosa :D Vado a vedere di cosa si tratta. Grazie mille!!