Advertisement
  1. Code
  2. Mobile Development

Aprende Java para Desarrollo Android: Introducción a Java

Scroll to top
Read Time: 15 min
This post is part of a series called Learn Java for Android Development.
New Course: Learn Java for Android
Learn Java for Android Development: Java Syntax

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

En esta serie instructiva, te familiarizarás con Java, el lenguaje de programación utilizado para desarrollar aplicaciones Android. Nuestra meta es preparar a todos aquellos ya familiarizados con algún lenguaje de programación, tales como PHP o Objective-C, a sentirse más cómodos con el lenguaje de programación Java y a adentrarse en el desarrollo de aplicaciones Android. En este tutorial, recibirás una breve introducción a los fundamentos de Java, incluyendo programación orientada a objetos, herencia y más. ¡Si Java es nuevo para ti, o solo buscas refrescar los detalles, entonces este tutorial es para tí!

Comenzando

Como prerequisito, asumiremos que entiendes como programar (quizás en PHP, Visual Basic o C++), pero que no estas familiarizado con lo específico de programar en el lenguaje Java. No te enseñaremos a programar; te proveeremos ejemplos claros de construcciones y principios comúnmente utilizados en el lenguaje Java, mientras señalamos algunos trucos y consejos específicos para Android.

Lo Que Necesitarás

Técnicamente, no necesitas ninguna herramienta para completar este tutorial pero definitivamente las necesitas para desarrollar aplicaciones Android.

Para desarrollar aplicaciones Android (o cualquier aplicación Java), necesitas un ambiente de desarrollo para escribir y construir aplicaciones. Eclipse es un ambiente de desarrollo (IDE) muy popular para Java y es el IDE preferido para desarrollo en Android. Está disponible de manera gratuita para sistemas operativos Windows, Mac y Linux.

Para instrucciones completas de como instalar Eclipse (incluyendo las versiones soportadas) y el Android SDK, vea la página web de desarrolladores de Android.

¿Qué es Java?

Aplicaciones Android aun utilizan el lenguaje Java. Al momente, esta es realmente tu única opción para aplicaciones nativas. Java es un lenguaje de programación muy popular desarrollado por Sun Microsystems (ahora propiedad de Oracle). Desarrollado mucho después de C y C++, Java incorpora muchos de los aspectos poderosos de esos lenguajes mientras corrige algunos de sus defectos. Aun, los lenguajes de programación son tan poderosos como sus librerias. Estas librerías existen para ayudar a los desarrolladores a construir aplicaciones.

Algunos de los aspectos mas importantes de Java son:

  • Es fácil de aprender y entender.
  • Está diseñado para ser independiente a plataformas y seguro, usando
    máquinas virtuales
  • Es orientado a objetos

Android depende grandemente de los fundamentos de Java El SDK de Android incluye muchas librerías estándar de Java (librerías de estructuras de datos, librerías matemáticas, librerías de redes y todo lo que puedas querer) también como algunas librerías especiales de Android que te ayudarán a desarrollar excelentes aplicaciones de Android.

¿Porqué Java es Fácil de Aprender?

Java es fácil de aprender por una variedad de razones. Es seguro que no hay escacez de recursos de Java allá afuera para ayudarte a aprender el lenguaje, incluyendo páginas de internet, tutoriales, libros y clases. Java es uno de los mas ampliamente discutidos, enseñados y utilizados lenguajes de programación en el planeta. Es utilizidado para muchos tipos distintos de proyectos de programación, sin importar su escala, desde aplicaciones de internet a aplicaciones de PC y móbil.

Si estás saliendo de una base de programación tradicional como C o C++, encontrarás el sintaxis de Java muy similar. Si nó, entonces siente la comodidad de saber que has escogido uno de los lenguajes más fáciles de aprender. Estarás listo y corriendo en muy poco tiempo.

Finalmente, Java es uno de los lenguajes más legibles para humanos allá afuera, lo que quiere decir que una persona que no conozca nada de programación puede a menudo mirar algún código Java y tener al menos una idea de lo que está sucediendo. Considera el siguiente ejemplo:

Si simplemente lees el código en voz alta, puedes casi saber lo que ese pedazo de código está haciendo. Hay una variable de una sola letra llamada "character". Si la variable "character" es igual a la letra a, entonces hacemos algo (llamar al método doSomething()), de otro modo hacemos otra cosa (llamando al método doSomethingElse()).

¿Porqué es importante la independecia de plataformas?

Como muchos lenguajes de programación, necesitas utilizar un compilador para reducir el código a lenguaje de máquina que el artefacto pueda comprender. Mientras esto está muy bien, distintos artefactos utilizan distintos lenguajes de máquina. Esto significa que es posible que necesite compilar sus aplicaciones para cada dispositivo o lenguaje de máquina diferente—en otras palabras, su código no es muy portátil. Este no es el caso de Java. Los compiladores de Java convierten su código de archivos de código fuente Java legible a algo llamado "bytecode" en el mundo Java. Estos son interpretados por una máquina virtual de Java, que funciona como una CPU física podría operar en código de máquina, para ejecutar realmente el código compilado. Aunque puede parecer que esto es ineficiente, se ha hecho mucho esfuerzo en hacer este proceso muy rápido y eficiente. Estos esfuerzos han valido la pena en que el rendimiento de Java en general en segundo lugar sólo a C / C + + en comparaciones de rendimiento de lenguaje común.

Las aplicaciones de Android se ejecutan en una máquina virtual especial llamada VM de Dalvik. Aunque los detalles de esta VM no son importantes para el desarrollador medio, puede ser útil pensar en la VM de Dalvik como una burbuja en la que se ejecuta la aplicación de Android, lo que le permite no tener que preocuparse por si el dispositivo es un Motorola Droid, un HTC Evo, o la última tostadora que ejecuta Android. No te importa si el dispositivo es compatible con VM de Dalvik, y ese es el trabajo del fabricante del dispositivo que debes implementar, no el tuyo.

¿Por qué Java es Seguro?

Tomemos esta idea de burbuja un poco más. Dado que las aplicaciones Java se ejecutan dentro de la burbuja que es una máquina virtual, están aisladas del hardware del dispositivo subyacente. Por lo tanto, una máquina virtual puede encapsular, contener y administrar la ejecución de código de una manera segura en comparación con los idiomas que operan en código de máquina directamente. La plataforma Android lleva las cosas un paso más allá. Cada aplicación de Android se ejecuta en el sistema operativo (basado en Linux) utilizando una cuenta de usuario diferente y en su propia instancia de la VM de Dalvik. Las aplicaciones de Android son monitoreadas de cerca por el sistema operativo y cerradas si no juegan bien (por ejemplo, usan demasiado poder de procesamiento, no responden, pierden recursos, etc.). Por lo tanto, es importante desarrollar aplicaciones que sean estables y responsivas. Las aplicaciones pueden comunicarse entre sí mediante protocolos bien definidos.

Compilando su código

Al igual que muchos lenguajes, Java sigue siendo un lenguaje compilado aunque no compila todo a el código de la máquina. Esto significa que usted, el desarrollador, necesita compilar sus proyectos de Android y empaquetarlos para desplegarlos en dispositivos. El entorno de desarrollo de Eclipse (utilizado con el complemento de desarrollo de Android) hace que esto resulte bastante indoloro. En Eclipse, la compilación automática suele estar activada de forma predeterminada. Esto significa que cada vez que guarda un archivo de proyecto, Eclipse recompila los cambios para el paquete de su aplicacion. Inmediatamente verá errores de compilación. Eclipse también interpreta Java mientras escribe, proporcionando colores y formatos de código a mano, así como mostrando muchos tipos de errores a medida que avanza. A menudo, puede hacer clic en el error y hacer que Eclipse corrija automáticamente un error de tipografía, o agregue una instrucción de importación, o proporcione un stub de método para usted, ahorrando mucho tipeo.

Aún puede compilar manualmente su código si lo desea. Dentro de Eclipse, encontrará la configuración de generación en el menú del proyecto. Si tiene "Generar automáticamente" activado, todavía puede elegir la opción "Limpiar ..." que le permitirá hacer la reconstrucción completa de todos los archivos. Si se desactiva "Generar automáticamente", se habilitan las opciones de menú "Crear todo" y "Crear proyecto". "Crear todo" significa construir todos los proyectos en el espacio de trabajo. Puede tener muchos proyectos en un espacio de trabajo de Eclipse.

El proceso de compilación, para proyectos regulares de Java, da como resultado un archivo con la extensión de JAR - Java ARchive. Las aplicaciones de Android toman archivos JAR y los empaquetan para su implementación en dispositivos como archivos de Android PacKage con una extensión .apk. Estos formatos no sólo incluyen el código Java compilado, sino también otros recursos, como cadenas, imágenes o archivos de sonido, que su aplicación requiere para ejecutarse, así como el archivo del manifiesto de aplicación, AndroidManifest.xml. El archivo de manifiesto de Android es un archivo requerido por todas las aplicaciones de Android, que se utiliza para definir detalles de configuración de la aplicación.

¿Qué es un lenguaje de programación orientado a objetos?

Bueno. Tiempo para una visión muy breve y 20.000 pies de la programación orientada a objetos (OOP). OOP es un estilo o técnica de programación que se basa en la definición de estructuras de datos llamadas objetos. Para los nuevos en OOP, un objeto se puede pensar en mucho como un tipo de datos personalizado. Por ejemplo, puede tener un objeto Dog, que representa el modelo para un perro genérico, con un nombre, una raza y un género. A continuación, puede crear diferentes instancias del objeto Perro para representar a perros específicos. Cada objeto Dog debe ser creado llamando a su constructor (un método que tiene el mismo nombre que el propio objeto, y puede o no tener parámetros para establecer valores iniciales). Por ejemplo, los siguientes objetos Dog usan un constructor con tres parámetros (nombre, raza, género):

Entonces, ¿dónde está definido este objeto Dog? Bueno, aquí tenemos que empezar a definir algunos de los componentes fundamentales del lenguaje de programación Java. Una clase proporciona una definición para un objeto. Por lo tanto, hay una clase de perros en algún lugar, bien definida por usted o en alguna biblioteca en alguna parte. En general, una clase se definirá en su propio archivo, con el nombre de archivo correspondiente al nombre de la clase (por ejemplo, Dog.java). Hay excepciones a esta regla, como las clases definidas dentro de otras clases (cuando una clase se declara dentro de una clase, generalmente se define para su uso en la clase principal sólo como una clase auxiliar y se denomina una clase interna).

Cuando desea referenciar un objeto desde dentro de otra clase, debe incluir una declaración import en la parte superior de su archivo de clase, de la misma manera que usaría una instrucción #include en un lenguaje compilado como C.

Una clase típicamente describe los datos y el comportamiento de un objeto. El comportamiento se define mediante métodos de clase. Método es el término común para una subrutina en un lenguaje OOP. Muchas clases de objetos comunes se definen en bibliotecas de clases compartidas como kits de desarrollo de software (SDK), mientras que otras son definidas por usted, el desarrollador, para sus propios fines. El software se construye entonces utilizando y manipulando instancias de objetos de diferentes maneras.

Tenga en cuenta que esta es una definición muy generalizada de OOP. Hay libros enteros escritos sobre este tema. Si desea saber más acerca de OOP, aquí hay algunos recursos que quizás desee consultar:

Nota: Utilizamos una gran cantidad de terminología diferente en este tutorial. Hay varias maneras de referirse a un concepto dado (por ejemplo, superclase vs. clase padre), lo cual es confuso para aquellos nuevos en la programación orientada a objetos. Los diferentes desarrolladores usan términos diferentes, por lo que hemos tratado de mencionar los sinónimos cuando sea apropiado. Decidir qué términos utilizará es una elección personal.

Comprender la herencia

Aquí hay otro concepto importante de Java que se ejecutará mucho: la herencia. En pocas palabras, la herencia significa que las clases Java (y, por lo tanto, los objetos) se pueden organizar en jerarquías con clases más bajas y más específicas en la jerarquía que heredan comportamientos y rasgos de clases más altas, más genéricas.

Este concepto se ilustra mejor con el ejemplo. Supongamos que estamos desarrollando una aplicación Java para simular un acuario. Este acuario tiene algunos peces en él. Por lo tanto, podríamos definir una clase para representar un pez. Esta clase, llamada Fish, podría incluir algunos campos de datos (también llamados atributos, o variables de miembros de clase) para describir un objeto de pez: especie, color y tamaño; Así como parte de su comportamiento en forma de métodos (también llamados subrutinas o funciones en lenguajes procedimentales), como comer(), dormir() y hacerBebePez().

Un tipo especial de método, llamado constructor, se utiliza para crear e inicializar un objeto; Los constructores tienen el mismo nombre que su clase y pueden incluir parámetros. La siguiente clase Fish tiene dos constructores: uno para crear un objeto Fish genérico y otro para construir un objeto Fish específico con algunos datos iniciales. También verás que la clase Fish tiene dos métodos de comer (uno) para comer algo aleatorio y otro para comer otro pez, el cual sería representado por otro ejemplo de la clase Fish:

Las clases se pueden organizar en jerarquías, donde una clase derivada (o subclase) incluye todas las características de su clase principal (o superclase), pero las refina y añade para definir un objeto más específico utilizando la palabra clave extends. Esto se llama herencia.

Por ejemplo, la clase Fish podría tener dos subclases: FreshwaterFish y SaltwaterFish. Estas subclases tendrían todas las características de la clase Fish, pero podrían personalizar aún más los objetos a través de nuevos atributos y comportamientos o comportamientos modificados de la clase padre Fish. Por ejemplo, la clase FreshwaterFish podría incluir información sobre el tipo de ambiente de agua dulce vivido (por ejemplo, río, lago, charca o charco). De forma similar, la clase SaltwaterFish podría personalizar el método HacerBebePez() para que el pez coma su pareja después de criar (como se define en la superclase) usando el mecanismo de sobreescritura, como esto:

Organización del comportamiento de objetos con interfaces

En Java, puede organizar comportamientos de objeto en lo que se llaman interfaces. Mientras que una clase define un objeto, una interfaz define un comportamiento que puede aplicarse a un objeto. Por ejemplo, podríamos definir una interfaz Swimmer que proporcione un conjunto de métodos que son comunes en todos los objetos que pueden nadar, ya sean peces, nutrias o androides sumergibles. La interfaz de Swimmer puede especificar cuatro métodos: startSwimming(), stopSwimming(), dive() y surface().

Una clase como Fish podría implementar la interfaz de Swimmer (utilizando la palabra clave implementos) y proporcionar implementaciones del comportamiento de natación:

Organización de clases e interfaces con paquetes

Las jerarquías de clases, como las clases de peces, pueden organizarse en paquetes. Un paquete es simplemente un conjunto de clases e interfaces, agrupadas. Los desarrolladores usan namespaces para nombrar únicamente paquetes. Por ejemplo, podríamos usar com.mamlambo.aquarium o com.ourclient.project.subproject como nombre de nuestro paquete para realizar un seguimiento de nuestras clases relacionadas con el pescado.

Terminando

¡Guauu! Acabas de emprender un curso intensivo en Java para el desarrollo de Android. Hemos cubierto una cantidad bastante intensa de material aquí, así que deja que las cosas se conformen un poco antes de pasar a la siguiente lección de esta serie de tutoriales. En la Lección 2, cambiamos nuestro enfoque a los detalles básicos de la sintaxis de Java.

Sólo has arañado la superficie del desarrollo de Java para el desarrollo de Android. Echa un vistazo a todos los otros grandes tutoriales sobre Mobiletuts+ para profundizar en el desarrollo de Java y Android. ¡Buena suerte!

Sobre los autores

Los desarrolladores de móviles Lauren Darcey y Shane Conder han coautorizado varios libros sobre desarrollo de Android: un libro de programación en profundidad titulado Android Wireless Application Development y Sams TeachYourself Desarrollo de aplicaciones para Android en 24 horas. Cuando no escriben, pasan su tiempo desarrollando software móvil en su empresa y brindando servicios de consultoría. Se puede contactar a través de correo electrónico a androidwirelessdev+mt@gmail.com, a través de su blog en androidbook.blogspot.com, y en Twitter @androidwireless.

¿Necesitas más ayuda para crear aplicaciones para Android? ¡Echa un vistazo a nuestros últimos libros y recursos!

Buy Android Wireless Application Development 2nd Edition Buy Sams Teach Yourself Android Application Development in 24 Hours Mamlambo code at Code Canyon


Tutoriales relacionados:

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.