PDA

Ver la Versión Completa : [GUIA] Dudas Sobre Desarrollo Android


Frankiicas
27/04/12, 02:08:25
Hola amigos.
Me presento de nuevo ante ustedes Trayéndoles este hilo donde podrán publicar todas sus dudas acerca de las cosas mas complicadas de android, en especifico para nuestro modelo.

Me esforzare en responderde forma rápida y clara a todas esas dudas que no podemos resolver debido a la complejidad que guardan

La razon de este hilo, nace en la falta de informacion que asecha a esta (y muchas otras) comunidad, pues todos savemos que tenemos un Optimus Black, pero relamente sabemos que hay en su interior, y en el interior de ese interior?

Esto no es un glosario ni un diccionario, es solo mi forma de aportar mis conocimientos a los demas usuaios de HTCMANIA.

Les ruego por favor que publiquen únicamente comentarios, preguntas y dudas relativas a la programacion y el desarrollo android.

CUALQUIERusuario es bienvenido si quiere agregar algun aporte al hilo, la idea es que entre todos nos eduquemos lo mas posoible sobre estos aparatitos android.


El Hilo estara divido en 2 partes:Preguntas y Respuestas; Asi que a publicar sus mas reonditas dudas amigos![


La primer duda la aportare yo, pues es una que esta presente en muchos usuarios, y sobre el kernel de android, empezemos :)



:pensando::loco:PREGUNTAS:loco::pensando:




#1 - Que es el Kernel en Android ?
#2 - Porque Android esta escrito en JAVA?
#3 - Que es el SDK de android?/SIZE]
#4 -




:aplausos:X-D[SIZE="7"]RESPUESTASX-D:aplausos:

#1
- El Kernel (Núcleo) es la parte fundamental del sistema operativo y es el que se encarga de dar acceso del hardware a los programas. Digamos que es el encargado de recoger y gestionar las ordenes que le llegan de las aplicaciones y mandárselas al hardware para después recoger las respuestas y devolverlas a las aplicaciones, por ejemplo, el desbloquear la pantalla al pulsar un botón. Es el corazón de cualquier sistema operativo.

Android tiene como núcleo Linux, el Kernel 2.6.0 es el usado por nuestros Optimus Black y todos los equipos que corren Gingerbread. En este núcleo existe lo que han llamado como Dalvik, una máquina virtual de Java (JVM), que ha sido creada por Google para dispositivos con poca memoria y poca capacidad de proceso. En Android, cada aplicación corre en su propio proceso y tiene su propia instancia en la máquina virtual Dalvik. Una máquina virtual es como si tuviésemos un ordenador independiente en donde se ejecutan las aplicaciones, estas aplicaciones están desarrolladas en Java con las funcionalidades que les ofrece el SDK de Android. Las aplicaciones se ejecutan en la máquina virtual y esta a su vez se ejecuta sobre el kernel.

Dalvik ejecuta archivos .dex en lugar de los clásicos .class de la máquina virtual de Java de escritorio. Éstos están más optimizados para los dispositivos móviles y son más compactos. En esta máquina virtual no disponemos de toda la API de JavaSE o JavaME, sino que podemos utilizar un subconjunto llamado Core Libraries, que han desarrollado los ingenieros de Google únicamene para Android.

El principal problema de una ROM y la causa de que no nos funciona tan bien, suele ser normalmente problemas del Kernel que no sabe configurar el sistema instalado a las propias funciones de este. Podemos cambiar el Kernel de nuestro Android con diferentes métodos que existen a través de la red a fin de que se adapte a esa ROM que tanto queremos, o bien, para mejorar el rendimiento o duración de la batería en nuestro equipo.

El kernel es una dimension abrtacta, se situa por debajo del sistema operativo (android) y es independiente de este.




#2
Bien, esto es complicado pues cada lenguaje es utilizado por sus diferentes características en distintos ámbitos, Abra a quien le suene ilógico que un sistema del tamaño de android este escrito en un lenguaje tan, tan controversial.
Pues bien, es cierto que android esta escrito en java, mas no es su totalida, El sistema está compuesto por 12 millones de líneas de código, incluyendo 3 millones de líneas de XML, 2,8 millones de líneas de lenguaje C, 2,1 millones de líneas de Java y 1,75 millones de líneas de C++.
Android utiliza en su mayoría el código de java debido a los bajos requerimientos que necesita para funcionar, por lo moldeable y adaptable que es y porque al ser un lenguaje compacto, es perfecto para procesadores AMR, si los smartphones android funcionaren sobre la arquitectura x86, esperaríamos cuando menos C+.

Después de discutirlo con compañeros y maestros, llegue a la conclusión personal de que android esta escrito en JAVA pues su principal competidor(ios) es muy muy seguro, y la seguridad es algo casi comprobado(mas no asegurado) pues en android cada aplicaron se ejecuta en una maquina virtual diferente, lo que impide al codigo malicioso atravesar la barrera de dicha aplicación.
En conclusión podríamos decir que la manera en que android se maneja internamente es muy poco practica, y esto se deve a que muy pocas o casi ninguna tiene acceso integro al kernel, es decir, sin pasar por Dalvik, que es la maquina virtual que se ejecuta en el sistema.
Esta funcion de Intermediario que tiene dalvik es la causa de la lentitud del sistema, pues al ser diseñada por google, ellos la crearon para funcionar con poquísima memoria, por lo que al correr aplicaciones con procesos grandes, literalmente dalvik se vuelve un cuello de botella de informacion.
Cuando crearon dalvik no imaginaban que íbamos a utilizar procesadores a 1GHZ tan rápido, mucho menos de 4 núcleos, la solución que yo veo a esto seria actualizar la maq virtual.





#3
El SDK o Kit de desarrollo de software es una herramienta liberada por google, específicamente para la creación de programas para android, contiene un emulador de android, lo cual nos permite correr las aplicaciones antes de pasarlas al teléfono y así irlas depurando, Su uso es muy muy sencillo, y lo único que yo les recomendaría es un uso decente del lenjuaje java.
Esto es la base de todas las aplicaciones que conocemos, así que anímense, descarguenlo y empiecen a crear sus apps!

Frankiicas
27/04/12, 02:08:42
Reservado

chokod9
27/04/12, 08:24:29
Genial, estuviera bueno que poostearas como podemos hacer "fixes" a rom's que les falla el wifi la cámara etc.

idr24
28/04/12, 22:50:55
que saben sobre el uso del SDK de android ?
(la programacion orientada a objetos)

ismael87
29/04/12, 04:55:28
Pues hablando de kernels, sabes como modificarlo? Yo no entiendo ni pajolera idea de programación ( Lo mío son las redes y el hardware ) pero en xda están portando ICS a nuestro black con muy buenos resultados, pero todavía tienen problemas con el WiFi, y otras muchas cosas debido al kernel. Sí sabes del tema podrías pasarte por allí y compartir con ellos tus conocimientos. Tú ayuda sería muuuyyyy apreciada por allí.

Una duda que siempre he tenido yo. Cuando se decidió crear Android... de todos los lenguajes de programación existentes... por que se escogió java? Ppt que escoger un lenguaje tan poco eficiente para crear algo tan importante como un S.O

Enviado desde mi LG-P970 usando Tapatalk

bbbenito
29/04/12, 08:12:26
muy buena idea compañero para gente como yo biene genial este hilo porque quiero aprender sobre esto lo maximo posible. una pregunta sobre programacion de apps es muy complicado o podria cualquiera hacer una aplicacion simple tipo calculadora etc y que necesitaria para crearla? gracias de antemano y esperemos no haya indeseables que estropeen este hilo...

Frankiicas
29/04/12, 18:39:10
Genial, estuviera bueno que poostearas como podemos hacer "fixes" a rom's que les falla el wifi la cámara etc.

Se un poco mas especifico en tu pregunta :)

que saben sobre el uso del SDK de android ?
(la programacion orientada a objetos)

Exelente pregunta... Trabajando en la respuesta, Gracias por la pregunta.

Pues hablando de kernels, sabes como modificarlo? Yo no entiendo ni pajolera idea de programación ( Lo mío son las redes y el hardware ) pero en xda están portando ICS a nuestro black con muy buenos resultados, pero todavía tienen problemas con el WiFi, y otras muchas cosas debido al kernel. Sí sabes del tema podrías pasarte por allí y compartir con ellos tus conocimientos. Tú ayuda sería muuuyyyy apreciada por allí.

Una duda que siempre he tenido yo. Cuando se decidió crear Android... de todos los lenguajes de programación existentes... por que se escogió java? Ppt que escoger un lenguaje tan poco eficiente para crear algo tan importante como un S.O

Enviado desde mi LG-P970 usando Tapatalk

Bien ismael, ellos ya estan al tanto de ello, y de las limitaciones y problemas que enfrentan, yo les ayudaria, pero sinceramente lo veo como causa perdida.

Referente a la pregunta... exelente idea, esa pregunta pocas personas se las hacen pero es vital... Trabajando la respuesta.

muy buena idea compañero para gente como yo biene genial este hilo porque quiero aprender sobre esto lo maximo posible. una pregunta sobre programacion de apps es muy complicado o podria cualquiera hacer una aplicacion simple tipo calculadora etc y que necesitaria para crearla? gracias de antemano y esperemos no haya indeseables que estropeen este hilo...

BIEN, esa pregunta se puede englobar con la del SDK, el cual es el programa para crear aplicaciones para android.



Gracias por participar

Juanviz21
29/04/12, 23:09:29
BIEN, esa pregunta se puede englobar con la del SDK, el cual es el programa para crear aplicaciones para android.



Gracias por participar

Bueno....mas que programa, el SDK son las herramientas que nos permiten trabajar con android no? Es decir, una especie de añadido (por ejemplo para el programa eclipse, que es el que manejo yo)

La verdad la programacion en Android no es de gran complejidad, ya que (hablando de apps) se basa en xmls (para crear, por asi decirlo, los objetos de forma "teorica", con sus dimensiones, sus IDs y demas) y en java (para implementar estos objetos y darles su funcion). Aun asi, son cosas nuevas que se aprenden, ya que Android usa sus propios metodos de java y demas, pero es un tema muy interesante

Enviado desde mi LG-P970 usando Tapatalk

ismael87
30/04/12, 04:50:23
Bien ismael, ellos ya estan al tanto de ello, y de las limitaciones y problemas que enfrentan, yo les ayudaria, pero sinceramente lo veo como causa perdida.



Causa perdida? No crees que sean capaces de solucionarlo? Pfff me acabó de llevar el disgusto de la semana XD
Respecto a Android y java... yo es que nunca Lo he entendido. Me parece estúpido coger un lenguaje tan... tosco para hacer un sistema operativo aunque sea para un smartphone, y el tema de la máquina virtual dalvik ( que seguro que tendrá Su porque) me parece un total desperdicio de recursos del sistema, pero repito... la programación y yo no somos muy amigos, y que conste en acta... adoro android



Enviado desde mi LG-P970 usando Tapatalk

Juanviz21
30/04/12, 11:39:12
Causa perdida? No crees que sean capaces de solucionarlo? Pfff me acabó de llevar el disgusto de la semana XD
Respecto a Android y java... yo es que nunca Lo he entendido. Me parece estúpido coger un lenguaje tan... tosco para hacer un sistema operativo aunque sea para un smartphone, y el tema de la máquina virtual dalvik ( que seguro que tendrá Su porque) me parece un total desperdicio de recursos del sistema, pero repito... la programación y yo no somos muy amigos, y que conste en acta... adoro android



Enviado desde mi LG-P970 usando Tapatalk

Android no se basa en Java para hacer el sistema operativo, la interfaz en cambio si. Ademas...tosco? Java se utiliza muchisimo para interfaces y programacion orientada a objetos, aunque ultimamente de esta empezando a usar mas Python, que es mas sencillo, y Google lo sabe (de hecho da conferencias para enseñar el lenguaje Python, buscad por youtube). Aun asi te digo, android se basa en java un 20% de lo que es en si Android, la interfaz, mientras que el resto, es decir el S.O. en si, es Linux y todo lo que ello conlleva.

Podrian haberlo hecho mas complejo pero entonces serian como Apple, donde las ROMs cocinadas no existen, dejando de ser Open Source...

Enviado desde mi LG-P970 usando Tapatalk

Juanviz21
30/04/12, 11:41:54
He pasado por alto decir que las apps estan tambien hechas con java, aparte de la interfaz, ya que lo he nombrado en mi comentario anterior

Enviado desde mi LG-P970 usando Tapatalk

ismael87
30/04/12, 22:05:48
a ver yo porgramacion estudie algo, aunque me declaro totalmente profano. no obstante he oido y leido en multitud de ocasiones que java es un lenguaje muy muy poco eficiente a la hora de hacer programas para el ( repito soy profano, pero es lo que simpre se ha dicho )
de hecho ahora me viene una frase que ley una vez por hay y que se ha hecho muy popular entre muchos programadores XD: "el que programa en java, tiene lo que se merece"

Juanviz21
01/05/12, 00:32:13
a ver yo porgramacion estudie algo, aunque me declaro totalmente profano. no obstante he oido y leido en multitud de ocasiones que java es un lenguaje muy muy poco eficiente a la hora de hacer programas para el ( repito soy profano, pero es lo que simpre se ha dicho )
de hecho ahora me viene una frase que ley una vez por hay y que se ha hecho muy popular entre muchos programadores XD: "el que programa en java, tiene lo que se merece"

Es que comparar lenguajes de programacion no es muy util...ya que cada uno se suele usar en un ambito u otro, por ejemplo ahi tienes C++ el cual es sobre todo usado para crear O.S. (creo recordar que Mac OS esta basado en C++) mientras que java, como ya dije, para interfaz, apps (dentro del mundo de android) ya que es sencillo operar con este lenguaje, pues usa una sintaxis muy "humana" por asi decirlo. Por eso, creo yo, que los de Google han decidido no romperse mucho el coco y determinar java como algo importante dentro de Android (y bien que les ha salido la jugada)

El lenguaje Python es mas versatil eso si, pues por ejemplo para declarar una variable en Java seria algo como "double x = 1.5" mientras que en Python seria "x = 1.5", este tipo de cosas y otras mas hacen que sea mas rapido y sencillo de usar.

Enviado desde mi LG-P970 usando Tapatalk

ismael87
01/05/12, 15:02:15
humm ok para la UI se utiliza java, y para el kernel y las librerias se utiliza C++ puedo entenderlo.
pero desde tu opinion sincera, no hubiera sido mejor idea elegir otro lenguaje para escribir las apps?

Juanviz21
01/05/12, 16:18:53
humm ok para la UI se utiliza java, y para el kernel y las librerias se utiliza C++ puedo entenderlo.
pero desde tu opinion sincera, no hubiera sido mejor idea elegir otro lenguaje para escribir las apps?

Claramente, lenguajes mas eficientes hay pero, viendolo desde otro punto de vista, java nos permite hacer apps de forma sencilla, que es lo que le interesa a Google, asi no cierra puertas a los usuarios, permitiendoles crear por su cuenta las aplicaciones (por ejemplo, un compañero mio, como no encontraba ninguna aplicacion que describiera los horarios de autobuses de su zona, se esta creando por su cuenta una app para ello)

Enviado desde mi LG-P970 usando Tapatalk

Frankiicas
02/05/12, 16:45:50
Claramente, lenguajes mas eficientes hay pero, viendolo desde otro punto de vista, java nos permite hacer apps de forma sencilla, que es lo que le interesa a Google, asi no cierra puertas a los usuarios, permitiendoles crear por su cuenta las aplicaciones (por ejemplo, un compañero mio, como no encontraba ninguna aplicacion que describiera los horarios de autobuses de su zona, se esta creando por su cuenta una app para ello)

Enviado desde mi LG-P970 usando Tapatalk

Cuando google compro android no modifico si estructura pues java era un lenguaje acorde para los equipos de dicha epoca... si hubiesen sabido que dentro de unos anos manejariamos frecuencias de +1Ghz y multinucleo... otra cosa seria.
Google ya no puede reescribir android porque mas que fragmentar su sistrma lo estaria enterrando.

La solucion, creo yo, seria actualizar la maquina virtual dalvik.

Juanviz21
02/05/12, 17:15:35
Cuando google compro android no modifico si estructura pues java era un lenguaje acorde para los equipos de dicha epoca... si hubiesen sabido que dentro de unos anos manejariamos frecuencias de +1Ghz y multinucleo... otra cosa seria.
Google ya no puede reescribir android porque mas que fragmentar su sistrma lo estaria enterrando.

La solucion, creo yo, seria actualizar la maquina virtual dalvik.

Exacto...la evolucion de los dispositivos moviles ha ido mas lejos de lo que muchos esperaban...
La verdad no se que planes tiene Google actualmente, que hasta ahora me mantiene feliz con android jajaja

Enviado desde mi LG-P970 usando Tapatalk

Inferbubu
03/05/12, 02:47:18
Es verdad, es como Nokia si hubiera desarrollado el lenjuage QT desde hace mucho tiempo, seria una real conñmpetencia de Android... pero bueno ya saben lo historia jejeje

Dilculpen el OffTopic es que antes era symbian pero Andriod me tiene mas contento!!

Enviado desde mi LG-P970 usando Tapatalk 2