Autore Topic: Dalvik da cestinare?  (Letto 1465 volte)

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 90
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
Dalvik da cestinare?
« il: 02 Novembre 2013, 07:17:18 CET »
Il titolo è un po esagerato ma leggendo un po e la.. la sensazione di un cambio o di virtual machine o di sistema di runtime diverso è molto diffusa.
Partiamo da questo articolo:


 BREAKING: New Runtime Compiler in Android 4.4 to Possibly Bring Better Performance in Future Releases  –   xda-developers


Recentemente Google ha acquisito Flexcore un' azienda francesce che ha creato un sistema più veloce di esecuzione delle app chiamato ART. Adesso come vedete nelle immagini lo sviluppatore può scegliere il metodo di compilazione per Dalvik o per ART creando non un file Dex ma un OAT

Ecco la conferma ufficiale

Introducing ART | Android Developers

Da tanto molti dicono che il problema di Android è sempre stato o Java o la Dalvik... e adesso questa scelta o tentativo di provare qualcosa di diverso. Non penso che Google abbandoni Java cosi da un giorno all' altro ma penso che stia cercando un modo per rendere Android più simile alla compilazione iOS.
The code is joy and passion but it has a high degree of suffering

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Dalvik da cestinare?
« Risposta #1 il: 02 Novembre 2013, 09:01:02 CET »
Il titolo è un po esagerato ma leggendo un po e la.. la sensazione di un cambio o di virtual machine o di sistema di runtime diverso è molto diffusa.
Partiamo da questo articolo:


 BREAKING: New Runtime Compiler in Android 4.4 to Possibly Bring Better Performance in Future Releases  –   xda-developers


Recentemente Google ha acquisito Flexcore un' azienda francesce che ha creato un sistema più veloce di esecuzione delle app chiamato ART. Adesso come vedete nelle immagini lo sviluppatore può scegliere il metodo di compilazione per Dalvik o per ART creando non un file Dex ma un OAT

Ecco la conferma ufficiale

Introducing ART | Android Developers

Da tanto molti dicono che il problema di Android è sempre stato o Java o la Dalvik... e adesso questa scelta o tentativo di provare qualcosa di diverso. Non penso che Google abbandoni Java cosi da un giorno all' altro ma penso che stia cercando un modo per rendere Android più simile alla compilazione iOS.

Important: Dalvik must remain the default runtime or you risk breaking your Android implementations and third-party applications.

Per adesso è solo un timido tentativo.

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 90
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
Re:Dalvik da cestinare?
« Risposta #2 il: 02 Novembre 2013, 09:04:29 CET »
Important: Dalvik must remain the default runtime or you risk breaking your Android implementations and third-party applications.

Per adesso è solo un timido tentativo.

Si ma un tentativo concreto. Cmq staremo a vedere.
The code is joy and passion but it has a high degree of suffering

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dalvik da cestinare?
« Risposta #3 il: 02 Novembre 2013, 10:42:01 CET »
La Dalvik sarà lenta e inefficiente (rispetto al codice nativo), ma direi che è uno dei motivi principali dell'incredibile successo di android su migliaia di dispositivi diversi. E' la prima volta che si può proprio dire "compile once, run everywhere".

Non si capisce benissimo cosa è ART, se si tratta di un nuovo JIT-compiler che produce codice per la Dalvik ancora più ottimizzato (approccio alla ASMJS, se avete presente), oppure molto più probabile se si tratta di una nuova VM che in prospettiva andrà a sostituire la DalvikVM. In entrambi i casi si rimane comunque su una VM (altrimenti sarebbe il delirio con i migliaia di hw da gestire).

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline undead

  • Utente senior
  • ****
  • Post: 666
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Dalvik da cestinare?
« Risposta #4 il: 02 Novembre 2013, 11:28:36 CET »
Che dalvik non sia un fulmine di guerra purtroppo è noto. D'altra parte c'è un motivo se un telefono windows phone single core a 800 andava quanto un dual core android a 1.2 ghz.  :-P

Comunque leggevo qua e là commenti sui siti e blog USA prima della release ufficiale e tutti tra le righe si lamentavano del fatto che la 4.4 non era poi questa grande rivoluzione. In realtà a me sembra che molte cose siano cambiate o stiano per cambiare nel mondo android...

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dalvik da cestinare?
« Risposta #5 il: 12 Novembre 2013, 20:27:51 CET »
Un bel po' di informazioni non ufficiali su ART.
ART runtime for Kitkat 4.4 explained. | Sanket Shah

Qua un TL;DR :

  • Le app che girano su ART sono esattamente le stesse che si realizzano per Dalvik : il bytecode rimane invariato.
  • ART non è una VM, è un Ahead-Of-Time-Compiler : quando viene installato un APK, esso viene integralmente compilato in codice nativo.
  • Se la Dalvik è mediamente 4 volte più lenta del nativo, ART raddoppia le performance della Dalvik per cui diventa solo 2 volte più lento del compilato direttamente da nativo.
  • Una volta che l'app è stata compilata in ART, non ci sono più riferimenti al codice originario, per cui addio stacktrace per i developers.
  • Le app occuperanno mediamente il doppio dello spazio (o più) perchè dovranno convivere l'APK e la versione compilata per ART.
  • Nell'attuale versione di ART ci sono due compilatori dal bytecode-APK al formato ART nativo, presumibilmente per provarli entrambi.
  • Uno di essi è niente meno che LLVM. Per chi non lo sapesse, LLVM è una delle recentissime novità nello sviluppo dei compilatori, che ha rapidamente surclassato giganti come GCC. L'idea alla base di LLVM è questa: il codice sorgente in un qualsiasi linguaggio (C, Java, C#, altro) viene pre-compilato in un formato intermedio di basso livello molto simile a quello di una VM (da qui il nome LowLevelVirtualMachine). Su questo bytecode intermedio vengono applicate le ottimizzazioni tipiche dei compilatori, in varie passate. Alla fine avviene la post-compilazione nel binario del target finale.
  • Se uno dei post-compilatori di ART è LLVM, allora è lecito presumere che in un futuro potremo sviluppare app android in altri linguaggi, oltre che Java.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 90
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
Re:Dalvik da cestinare?
« Risposta #6 il: 12 Novembre 2013, 21:34:25 CET »
Quindi Google vuole da una parte avvicinarsi al codice nativo senza perdere la possibilità di usare Java come linguaggio anzi aggiungerne altri.
Ottima cosa ma sarà sempre meno veloce del nativo.. anche preferisco in questo modo.

Grazie delle info
The code is joy and passion but it has a high degree of suffering

Offline undead

  • Utente senior
  • ****
  • Post: 666
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Dalvik da cestinare?
« Risposta #7 il: 12 Novembre 2013, 22:30:18 CET »
Interessante in prospettiva ma quello che non mi é chiaro é che se le api native non ci sono alla fine gira e rigira parte del codice dovrá rimanere bytecode. Sbaglio?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dalvik da cestinare?
« Risposta #8 il: 12 Novembre 2013, 22:38:32 CET »
Se come pare ART segue l'idea di base di LLVM, sul terminale arriva un APK in bytecode esattamente come adesso. A quel punto ART lo compila nel nativo adatto al terminale. vedila come compilazione in due passi, di cui il secondo sul terminale.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline undead

  • Utente senior
  • ****
  • Post: 666
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Dalvik da cestinare?
« Risposta #9 il: 12 Novembre 2013, 23:46:07 CET »
Eh ma il problema rimane. Se per dire la funzione x su ndk non c'é ma é solo java come fanno a compilarla nativa? Per quanto ne so io il problema é che le librerie non pubbliche non hanno garanzia di compatibilitá tra i vari produttori.

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Dalvik da cestinare?
« Risposta #10 il: 13 Novembre 2013, 00:46:25 CET »
Finalmente qualche notizia tecnica vera.

LLVM è già usata da tempo sotto Android nella parte grafica per quanto riguarda il RenderScript. LLVM se verrà adottata e utilizzata in tutte le sue parti si potrà programmare sotto Android in tutti i linguaggi con un compilatore o interprete in grado di generare il bitcode della LLVM, ho scritto bitcode perché LLVM è concepita come una sequenza di bit e non di byte. LLVM ha anche una caratteristica di gestire il linkage delle chiamate a funzioni con convenzioni diverse, in questo modo è possibile unire bitcode prodotti da linguaggi diversi senza impazzire con interfacce a livello di programmazione come il JNI.

Purtroppo il progetto LLVM non era maturo quando fu' concepito Android e fu' scelto di utilizzare una JVM alternativa a quella di Oracle la Dalvik, ma ha tutte le limitazione di una JVM, cioè implementa una virtual machine adatta solo al linguaggio Java, LLVM è invece generica.

The LLVM Compiler Infrastructure Project
adb logcat | tee /tmp/logcat | grep TAG

Offline undead

  • Utente senior
  • ****
  • Post: 666
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Dalvik da cestinare?
« Risposta #11 il: 13 Novembre 2013, 11:28:30 CET »
Non ci capiamo o sono rimasto indietro io con la tecnologia.

Abbiamo un sistema X che ha una serie di API/framework/Runtime/virtual machine.. come lo volete chiamare.

Il concetto è che l'applicazione Y non banale che gira sul sistema X fa delle chiamate a delle funzioni di sistema.

Ad oggi le API pubbliche sono in java e chiunque vende un device android deve garantire che quelle API siano presenti.
In NDK ci sono delle API richiamabili da codice nativo che sono un sottoinsieme ristretto rispetto a quelle Java.

Ci sono discussioni nelle quali app che fanno cose strane usano API non pubbliche, ovviamente lo staff di android li redarguisce dicendo che questa pratica è scorretta perché i produttori non sono obbligati a usare quelle API (esempio: la app della telecamera di un device Samsung può non usare le API nascoste e usare una libreria/codice proprietario per accedere alla camera tramite codice nativo). Poiché le api non pubbliche possono cambiare da produttore a produttore e Google le può stravolgere da una release all'altra, gli sviluppatori sono fortemente scoraggiati ad usarle perché rischiano che a seguito di aggiornamento le app smettano di funzionare. Il che è un problema dello sviluppatore in primis ma anche un problema di Google se tu aggiorni e mezze app ti smettono di funzionare.

Detto questo, considerando che ad oggi le chiamate di sistema sono quasi tutte non disponibili nell'NDK, io non capisco come ci si possa aspettare che ART bypassi questa limitazione.

In pezzi di codice che fanno calcoli sono straconvinto che i miglioramenti ci siano ma se io parlo col sistema attraverso API non native non mi aspetto che questo cambi se il Runtime è ART invece di dalvik.

Sbaglio?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Dalvik da cestinare?
« Risposta #12 il: 13 Novembre 2013, 11:48:21 CET »
In pezzi di codice che fanno calcoli sono straconvinto che i miglioramenti ci siano ma se io parlo col sistema attraverso API non native non mi aspetto che questo cambi se il Runtime è ART invece di dalvik.

Sbaglio?

Secondo me dici bene.

La Dalvik è una VM, che ha il suo JIT, il compilatore Just-In-Time che compila "al volo" un 2% del bytecode in codice nativo per migliorare le performance, il resto è bytecode interpretato. ART estremizza questo approccio nel senso che "tutto" il bytecode viene pre-compilato in codice nativo. Se vuoi puoi considerare ART come una evoluzione del JIT-compiler, un traduttore di app da bytecode a nativo.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline undead

  • Utente senior
  • ****
  • Post: 666
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Dalvik da cestinare?
« Risposta #13 il: 13 Novembre 2013, 12:07:05 CET »
Esatto, poi alla fine bisogna anche vedere quali sono i colli di bottiglia applicazione per applicazione.

Faccio un esempio banale: per la camera devi usare api dell'sdk, questo implica che:
- devi avere una surfaceview
- devi prendere l'holder
- devi settare l'holder

dalla 4.0 mi pare tu possa puoi settare una texture ma ti servono comunque dei dati.

Sicuramente nel device X ci sarà un modo per leggersi il flusso video compresso senza dover fare tutto questo casino, semplicemente accendendo la telecamera senza dargli surface o altro.

Ma ad oggi se vuoi usare la camera questo è quello che ti permette il sistema, ART o dalvik che sia la parte cpu intensive a rigor di logica è quella che ho scritto sopra, non credo che avere bytecode o codice nativo cambi qualcosa nella sostanza se poi sei limitato a livello di api.

 :-)

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Dalvik da cestinare?
« Risposta #14 il: 13 Novembre 2013, 14:28:47 CET »
Non aggiunge molto alla discussione, visto che avete già parlato della compilazione, ma è un appunto che arriva direttamente da Google.

Robert Love's answer to Android (OS): Why is ART better than Dalvik? - Quora