Para los que empezasteis programando en J2ME y en algún momento disteis el salto a Android: ¿qué fue lo que más os costó reaprender?
Me imagino que el modelo de vida de una MIDlet (con sus estados pausado/activo/destruido tan simples) frente al ciclo de vida de una Activity en Android (onCreate, onPause, onResume, onDestroy, y encima con configuraciones que se recrean por cualquier cosa como rotar la pantalla) tuvo que ser un cambio bastante brusco. Y las limitaciones de memoria y CPU tan estrictas de los móviles J2ME, comparadas con lo que permite un smartphone medio hoy, seguro que cambiaron bastante la forma de pensar el código.
¿Hay algo de la disciplina de J2ME (cuidar cada byte, evitar según qué patrones por el coste de memoria) que os siga sirviendo hoy, o directamente lo dejasteis atrás porque ya no hace falta pensar así?
Marta
Para mí lo más costoso de reaprender no fue tanto el ciclo de vida en sí (aunque sí, onCreate/onPause/onResume frente a los estados mucho más simples de una MIDlet cuesta al principio), sino asumir que el sistema puede matarte el proceso en cualquier momento sin previo aviso cuando la app está en segundo plano, y que tienes que diseñar pensando en eso desde el principio: guardar estado de forma proactiva, no asumir que vas a seguir viva con tus variables intactas cuando el usuario vuelva.
En J2ME, con toda su sencillez, el modelo era mucho más predecible: tu MIDlet corría, se pausaba, se reanudaba, y básicamente controlabas tú el ciclo completo sin que el sistema decidiera matarte agresivamente por gestión de memoria del dispositivo. En Android, sobre todo en los primeros años, esa gestión agresiva de procesos en segundo plano rompía aplicaciones que asumían ingenuamente que sus datos en memoria seguirían ahí al volver.
Lo que sí me sirvió de la disciplina J2ME fue la costumbre de no dar nada por garantizado sobre el estado del dispositivo (batería, memoria, conectividad), una mentalidad que en Android sigue siendo necesaria, solo que por motivos distintos.
Elena