Fundamentos de Android y conceptos de programacion

Bienvenidos a otra nueva leccion del curso gratuito en www.AprendeAndroid.com últimamente estoy viendo que hay muchas webs/blogs que se están apropiando de mi trabajo gratuitamente, en fin... la gente no respeta nada ni nadie... espero que les salga un grano en el culito de esos que no te dejan sentarte! ;P.

Hemos comenzado la casa un poco por el tejado... :S pero apartir de ahora tenemos que leer un poco de teoría, ¡es lo que hay! ;P. En este tema aprenderemos un poco de historia de la programación, los componentes actuales y la manera en que los ordenadores y la tecnologia nos han ayudado a "mejorar" esto de la programacion. Aquí, voy a generalizar un poco, no voy a hablar de un lenguaje de programación en concreto, los conceptos que ves aquí, son aplicables a todos los lenguajes de programación.

Al principio de los tiempos las computadoras solo interpretaban instrucciones en lenguaje máquina, cadenas de 1 y 0. (Sistema binario) eran esos ordenadores gigantes que ocupaban salas completas.. como puedes imaginar la programación a este nivel resultaba extremadamente complicada. Los primeros científicos que trabajaban en la materia decidieron crear un lenguaje más parecido al humano que acabaría traducido en lenguaje máquina mediante los compiladores, cuanto el lenguaje es mas cercano a nuestra comprensión, se dice que es un lenguaje de "alto nivel" y cuanto menos se dice que es de "bajo nivel".

Este "primer lenguaje" tenía ya palabras en inglés y se llamó ensamblador, por ejemplo, para sumar se utiliza la letra A de <add>. Este lenguaje ensamblador era todavía muy cercano al lenguaje máquina o de bajo nivel, pero aun así mucho más fácil de recordar que secuencias de 0 y 1 ¿no te parece? el caso es que aun hoy se sigue utilizando, yo mismo lo use para programar micro-controladores PIC en el instituto! :)

El caso es que conforme aumentaba la complejidad de las tareas que realizaban las computadoras se vio la necesidad de crear lenguajes mas completos, entonces se crearon los llamados: "lenguajes de programación de alto nivel", es decir lenguajes mas cercanos a nuestro entendimiento. (Android, C++, Java, PHP, Python...) como curiosidad te digo que una simple suma en un lenguaje de alto nivel se corresponde a una línea de nuestro código, sin embargo, al traducirlo a ensamblador se convierte en varias líneas de código, por no decirte la cantidad de 0 y 1 que lleva. xP

Eclipse, Java, Android

Ahora que ya te he metido este rollo, y mas o menos hemos visto en que consiste la programación y tenemos una pequeña visión histórica de la evolución, vamos a centrarnos en el lenguaje que vamos a aprender, ¡Android! :D.

Conceptos Básicos Android.

Ya hemos visto en el tema anterior que un proyecto Android se compone de varias carpetas, pero lo que instalamos en nuestros móviles es un único fichero con extensión .apk. Los ficheros de paquetes de aplicaciones o apk, son generados por la herramienta apkbuilder una vez terminada la compilación (Eclipse se encarga de hacerlo todo) contienen todo lo necesario para que la aplicación funcione.

Personalmente una de las cosas que mas me gustan de Android, es que a nivel de ejecución nuestras aplicaciones tienen su propio entorno seguro de ejecución:

 Por defecto, cada aplicación se ejecutará en su propio proceso Linux. El sistema lo creará cuando llamemos a la aplicación y lo destruirá cuando la aplicación no haya sido usada durante un rato y se necesiten recursos para otra aplicación.
 Cada proceso correrá su propia máquina virtual. Así pues cada aplicación correrá aislada del resto. Esto permite que, ante un hipotético fallo de la aplicación solo se vea afectada su máquina virtual, no el resto, con lo que el sistema seguiría corriendo sin problema.
 Por defecto, a cada aplicación se le asigna un identificador de usuario (uid) distinto. Los permisos de los archivos referentes a la aplicación (datos, caché, etc.) son puestos de tal forma que solo este usuario pueda acceder a ellos quedando vetados al resto de aplicaciones.

Otra característica que diferencia a Android es la reutilización de componentes de una aplicación por otra, ya veremos algún ejemplo mas especifico de esto mas adelante, pero básicamente, es que android nos "facilita" mini aplicaciones que podemos usar en las nuestras, es decir, si necesitamos que nuestra aplicación tome una foto, no tendremos que programar en nuestra aplicación un interface para comunicar con la cámara, basta con llamar desde nuestra aplicación a una de estas "mini-aplicaciones" en este caso la de la cámara, y esta nos devolverá la foto a nuestra aplicacion, ahorrándonos decenas de líneas de código!! ¿no es maravilloso? se que es posible que ahora no comprendas esto... si te sirve de consuelo, yo tampoco lo entendí hasta bastante avanzado el curso que hice, pero tranqui, que mas a delante lo veremos y lo pillas seguro ;P

Si te a gustado este sitio, puedes hacer click en me gusta en Facebook, Google+, Tweeter... es el único precio que te pido por este trabajo! ;P. Compartiendo, ayudaras a otros a encontrar esta web! GRACIASSSS.