Desde hace ya mucho tiempo me ha atraído mucho desarrollar alguna aplicación para un dispositivo móvil, la primera que hice fue en J2ME para un teléfono hace ya un par de años, pero no me convenció mucho el resultado porque era muy engorroso estar probando y la JVM en móviles era muy limitada, así que ya no seguí probando.
Pero ahora existen muchas posibilidades, hacer apps para Android, para iOS (que es más costoso $$), para Windows Phone, o una aplicación web compatible con alguno de estos dispositivos, que incluya HTML5.
Cabe aclarar que HTML5 no es el que logró que los teléfonos pudieran ver páginas web, sólo llegó a mejorar la experiencia por sus nuevos estándares, y a enriquecer la programación de aplicaciones web.
Hay varios frameworks para elegir en este campo, los que yo conozco mejor y he probado son sólo dos: Sencha Touch y jQuery Mobile, me gustan mucho y me decidí por probarlos porque no dependen de un lenguaje de servidor, por lo tanto se pueden complementar casi con cualquiera (yo prefiero usar PHP).
De esos dos, el más sencillo de implementar es jQuery Mobile (jQM), pero también tiene menos componentes que Sencha Touch (STouch).
jQM se basa en una codificación semántica y al cuando el navegador está listo, renderiza todas las etiquetas que encuentre en la página. Esto ayuda mucho porque no es necesario tener un conocimiento profundo de Javascript para poder generar nuestra página.
Sencha Touch tiene una estructura parecida a la de ExtJS, la versión para aplicaciones web de escritorio. Por lo tanto hay que tener un poco de conocimientos de POO y Javascript para no perderse mucho al principio, ya que hay muchas maneras de llegar al resultado que queremos.
Y a esto se le puede agregar que ha surgido una tecnología desde hace ya un tiempo que permite programar en Javascript y poder construír una app nativa para cada OS móvil, ya sea Android, iOS, Windows Phone, Blackberry, Palm WebOS, Bada o Symbian. Este se llama PhoneGap y utiliza un servidor apache interno para servir páginas web localmente dentro de la app. Usa una versión de Apache llamada Córdova y es muy fácil de implementar. Bueno, que sea fácil de implementar PhoneGap no quiere decir en ningún momento que desarrollar la aplicación lo sea también, ya que desde aquí no poseemos un "PHP" que nos preconstruya nuestra página, todo lo debemos hacer con Javascript para el entorno, JSONP para peticiones a servidores de datos, CSS para el estilo y alguno que otro evento que nos brinda PhoneGap. Sólo el hecho de que no tengamos un lenguaje de servidor nos hace que debamos cambiar nuestro estilo de programación.
Tiene sus ventajas, y una de las mejores es que no hay que escribir el código para cada plataforma, sino que se desarrolla una sóla vez y luego se usa la versión de PhoneGap adecuada para cada una de las plataformas en las que queremos tener nuestra app.
Mostrando entradas con la etiqueta javascript. Mostrar todas las entradas
Mostrando entradas con la etiqueta javascript. Mostrar todas las entradas
martes, 24 de julio de 2012
viernes, 6 de julio de 2012
JSON y el intercambio de datos
En muchos de los frameworks de javascript se usa el formato JSON, y tambien en muchos objetos comunes a la hora de codificar en este mismo lenguaje.
JSON significa "JavaScript Object Notation", y es una de las formas de crear objetos en javascript, de hecho para mi es una de las más sencillas, aunque no sean objetos instanciables.
van más o menos así
El código anterior declara un objeto, asignándole una propiedad y un método que devuelve el valor de la propiedad. Luego de terminar la declaración se manda a llamar la función alert() de javascript y se le pasa por parámetro el resultado del método que declaramos en nuestro objeto.
En esto se basa el intercambio de datos con el servidor por AJAX, aunque es muy raro que se devuelvan métodos, pero es posible. En la mayoría de los casos se devuelven sólo propiedades que luego pueden ser parseadas por el framework que usemos o por funciones que hayamos elaborado. Claro que esto tiene la limitante, por usar el objeto xmlHttpRequest, de recibir datos solamente de peticiones hacia el mismo nombre de dominio, por cuestiones de seguridad.
A pesar de eso, hay otra forma de hacer una llamada de este estilo hacia otro servidor o nombre de dominio, llamada JSONP (JavaScript Object Notation with Padding).
Este se basa en la capacidad que tienen los navegadores de incluir scripts de otros dominios para ejecutarse dentro del entorno en el que se esta trabajando. Para usarlo del lado del servidor no hay mucha variante, sólamente debemos agregar nuestro objeto JSON como parámetro de una función que se ejecutará en el cliente.
Un ejemplo de esto es el siguiente
Una respuesta en JSON (en el mismo dominio) debería mirarse como esta:
En cambio una respuesta en JSONP (en otro dominio) se vería como esta:
En el caso de usar JSONP debemos tener una función llamada "funcionDelCliente(obj)" que reciba un objeto como parámetro, y para poder mandarlo a llamar deberíamos de crear la siguiente etiqueta dinámicamente con javascript
Estas son unas opciones de intercambio de datos que para mi son un poco más prácticas que usar otros formatos estándares como xml, tomando en cuenta que para generar un objeto json con PHP existe una función llamada json_encode que recibe como parámetro un array, de preferencia asociativo, para convertirlo a texto con la nomenclatura de JSON, además algunos Frameworks traen implementadas las funciones necesarias para parsear estas peticiones, como jQuery o ExtJS que son los que más conozco.
van más o menos así
<script>
var miObjeto = {
miPropiedad:'valor',
miMetodo:function(){
return this.miPropiedad;
}
}
alert(miObjeto.miMetodo());
</script>
var miObjeto = {
miPropiedad:'valor',
miMetodo:function(){
return this.miPropiedad;
}
}
alert(miObjeto.miMetodo());
</script>
El código anterior declara un objeto, asignándole una propiedad y un método que devuelve el valor de la propiedad. Luego de terminar la declaración se manda a llamar la función alert() de javascript y se le pasa por parámetro el resultado del método que declaramos en nuestro objeto.
En esto se basa el intercambio de datos con el servidor por AJAX, aunque es muy raro que se devuelvan métodos, pero es posible. En la mayoría de los casos se devuelven sólo propiedades que luego pueden ser parseadas por el framework que usemos o por funciones que hayamos elaborado. Claro que esto tiene la limitante, por usar el objeto xmlHttpRequest, de recibir datos solamente de peticiones hacia el mismo nombre de dominio, por cuestiones de seguridad.
A pesar de eso, hay otra forma de hacer una llamada de este estilo hacia otro servidor o nombre de dominio, llamada JSONP (JavaScript Object Notation with Padding).
Este se basa en la capacidad que tienen los navegadores de incluir scripts de otros dominios para ejecutarse dentro del entorno en el que se esta trabajando. Para usarlo del lado del servidor no hay mucha variante, sólamente debemos agregar nuestro objeto JSON como parámetro de una función que se ejecutará en el cliente.
Un ejemplo de esto es el siguiente
Una respuesta en JSON (en el mismo dominio) debería mirarse como esta:
{ idDato:"1", nombreDato:"Mi Dato" }
En cambio una respuesta en JSONP (en otro dominio) se vería como esta:
funcionDelCliente({ idDato:"1", nombreDato:"Mi Dato" })
En el caso de usar JSONP debemos tener una función llamada "funcionDelCliente(obj)" que reciba un objeto como parámetro, y para poder mandarlo a llamar deberíamos de crear la siguiente etiqueta dinámicamente con javascript
<script src="http://mi.otro.dominio.com/scripts/devolverDatos.php?type=JSONP" language="JavaScript"> </script>
Más información acerca del uso de JSONP con jQuery AquiEstas son unas opciones de intercambio de datos que para mi son un poco más prácticas que usar otros formatos estándares como xml, tomando en cuenta que para generar un objeto json con PHP existe una función llamada json_encode que recibe como parámetro un array, de preferencia asociativo, para convertirlo a texto con la nomenclatura de JSON, además algunos Frameworks traen implementadas las funciones necesarias para parsear estas peticiones, como jQuery o ExtJS que son los que más conozco.
Suscribirse a:
Entradas (Atom)