Contenido
Android SDK vs. iPhone SDK
2009 - 11 -25
Hoy Kassanmoor me preguntó que cual de las plataformas en las que he programado me resulta más agradable. La respuesta no es para nada sencilla, su pregunta abarcaba Nintendo DS, Nintendo Wii, Apple iPhone y Android, ya que hay diferencias referentes a la finalidad del dispositivo, pero trataré de resumir un poco mi experiencia con los terminales telefónicos iPhone y Android.
Apple iPhone
Pros :
- Desarrollar para el iPhone (y también iPod Touch) tiene un coste extremadamente barato, pago anual de 100€ (300€ en versión hiper-pro) y un 30% de lo vendido en la AppleStore (más bien solo percibes el 70%, el resto se lo queda el tito Jobs para pagar los servidores de la AppleStore).
- Apple ha vendido zillones de sus aparatitos, con lo que el mercado es enorme.
- Todos comparten el mismo hardware, o casi, esto solo se ha visto alterado con la introducción del iPhone 3GS y su mayor potencia.
- El SDK dispone del Interface Builder para generar la interfaz del programa de forma gráfica.
- El auto-completar es precioso.
Contras :
- Al igual que hay zillones de iPhones por el mundo, hay zillones de aplicaciones, el mercado está copado y triunfar es más bien dificil.
- Se programa en objetive-C, que si bien es bastante descriptivo, puede resultar un castigo para gente, como yo, acostumbrados a la sintaxis de punto (java, C++,…) Si, es posible programar en C/C++, pero no es el lenguaje nativo (ni así te puedes comunicar con la interfaz).
- El SDK es horrible con el tema de firmar la aplicación para probarla en el iPhone y no en el emulador.
- La diferencia de rendimiento entre el emulador y el dispositivo en si es brutal, no es comparable y es un engaño probar tu aplicación en el emulador únicamente.
- Probar la aplicación en el iPhone tarda un tiempo considerable (iniciar el debugger, instalar la aplicación y ejecutarla).
- El SDK sólo funciona en Mac OS X
- La implementación de openGLES no es la misma en el iPhone que en el emulador, algo que funciona en el emulador puede no hacer en el iPhone y viceversa.
- La documentación y ayuda en el developer center está pésimamente organizada y los ejemplos no son todo lo aclaratorios que podrían/deberían ser.
Android
Pros :
- El SDK es multiplataforma y funciona bastante bien en linux, algo que me sorprendió gratamente.
- El desarrollo es gratis, nada de licencias anuales, aunque desconozco las condiciones para que tu aplicación aparezca en el Market.
- Para probarlo en el teléfono no te tienes que liar con problemas de firmas, las aplicaciones se firman automáticamente con una de desarrollo, y solo al final del mismo, la firmas justo antes de enviarla al Android Market.
- La potencia de los procesadores es superior a la del iPhone 2G y 3G, casi igual a la del iPhone 3GS (el hardware a no ser el mismo puede variar de uno a otro, pero en general el micro es similar).
- El AndroidMarket no está tan lleno como la AppleStore, tu aplicación aún tiene un hueco.
- Aun no he apreciado diferencias entre el emulador y el dispositivo, tampoco he metido demasiados cálculos para decir lo contrario, pero en principio parece aguantar.
- Probar una aplicación es casi instantáneo tanto en el emulador (después de la primera ejecución) como en el dispositivo.
Contras :
- Se programa en Java. Seamos francos, Java mola, lo que no mola es la cantidad de clases y abstracciones que la gente se monta para seguir una POO estricta que no hace más que engorrar. También se puede programar directamente en C/C++ (al fin y al cabo es lo que hay debajo de Android) pero las librerías apenas salieron y no he tenido tiempo de probarlas.
- El mayor problema quizás sea la fragmentación y los múltiples dispositivos que pueden llegar a haber (diferentes resoluciones de pantalla, diferentes velocidades de micro, con teclado, sin teclado, multitouch,…), sin embargo parece que por el momento todo eso se está manteniendo más o menos homogéneo (esto es muy discutible).
- El SDK carece de un creador visual para las interfaces gráficas, aunque imagino que en breve aparecerá (ok, es un breve en tiempos de “releases”, es decir, en unas pocas versiones del SDK, lo cual puede tardar bastantes meses en salir).
- Falta documentación y ejemplos. De todas formas esto es más o menos reciente y se le perdona.
Conclusiones
Si bien esta comparativa es injusta y completamente subjetiva, cada cual tendrá su opinión al respecto, y aclarando que con el SDK de Android he pasado poco tiempo, estoy gratamente sorprendido con el SDK de Android y lo “maduro” que está. Se podría esperar algo más si realmente desea plantarle cara a Apple y viniendo de quién viene, pero con el tiempo seguro que se arreglará. Objetive-C me ha dado muchos más problemas que Java y quizás sea lo que me tire más a un lado u otro. En general ambos SDK pasan la prueba y los pongo a la misma altura.
Como plataforma, Android me parece mucho más encaminada al futuro. Básicamente enlazas tu cuenta personal con el teléfono y sincronizas contactos, fotos, calendario, datos,… con “la nube” (internet). Es decir, se te pierde el teléfono y NO perderías tus contactos, porque están en internet. Si estás en la oficina y añades a un nuevo contacto en tu agenda, ese cambio se refleja en tu agenda de contactos del teléfono, idem con los eventos y el calendario. 1 cuenta, múltiples dispositivos. El problema, o mi mayor pega, es que esa cuenta, y por tanto esos datos, pertenecen a Google, compañia a la que no le tengo demasiado aprecio. Sus usuarios podríamos estar incurriendo en ilegalidades al alojar en Google datos de terceras personas, pero eso es harina de otro costal. Algo que especialmente me ha gustado (y no sé porqué no está en los contactos de internet y solo en Android) es que unes una cuenta de tu agenda a una de Flickr y/o Facebook y te avisa de los updates y eventos de ese contacto.
Como he dicho, cada uno tiene su opinión y posiblemente más fundada que la mia.
6 Comentarios en “Android SDK vs. iPhone SDK”
¿He leído “Java mola”? Por dios, vamos a ser serios… Me estoy haciendo viejo…
Java es un pestiño intragable… Menos mal que está Scala y Clojure…
Saludos! (interesante post, por cierto)
d.
theNinjaBunny
26 de November de 2009 a las 1:16
jajaja… sabía yo… Java lo he puesto como contra y de modo irónico, porque no llego a entender el éxito que ha llegado a tener con el pestiño que es y los problemas que da. Java se enseña por ejemplo en la licenciatura de Matemáticas de nuestra querida UMU, cuando Pascal o C hubieran sido más fáciles para iniciar a la gente en el curso de programación (no sé en qué momento de su vida un método numérico necesita hacer uso de la herencia, polimorfismo y demás historias – que si, dado el caso seguro que se puede, pero ¿para empezar?)
En resumen: no entiendo porque se pide tanto java developer, se enseña tanto (como el ejemplo) y se trabaja tanto en java si a nadie le gusta, o quizás al que no le guste es a mi, que en el fondo soy un poco rarito… =P
Vale, Java es un pestiño pero por lo menos te has quejado menos que con Objetive-C jejeje
diego sevilla
27 de November de 2009 a las 1:22
Linkita: Objective-C es una maravilla… C + Smalltalk… ¿qué más se puede pedir? Además, los de Apple, por muy mal que me caigan, han demostrado que es todavía válido 20 ó 30 años después para desarrollar aplicaciones a la última…
Saludos!
diego.
theNinjaBunny
27 de November de 2009 a las 4:02
objetive-c una maravilla? puffff has perdido puntos en mi escala. He de reconocer, que es bastante descriptivo y el código se lee con bastante facilidad, pero lo de los corchetes… es que no me termina de convencer, imagino que será porque vengo de AS, C++ o Java y la sintaxis de punto me parece lo más natural…




diego sevilla
26 de November de 2009 a las 0:00