TL; DR? Salta al final para ver una breve lista de conceptos que debes conocer.
Gracias por el A2A, Mohammad Laif! ¿Qué partes de Java necesitaba saber antes de comenzar el desarrollo de Android? En mi caso, nada de eso.
Cuando comencé a desarrollar para Android, nunca antes había leído o tocado Java. Y puede preguntarse cómo alguien puede comenzar a programar en un lenguaje que nunca ha usado antes; Buena pregunta, lector.
- ¿Cómo es la demanda de desarrolladores expertos de aplicaciones de Android en 2017?
- ¿Dónde debo buscar para encontrar desarrolladores de aplicaciones de Android ubicados en Bangalore?
- Si Windows puede ejecutar código nativo, ¿por qué Android no puede ejecutar código nativo?
- ¿Cómo aprendo cómo hacer una aplicación de Android?
- ¿Por qué Android tiene un límite estricto en el tamaño de almacenamiento dinámico de la VM Dalvik?
Tenía tres armas secretas bajo la manga, la primera arma secreta era el lenguaje C. Si Java es un gorila pesado de 400 libras atado a una papelera de reciclaje, C es un chimpancé que se mueve ágilmente de árbol en árbol a velocidades increíbles.
“No lo entiendo, ¿por qué hay una papelera de reciclaje? – “Eso es porque tienes un pequeño y estúpido cerebro de simio, Gerald.
Esa analogía fue increíble, pero ampliaré un poco para ese simio que se tragó un neumático de bicicleta. C es un lenguaje más elegante y menos capaz que se parece a Java pero carece de todas las comodidades. Si aprende primero el lenguaje C más simple, puede graduarse a Java con facilidad.
Mi segunda arma secreta era mi mejor amigo, Stoyan . Me obligó a aprender Java para poder ayudarlo a terminar su aplicación de Android, y me ayudó a aprender el idioma a medida que avanzábamos. Era un StackOverflow de la vida real que podía mirar incómodo hasta que me vi obligado a responder mis preguntas.
Si no posee o tiene acceso a un Stoyan, le recomiendo aprender a Google para obtener ayuda de programación. Eso significa formular sus preguntas de tal manera que evite respuestas superfluas centradas en el usuario. Por ejemplo, “cómo iniciar una aplicación de Android” frente a “cómo iniciar una aplicación de Android mediante programación “.
‘Programáticamente’ es el deliminador clave aquí. Incluya esa palabra o ‘java’ en sus consultas de búsqueda y recibirá resultados relevantes de inmediato.
Mi tercera y última arma secreta era el código fuente existente . Si nunca antes ha visto Java en su vida, podría beneficiarse al comenzar con un código fuente de muestra. Google proporciona una gran colección de aplicaciones de muestra para ayudarlo a comenzar con algo, especialmente si muestra una característica que planea incorporar en su aplicación.
En mi caso, Stoyan ya había comenzado a trabajar en su aplicación en ese momento, por lo que tenía mucho código fuente para mirar como referencia. Por ejemplo, cuando estaba conectando botones a las devoluciones de llamada de onClick, miré las implementaciones existentes para copiar y aprender.
Dicho todo esto, en contra de todos los consejos prácticos, te recomiendo que entres sabiendo menos , no más .
La amenaza de sobre ingeniería
Cuando construí mi primera aplicación en solitario, NOTIFi, tuve éxito. Fue un buen golpe de suerte donde Android Marketplace todavía era una cosa, todavía era joven, y el sistema operativo Android carecía de la usabilidad significativa que presenta hoy.
Lea más sobre NOTIFi: ¿Cuánto tiempo tardó en crear su primera aplicación de Android?
Y gracias a mis débiles habilidades de programación y Java, corté algunas esquinas alarmantes para que la aplicación se ejecute. Para almacenar información como el orden, la ubicación y el contenido de cada acceso directo que guardó el usuario, los puse en una API de Android llamada SharedPreferences.
SharedPreferences es una estructura de datos destinada a almacenar configuraciones de usuario y otras variables no relacionadas. Por ejemplo, si abre la configuración de Twitter y desactiva las notificaciones, eso podría cambiar el valor booleano notifications_enabled en SharedPreferences a falso.
Y, según mi experiencia, esa era la única forma en que sabía cómo almacenar datos persistentes (no tenía idea de cómo funcionaban las bases de datos o cómo crear una instancia en Android). Entonces, cuando construí NOTIFi, almacené todos los datos de la aplicación en SharedPreferences. Para darle una idea del alcance, fue como tratar de imprimir una guía telefónica completa en una galleta de la fortuna.
Funcionó. A los usuarios les encantó la aplicación a pesar de cuán inadecuadamente se almacenaron sus datos; no les importó porque no lo sabían. El uso de SharedPreferences hizo que fuera casi imposible actualizar el esquema de datos o verificar su integridad.
Una vez que aprendí sobre las bases de datos, me di cuenta de que NOTIFi era una bomba de tiempo (no realmente, pero se sentía así). Que hice No cambié de SharedPreferences a una base de datos SQLite. Rediseñé completamente la aplicación desde cero usando una gran cantidad de nuevas técnicas que aprendí desde el lanzamiento de la primera versión.
Incluso rediseñé la interfaz porque no me gustó cómo pirateé la primera juntos. El resultado fue una aplicación que tenía todas las características de Java que mencioné anteriormente. Después de eso, gané un millón de dólares y me retiré a una isla privada hecha de implantes mamarios reciclados.
No, no lo hice. Los usuarios odiaban la nueva versión. Diseñé en exceso NOTIFi y les construí una bicicleta mala:
No construyas una bicicleta mala.
Cuanto más sepa sobre programación, más probabilidades tendrá de construir una bicicleta mala. ¿Por qué? Porque quieres estar orgulloso de tu trabajo. Y cuando construye su aplicación por primera vez y tiene 0 usuarios, se enorgullecerá de la calidad de la ingeniería que respalda la aplicación.
El problema de pensar de esa manera es que, al igual que con NOTIFi, a los usuarios no les importará. Pero, si no conoce todos los trucos del libro, probablemente lanzará la aplicación antes y ofrecerá un producto que los usuarios adoren porque se centró más en la interfaz y las características que en la arquitectura subyacente.
Siempre puedes regresar y mejorar las agallas, pero reparar la reputación de tu aplicación es mucho, mucho más difícil.
Cosas que encuentro valiosas
Si absolutamente debe conocer algunos conceptos básicos de Java antes de continuar su viaje de Android, aquí hay algunos que considero valiosos.
- Herencia : si no aprende nada más, aprenda cómo los objetos Java se heredan unos de otros.
- Bases de datos SQL (pero ORM, específicamente): esto no es específico de Java, pero le recomiendo que aprenda cómo funciona SQL y luego, aprenda a usar una biblioteca ORM como SugarORM, greenDAO u Orma.
- Patrón MVC – O Modelo-Vista-Controlador. Úselo cuando cree interfaces de usuario y manipule datos.
- Patrón de delegación : esto requiere conocer las interfaces de Java, y surge mucho en Android. Leer más sobre delegación.
- Patrón Singleton : Android tiene muchos singletons nativos (máximo una instancia de una clase determinada) y pueden ayudar a mantener el estado en toda la aplicación. Lea más sobre singletons.
- y subprocesos múltiples : con mucho, una de las cosas más importantes que debe saber es cómo usar AsyncTask. Además, conozca la diferencia entre el hilo principal (o UI) y los hilos de fondo.
¿Dejé algo afuera? ¡Grítame ! Pero si encuentra esta respuesta satisfactoria, por favor , vote para que otras personas (no tan geniales como usted, por supuesto) también la vean.
Y sígueme para obtener más respuestas de Android y dulces, dulces palabras susurradas en tu oído.