Una tecnología que poco a poco se ha venido infiltrando en Internet, y a la cual pocos han prestado la atención debida, es HTML 5, y hoy quiero escribir una nota para que entiendan por qué creo que esta tecnología será un punto de inflexión en aplicaciones conectadas a Internet, en particular a dispositivos móviles.
Primero quiero decir que es entendible que a HTML 5 no le hayan dado la cobertura en los medios que creo se merece, ya que para muchos HTML 5 es simplemente "otra versión mas de HTML". Y para desarrolladores web en particular, los cuales por años han estado peleando con sus aplicaciones para adaptarlas a todas las versiones de HTML en distintos navegadores, es posible que HTML 5 no se recibido con buenas noticias.
Sin embargo, es buena que sepan que HTML 5 no es simplemente una progresión en el lenguaje de etiquetas de HTML. Lo que hace a HTML 5 tan potente (y créanme que en un futuro no lejano se hablará de "los tiempos antes y después del HTML 5"), es la inclusión de 2 tecnologías que apuntan hacia la nueva tendencia en programación de aplicaciones locales de Internet.
Estas tecnologías de las cuales hablo son específicamente Almacenamiento Offline y App Cache.
Almacenamiento Offline (también referido como Offline Database) es una manera de uno poder acceder desde HTML 5 (por medio de métodos de Javascript) a una base de datos local (la implementación siendo por lo general SQL Lite).
Esto significa que una página web podría (con el permiso del usuario) crear una base de datos local en donde almacenar información estructurada para en un futuro estos datos poder ser accedidos por medio del lenguaje SQL de acceso a bases de datos.
Así que por ejemplo, una página web podría pedirte permiso para almacenar varios archivos adjuntos de email locales en tu navegador, para que así si en un futura quieras abrirlos, estos ya estar disponibles en tu navegador sin tu tener que volver a descargarlos.
La otra tecnología es AppCache, y esta lo que hace es permitir especificarle a tu navegador web que después que descargue una página web, que la mantenga copiada localmente, para que en el evento de que en un futuro no tengas conexión a Internet, tú puedas de todas maneras tener acceso a esa página.
Un ejemplo de esto sería una página que muestre una receta de cocina que te guste. Con HTML sería posible que el creador de esa página de esa receta la marque para que tu navegador pueda "recordar" la página sin tu tener que conectarte a Internet.
Sin embargo, estas dos tecnologías por sí solas son solo útiles hasta cierto punto, la gran utilidad es cuando se utilizan en conjunto (y noten que fueron específicadas en HTML 5 con el objetivo de que sean utilizadas en conjunto), ya que ahora es posible no solo descargar una aplicación web completa a tu dispositivo móvil (o PC) para que esta funcione aun sin Internet, sino que además con el Almacenamiento Offline sería posible que la aplicación funcione como si estuviera conectada a Internet, utilizando datos locales en vez de en Internet.
Un ejemplo de esto sería una aplicación para punto de venta. Con un dispositivo iPhone, Android o Palm Pre uno podría lanzar una aplicación web sin conexión a Internet para tomar órdenes de clientes, en donde tales órdenes se almacenarían localmente, pero en el momento de uno conectarse a Internet los datos subirían a la versión en Internet de la aplicación, haciendo este tipo de aplicaciones bastante flexibles.
Sin embargo, la razón por la cual digo que HTML 5 es un punto de inflexión en tecnologías de creación de aplicaciones, no es porque sea novedoso, ya que esto es posible hoy día con el iPhone, y será posible próximamente con el Palm Pre, en ambos casos de manera propietaria, sino porque por primera vez será posible crear aplicaciones web universales que se comportarán como aplicaciones locales y que funcionen en cualquier navegador web que soporte HTML 5.
Lean ese párrafo anterior otra vez si aun no entienden. En otras palabras, por primera vez será posible circunnavegar las limitaciones que imponen empresas como Apple, Google, Palm o Microsoft sobre qué tipo de aplicaciones se pueden instalar en sus dispositivos, ya que estas aplicaciones son simples aplicaciones web, pero que se instalan y funcionan como aplicaciones casi nativas del dispositivo local (sea un celular o una laptop o cualquier otro dispositivo que soporte HTML 5).
Ahora, como muchos ya sabrán, esto tiene sus limitantes, entre ellas siendo que con solo HTML 5 no obtienes acceso a los APIs (interfaces de programación) de bajo nivel del dispositivo en cuestión. Así que por ejemplo con solo HTML 5 no podrías acceder a leer los datos de contacto del dispositivo móvil, o quizás los valores del acelerómetro o compás digital, o a la cámara de video, o a los gráficos en 3D, etc.
Sin embargo, como dicen coloridamente "las compuertas de la represa ya están abiertas y no hay marcha atrás". Gracias a este humilde comienzo de HTML 5, pueden apostar a que de aquí en adelante veremos esfuerzos para estandarizar acceso desde HTML/Javascript a estas funciones de bajo nivel.
Es mas, podemos decir que ese proceso ya inició con el nuevo modelo de programación del Palm Pre, el cual hace justamente esto: Expone APIs de bajo nivel a través de llamadas de Javascript, aunque aun no con un estándar abierto sino que uno propietarios de Palm por el momento.
Eso significa que no duden que en un futuro podremos hacer aplicaciones web que utilicen gráficos de bajo nivel (ya hay una iniciativa en proceso en este aspecto con el componente Canvas que vimos primero masificarse en Firefox), tengan acceso al acelerómetro (como lo hace Apple), a las demás aplicaciones instaladas (como lo hace el Palm Pre), e inclusive a información de posición geográfica GPS (que ya es posible por medio de la especificación GeoLocation de la W3C.
Ahora, no crean que esto está tan lejos. Justo esta semana Google demostró una versión de HTML 5 de GMail funcionando en el simulador del iPhone, así como en un celular real de Android (ver abajo), y además demostró una versión de Google Maps para el Palm Pre que no es nativa sino que está escrita en puro HTML 5, utilizando el API de GeoLocation.
Así que ya saben, ahora nos toca a nosotros como desarrolladores de software a presionar a todas las entidades que crean estos navegadores web para que soporten estos estándares de APIs, así como proponer nuevos para su inclusión en lo que sería una verdadera plataforma universal de aplicaciones web locales.
Noten que he evitado citar a Java y Flash para no aumentar el largo de este artículo y distraer del punto importante que quería hacer, pero en un artículo futuro, o quizás en los comentarios, escriba por qué no creo que puedan competir contra HTML 5 en un futuro.
Tampoco mencioné a Google Gears, que es una tecnología que ofrece mucha funcionalidad (y quizás mas avanzada) similar a la que ofrece HTML 5, pero a la larga creo que saldrán frameworks para HTML 5 que harán buena parte de lo que hace Google Gears y sin tener que instalar nada.
Y finalmente tampoco escribí sobre las diferencias en ejecución de código de Javascript vs código nativo, ya que escribí algo al respecto hace mucho y que pueden leer en este enlace.
Nota: Este artículo original está archivado en eliax bajo "Opinión / Análisis". Si les interesa saber mis otras opiniones y/o análisis de diversos temas pueden hacerlo como siempre haciendo clic en esa categoría de noticias a la derecha de la página de eliax.
Ahora los dejo con dos videos de Google. El primero es una demostración de GMail con acceso sin Internet tanto en iPhone como Android, y el otro Google Maps para el Palm Pre.
Nota:Predicciones de eliax para el año 2008 (Diciembre 2007 - en mi predicción #7 de ese año predije que Apple incluiría la funcionalidad de almacenamiento local en Safari, como ocurrió efectivamente un año después).
La predicción #7, no la entiendo, te refieres al Safari del iPhone?
Dice eliax "en mi predicción #7 de ese año predije que Apple incluiría la funcionalidad de almacenamiento local en Safari, como ocurrió efectivamente un año después"
Soberbias tus observaciones Jose Elias. Quiero ahora que escribas de Java y Flash para entender todo el panorama mejor.
Sera el HTML 5 como tener un servidor web instalado? como apache por ejemplo, por que de que otra forma me imagino trabajando una pagina web completa a nivel de programacion?
Mas o menos.
La idea es que si no estás conectado a Internet y pides una página web, que el navegador detecte si es una página con tecnología de HTML 5 (por decirlo así) y "servirte" la página localmente como si fuera el servidor web remoto. En términos técnicos: Detectar si la página ha sido puesto en el cache por medio de AppCache.
Sin embargo NO CONFUNDIR un servidor web con que el navegador tenga una copia previamente guardada. Son dos cosas muy distintas.
La idea después es que con técnicas de AJAX (mayoritariamente de Javascript, DHTML y con el API de base de datos) escribas tu aplicación para que esta puede ejecutarse sin necesidad de tener "que salir a Internet".
Es decir, este tipo de aplicaciones deben ser planeadas de antemano para que funcionen de manera desconectadas, y por tanto para que sean auto-suficientes, teniendo todo lo que vayan a necesitar de antemano (imágenes, código de javascript, archivos CSS, páginas HTML, datos en una base de datos, etc).
Ahora, si ya tienes aplicaciones con técnicas de AJAX, y estas utilizan mucho el acceso remoto a servidores web, la modificación que harías sería de 2 pasos:
1. Aislar las llamadas remotas y ponerlas en funciones atómicas con un API bien definido.
2. Después de probar que todo continúa bien, proceder a poner una condición dentro de esas funciones atómicas, para que si no hay conectividad a Internet acceder a los datos localmente en vez de remotamente por medio de HTTP.
Notar que la idea de aislar las llamadas AJAX remotas en unidades atómiccas es para que no rompas tu propio API y la aplicación continúe funcionando como fue diseñada originalmente.
Y obviamente, dependiendo de tu aplicación, es posible que tengas un paso 3, el cual es sincronizar datos almacenados localmente durante los momentos de desconexión con los datos remotos en el momento que haya conexión.
Lo que yo necesito es activar mis videos de you tube en mi spacio
Mozilla Labs (el grupo dentro de Mozilla encargado de crear tecnologías experimentales, con miras a futuras aplicaciones prácticas, como sucedió con el navegador Firefox) recién acaba de abrir al público un nuevo proyecto llamado Bespin que creo tiene muc
Si necesitabas una excusa para descargar el navegador web Safari de Apple para Windows (o si quieres lo mejor de otros navegadores en Safari en OS X), aquí ya la tienes, porque Apple justo acaba de hacer disponible la versión 4 en forma de beta pública (e
Han habido muchos avances hasta ahora, espero que todo siga asi
La gracia estaría ahora en saber esa base de datos dónde se almacena, cómo interactuar con JavaScript, hacer peticiones a la misma, compatibilidades con, por ejemplo, Silverlight, ejemplos varios... He visto muchas webs con la teoría (siendo esta la mejor con diferencia), pero echo en falta ya no el qué puede hacer sino el cómo hacerlo.
= caliente, en subida = estable, indeciso = frío, en bajada
EMPRESAS Apple Google Facebook Twitter Amazon Netflix Hulu eBay Paypal Samsung Motorola HTC Acer ASUS HP/Palm Skype RIM Microsoft IBM Nokia TiVo Oracle Sony Dell MySpace Yahoo
NAVEGADORES WEB Google Chrome Firefox Apple Safari Opera IE
BUSCADORES Google Microsoft Bing Wolfram|Alpha Yahoo
SISTEMAS OPERATIVOS iPhone OS Windows 7 Android OS Chrome OS Mac OS X Linux en Servidores Windows Phone 7 Linux en Escritorios Windows XP Palm Web OS Symbian Windows Vista Windows Mobile
DISPOSITIVOS iPad iPhone Celulares Android iPod Touch Nintendo DS Kinect Xbox 360 Blackberry PlayStation 3 Amazon Kindle Nintendo Wii Palm Pre iPod PlayStation Move Sony PSP Zune HD
TECNOLOGÍAS Tiendas de Aplicaciones Aplicaciones Móviles Portales Sociales Tablets como el iPad Aplicaciones Web Software Libre GPS Blogs Libros Electrónicos Blu-ray SSD Realidad Aumentada Buscadores en tiempo real WiFi "G" y "N" HDTV Proyectores 1080p HD-SLR Cine en 3D Video por Internet Google Voice FaceTime Crowdsourcing Chips multi-núcleos Terapia Genética Autos Híbridos Energías Alternativas Arduino Robótica Nanotecnología WiFi en aviones Redes Celulares LTE Planes celulares ilimitados Micropagos EPUB RFID Netbooks Turismo Espacial Exploración Espacial USB 2.0 USB 3.0 SATA Bluetooth SD / SDHC / SDXC Pixel Art Salud por Internet Sistemas Operativos 64-bits Laptops Microsoft Office WiFi "B" eSATA Sistemas Operativos 32-bits WiMAX FireWire/i.Link/IEEE1394 Celulares sencillos Parallel ATA WiFi "A" Compact Flash Sony Memory Stick DRM PC de Escritorio Aplicaciones de escritorio Periódicos impresos
SOFTWARE HTML 5 AJAX Javascript PHP MySQL Java Open CL Open GL ES Ruby on Rails Python .Net Adobe Coldfusion Map-Reduce JSON Open Office Google Docs Virtualización Cloud Computing Objective C GMail Google Go Yahoo Mail Hotmail / Live Mail Google Wave Opera Unite XML SQL C/C++ Direct X/3D Microsoft Office Adobe Flash Microsoft Silverlight Visual Basic FoxPro
RUMORES HP/Palm PalmPad Google Me Google Games iTunes en la Nube Apple iTV con iOS