Este blog está orientado a toda la gente que quiera ver y participar en temas de ing. de software, TI, redes y otras áreas de la computación.

jueves, febrero 16, 2006

Blogs que te gustaría visitar

En mi sección de links enlisto varios blogs de personas que publican conocimiento e ideas dentro del mundo de TI y desarrollo de software. Primero que nada es gente que conozco, colegas de primera mano por así decirlo. Me agrada también que viendo la lista como un conjunto podemos darnos cuenta que existe la diversidad de temas e ideas.

Esta el blog de Carlos Madrigal que lleva un tiempo ya publicando y habla de muchos temas que normalmente soporta con sus mundialmente famosos (¡aunque no lo crean!) Podcasts del Pozo Técnico. Es buen cuate y publica casi diario así que leer TODOS sus blogs es el verdadero reto.

Efrén González sabe bastante del mundo de la tecnología. Tanto que tiene 2 blogs: tecnología y opensource. Mi favorito es el de opensource ya que en mi entorno es poca la gente que sabe de opensource así que bienvenido sea su blog.

El Raider o Luis Morales es muy bueno trabajando con SQL Server 2000. Puedes preguntarle acerca de queries, tablas, índices, etc. Yo lo hago a cada rato. Además siempre publica errores con los que se encontró en el trabajo y da una explicación muy buena de cómo los resolvió.

José Dévora esta preparando varios cursos de .NET y los quiere publicar en su blog. Cuidado con la piratería así que si los quieren usar pregúntenle. Seguro serán de mucha utilidad.

El blog de Teo Ortega habla de varias cosas útiles para entender mejor el desarrollo de software. El tiene experiencia en sistemas de .NET así que sería un buen recurso si algún día se te ofrece.

Como pueden ver, son una buena fuente de información y sobre todo EXPERIENCIA acumulada que te pueden ayudar. Lo mas importante es que al leernos nos motiva a seguir aprendiendo y pelear contra el mal de todos los Ing. en Sistemas: El quedarte atrás. Así que si quieres que tu blog aparezca en mi lista mándamelo y con gusto te obsequio un espacio.

miércoles, febrero 15, 2006

Perfiles y MIDP

Que tal, ¿cómo vamos con todo esto de la arquitectura de J2ME? La verdad es que ya he publicado una buena cantidad de blogs de teoría. Creo es importante ver que es un Perfil y un MIDP para poder ir con las armas adecuadas a tratar de escribir una aplicación en J2ME. Empecemos entonces.
Una vez que tenemos una configuración (un conjunto de APIs y una definición de una Virtual Machine) debemos seleccionar el perfil adecuado para el dispositivo móvil al que vamos a desarrollar la aplicación. El Perfil viene dando una serie de bibliotecas, clases y APIs específicas para programar en un aparato en particular. Todo lo que conforma un Perfil es lo único (ni mas ni menos) de cosas que soporta un celular o pager, por ejemplo. De ahí que el Perfil viene siendo la última capa de la arquitectura y la que tiene una interacción directa con el aparato al que se le esta ejecutando la aplicación.
Hoy en día ya existen varios perfiles para las configuraciones mas comunes pero es el perfil MIDP el mas famoso y al que yo me voy a enfocar.
MIDP viene de las siglas en inglés Mobile Information Device Profile y esta dirigido para utilizarse con la Configuración CLDC. Como podrán imaginarse el MIDP es un perfil para celulares, pagers y otros dispositivos pequeños.
Recuerden que una razón por la que quiero aprender a programar en J2ME es para hacer una aplicación y correrla en mi celular. Ya vimos mucha teoría y creo que estamos listos para algo más práctico. Para mi aplicación voy a utilizar la configuración CLDC con el Perfil MIDP 2.0. Voy a bajar el Wireless Toolkit de Java y empezar a ver como funciona. Mis siguientes publicaciones serán de el ambiente que debes tener para escribir tu aplicación y llevarla a tu celular. Hasta pronto.

Algunos comentarios y Perfiles.

Para mi buen amigo Poncho Flores, comento que efectivamente una KVM trabaja igual que la JVM solo que para un dispositivo móvil. Estas maquinas virtuales lo que hacen es interpretar un programa de Java de acuerdo al sistema operativo que invoca el programa. El proceso completo es el siguiente: Primero se escribe el código fuente en un archivo de texto con extensión .java , luego se compila ese archivo y se forma otro nuevo con extensión .class. Este archivo esta en bytecodes, lo que hace que la JVM lo lea e interprete de acuerdo al sistema operativo anfitrión. Asi se corren los programas con la tecnología Java. Pasa lo mismo con KVM, se sigue todo el proceso hasta que el SO del dispositivo móvil ejecuta el programa que invoca.
Carlos Madrigal tenía inquietudes acerca del KVM y la situación que no soporta JNI. El JNI sirve para poder combinar bibliotecas y aplicaciones escritas en el lenguaje Java y otras en código nativo. El que la configuración CLDC no soporte JNI solo significa que no se pueden combinar bibliotecas y aplicaciones de diferentes lenguajes. La forma en que se definen funcionalidad, aplicaciones, bibliotecas, etc. Para cada dispositivo móvil es escogiendo el Perfil correcto.
Hablare más de perfil en mi siguiente entrada de blog.

jueves, febrero 02, 2006

Características de CLDC

Voy a extenderme en esta configuración porque es la que se usa para hacer aplicaciones para teléfonos celulares. Recuerden que mis primeros pininos en dispositivos móviles van a ser en mi cel así que por eso la atención especial a esta configuración.


Los dispositivos que encajan en CLDC tienen las siguientes características:

  • 160Kb y 512Kb de memorial total disponible.
  • Procesador de 16 bits ó 32 bits.
  • Poco manejo de energía y el uso constante de una batería.
  • Conexión a una red, casi siempre inalámbrica y con ancho de banda limitada.



Como podemos ver en la figura de abajo(1), CLDC se compone de las bibliotecas de CLDC, el Kilobyte Java Machina (KVM) y el lenguaje de programación Java.


El lenguaje de programación Java.
¿Ya ven como insisto en estudiar bien toda la arquitectura detrás de un lenguaje de programación? Pues aquí les va otra buena razón para hacer esto…
Debido a que el ambiente en el que corren las aplicaciones con configuración CLDC es muy limitada, hay cosas de Java que no son soportadas. Esto es que hay cosas que si puedes hacer normalmente en ambientes como J2SE y J2EE pero NO en J2ME y con la conf. CLDC. ¿Ven? Si no sabemos esto podríamos estar utilizando erróneamente el lenguaje de programación Java y se nos haría muy difícil saber porque en unas plataformas sirve y en otras no.
Estos son las principales cosas que NO puedes hacer en Java para configuración CLDC:

  • No hay soporte de tipo flotante. Esto es porque la cantidad requerida para este tipo de variables es muy alta.
  • No hay método finalize(). Ningún objeto debe esperar limpiarse antes de ser eliminado.
  • Hay limitaciones al trabajar con manejo de errores. El manejo de excepciones esta totalmente soportado pero el de errores si esta limitado.



JVM.
En CLDC el Java Virtual Machina se cambio a Kilobiye Virtual Machina. Esto es porque es una versón mas reducida de la original para poder encajar con el hardware de los dispositivos móviles. Sus limitantes principales son:

  • No hay soporte para Java Native Interface (JNI) es decir, no puedes escribir en otro código que no sea Java.
  • No soporta clases cargadoras a nivel java definidas por el usuario.
  • No soporta reflexión.
  • No hay soporte para referencias débiles.

Bibliotecas Java.
J2SE y J2EE contienen muchas bibliotecas que le otorgan al programador clases, métodos, funciones, etc. que puede usar y ahorrar tiempo de codificación y mas importante, evitar reinventar la rueda. En J2ME, no es posible poner todas estas bibliotecas así solamente un mínimo de bibliotecas están disponibles para el usuario.

Con esto podemos entender las características principales de CLDC y ahora podemos escoger el perfil para el dispositivo que quiero hacer mi aplicación. Mis siguientes publicaciones hablarán del perfil MIDP 2.0

¡Hasta pronto!

    (1) bibliografia: http://www.cs.helsinki.fi/u/campa/teaching/j2me/papers/J2ME.pdf

    Más sobre arquitectura de J2ME.

    Que tal, ¿está interesante esto de la arquitectura? A mi en lo particular me esta gustando mucho. Yo solía estudiar solamente un lenguaje de programación y conforme iba avanzando en un proyecto estudiaba lo que necesitaba de la arquitectura en que estaba basado ese lenguaje. La mayoría de las veces me funcionaba este método pero creo que es mejor hacerlo bien. Me refiero a entender primero las especificaciones de una idea o plataforma (como lo es J2ME) y luego poder aprender el lenguaje de programación y usarlo como herramienta de trabajo para diseñar verdaderos sistemas. Carlos Madrigal en sus ya famosos Podcasts del Pozo Técnico habla de este fenómeno y otros temas relacionados como el programador pragmático y lo que hace un verdadero arquitecto de software, los invito a darle una checada.
    Pronto empezaré a hacer mis primeras pruebitas en J2ME. Por lo pronto vamos a ver más a fondo el bloque de configuración.

    Existen 2 tipos de Configuración:
    • Connected Limited Device Configuration (CLDC)
    • Connected Device Configuration (CDC)
    Cada dispositivo móvil entra en una de estas configuraciones. Dependiendo de las características de hardware de los aparatos se sabe que configuración es la adecuada.