martes, 24 de agosto de 2010

Ingenieria... En aquel momento parecía una buena idea

Qué grande es el mundo de la arquitectura de sistemas y software, pero a la vez que pequeño es cuando no se reflexiona acerca de la nebulosa situación que implica ejercer esta fascinante pero nada fácil profesión, para no hartar tanto con mis posts técnicos, cito el prologo que Carlos Hernando Ardila Presidente ACIS, firma en el recomendado libro “Papel y perfiles del ingeniero de sistemas en Colombia” de Jorge Eliécer Tarazona y Victor Manuel Toro:

Sería difícil encontrar una profesión con una problemática más interesante que la nuestra. La experiencia, a cambio de hacernos más valiosos, se convierte en un defecto al aferrarnos a tecnologías obsoletas que hemos logrado dominar a medias; pero al tratar desesperadamente de desprendernos de ellas, nos hace eternos aprendices con tasas de fracaso altísimas. Los paradigmas de programación han cambiado varias veces en los últimos años: cuando finalmente sabíamos Cobol, tuvimos que empezar a programar “mal” en bases de datos relacionales; cuando finalmente estábamos aprendiendo, tuvimos que pasarnos a programar en ambientes cliente/servidor con interfaces gráficas, inicialmente con un conjunto de herramientas típicamente provistas por los mismos proveedores de las bases de datos; ahora que ya empezamos a dominar esos ambientes, debemos aprender a programar en el Web y a participar en grupos de trabajo mixtos con artistas!; cuando apenas estamos entendiendo esta tecnología nos dicen que el modelo cambió de “halar” información a “empujar” información y por lo tanto debemos repensar nuestras técnicas de programación ...... ¿ hasta cuándo ? hasta que la sociedad harta de vernos ensayar con el juguete de turno y de fracasar en la construcción de sistemas de información, ¿ nos reemplace de alguna forma ?

Una profesión en que los años no son de humano sino de perro, por la tasa de cambio de la tecnología que manipulamos; basta con anotar que la capacidad de las máquinas que operamos crece el ciento por ciento cada dieciocho meses.

Una profesión en la que la demanda por sus ingenieros se aleja cada vez más de la oferta generando un altísimo déficit nacional e internacional. Sin embargo, pocos quieren estudiar ingeniería de sistemas, especialmente los jóvenes de los estratos económicos más altos; por qué ? Si como consecuencia de ese déficit el mercado compite por ellos con base en sueldos fabulosos; si consiguen trabajo incluso desde su cuarto año de universidad !.

Somos una comunidad de profesionales que como bien afirman Víctor y Jorge, queremos planear y administrar pero no ejercer los oficios esenciales de nuestra ciencia como programar computadores; que si nos especializamos, lo hacemos en administración o finanzas pero no en una rama de nuestra ingeniería.

Somos ingenieros con dificultades para integrarse a la sociedad, típicamente desde que estamos estudiando; basta con oír los comentarios que estudiantes de otras facultades hacen acerca de los de sistemas, o los epítetos que altos directivos empresariales lanzan sobre nosotros.

Una profesión totalmente dominada por el mercadeo: cuántas marcas de retroexcavadora conoce usted ?. Pregúntele a un médico cuántos nombres de compañías de computación conoce.

De otro lado, ejercemos una profesión que domina completamente la economía mundial.

Somos expertos en manipular información representada electrónicamente en plena revolución informática.

Tenemos la oportunidad y la obligación de enseñarle a nuestra sociedad, acostumbrada a manipular átomos, cómo se comercia y se legisla con bits.

Tendremos que enseñarle a nuestros hijos que son independientes geográfica y temporalmente; que vivir en Colombia o en Estados Unidos representa pocas diferencias de oportunidades, siempre y cuando estemos conectados a la Red; que el teléfono es un mecanismo de comunicación obsoleto, que organizar nuestras vidas alrededor de los horarios de la TV, salir por la ciudad de compras, ir al banco, al colegio o al trabajo ocho horas al día son costumbres atávicas que debemos superar.

Tenemos la oportunidad por primera vez de tener éxito solamente en función de nuestro talento y no del capital disponible para comprar herramientas o para cubrir mercados más grandes.

viernes, 26 de febrero de 2010

Instalación de componentes necesarios para el desarrollo en la plataforma Java ME

Para conseguir trabajar en J2ME existen muchas formas, algunas muy simples, como la instalación de Toolkits Java. Sin embargo, si recurres a ese tipo de instalaciones, estarás bastante limitado para desarrollos posteriores y además no te darán una visión global del lenguaje Java. Por ello aquí vamos a instalar herramientas profesionales, algunas bastante complejas, pero tocando solamente los aspectos J2ME para facilitar su uso.

Se necesita, por ello, la instalación de los siguientes componentes:

El Java Standard Edition (J2SE), en su versión Java Development Kit (JDK), en su versión 6 o superior. El programa se puede bajar desde la página de  Sun-Oracle. Eliges el JDK 6 Update 20.


Después de descargarnos el entorno Java, procederemos a descargarnos la herramienta de desarrollo propiamente dicha (RAD). Para Java existen muchas RAD, una de las primeras, por ejemplo, ha sido Sun One Studio, que es gratuita. Otras son de pago, y bastante caras.Sin embargo existe un IDE completo, gratuito y muy bueno, NetBeans. NetBeans es un Open Source Integrated Development Environment, escrito en Java, usado como plataforma para desarrollar programas en Java. Es decir, con NetBeans no solo podremos desarrollar para J2ME, sino también programas complejos para diferentes entornos y sistemas operativos (Windows, Linux, Mac…) y aplicaciones servidor y cliente. Para  Descargar NetBeans IDE 6.9.1 . Si eres desarrollador cotidiano descarga soporte para todas las tecnologías, recuerda que previamente se debió instalar el JDK.
 


La instalación de todos estos programas dependerá del entorno operativo que poseas. Aquí uso NetBeans IDE 6.9.1 sobre Windows 7. Con NetBeans podrás:

  • Crear un proyecto

  • Ejecutar un proyecto

  • Depurar un proyecto

 Una vez tengas el NetBeans, deberás descargarte, bien desde el propio site de NetBeans, o desde el Forum Nokia o Sony Ericsson, la extensión Mobility Pack para tu móvil.


Con el NetBeans Mobility Pack tendrás capacidad para desarrollar aplicaciones para dispositivos móviles, con características de optimización para el Mobile Information Device Profile (MIDP), y para el Connected Limited Device Configuration (CLDC). Además, integra en nuestro NetBeans características de Visual Mobile Designer
(diseño visual móvil); Wireles Connection Wizards: para acceder fácilmente a servicios vía servlets, con soporte para el estándar JSR-172; Fragmentación de Dispositivos: de modo que puedas desarrollar aplicaciones para ejecutarlas en un dispositivo en concreto; Integración con el J2ME Wireles Toolkit: la herramienta de certificación y desarrollo J2ME, que integra emulación OTA (Over-The-Air), mensaje inalámbrico y APIs multimedia, y WMA emulación para mensajes SMS y CBS. Además, integra un ofuscador (criptógrafo de código), y OTA Download Testing, que emula dicha capacidad sobre un móvil real.

Bueno lo siguiente es la instalación, el archivo que se baja es un archivo que esta comprimido en formato ZIP, este archivo se descomprime, se ejecuta el “setup” y se siguen los pasos indicados y listo se instala el SDK, solo falta integrar la plataforma de Nokia o Sony Ericsson al Netbeans y estaremos listos para realizar nuestro primer programa.

sábado, 20 de febrero de 2010

Arquitectura Móvil con Java Micro Edition J2ME - Parte I

Entremos en materia, este post es dedicado a la Arquitectura Móvil  (Java 2 Micro Edition ) que es simplemente una tecnología avanzada en Java, desarrollada con la ayuda de Java Community Process Program o comunidad Java. JME es una versión reducida del API de Java y Java Virtual Machine que está diseñado para operar dentro de recursos limitados disponibles en ordenadores integrados y microcomputadoras.


J2ME está dirigido a desarrollos para dispositivos wireless y dispositivos digitales limitados que necesitan incorporar la funcionalidad multi-plataforma en sus productos. Un beneficio clave de la utilización de J2ME es la compatibilidad con todos los dispositivos habilitados para Java. Motorola , Nokia, Panasonic todos tienen Java-enabled devices. Una aplicación J2ME que procura el equilibrio de procesos entre el dispositivo local y el server-side.

El Java Community Process Program utiliza dos "enfoques" para abordar las necesidades de los pequeños dispositivos de cómputo.


  1. Configuraciones: Es el entorno Java de tiempo de ejecución y las clases básicas que operan en cada dispositivo. Una configuración define la Java Virtual Machine para un dispositivo informático de recursos limitados. Existen dos configuraciones.
    CLDC para dispositivos de mano: La CLDC (Connected configuración de dispositivos Limited) está diseñado para 16- bits o 32 bits, pequeños dispositivos digitales con memoria limitada. Estos dispositivos suelen tener entre 160 KB y 512 KB de memoria disponible. Por lo general, estos son alimentados por batería. Utilizan una pequeña red de banda ancha sin conexión wireless. Estos dispositivos utiliza una versión reducida de la JVM KJava Virtual Machine (KVM ). Estos dispositivos pueden ser entonces pagers o buscapersonas, asistentes digitales , teléfonos celulares, terminales especializados y cualquier otro dispositivo digital de mano personal.
    CDC para plug-in de dispositivos: CDC ( configuración de dispositivos conectados ) utilizan una arquitectura de 32-bit , por lo menos 2 MB de memoria disponible , y usan una JVM funcional completa. CDC incluyen dispositivos digitales set-top boxes, electrodomésticos, sistemas de navegación, terminales de punto de venta, y teléfonos inteligentes.

  2. Perfiles:Se define para las categorías de pequeños dispositivos digitales. Un perfil se compone de clases que permiten a los desarrolladores implementar características que se encuentran en un grupo relacionado de dispositivos moviles. Lista de perfiles J2ME:

    CLDC se usa con perfiles:
    - Mobile Information Device Profile (MIDP)
    - PDA Profile ( PDAP )

    * CDC  se utiliza con los perfies:
    - Foundation Profile
    - Game Profile
    - Personal Profile
    - Personal Basis Profile
    - RMI Profile
Arquitectura J2ME

Hay 5 capas en la Arquitectura J2ME. Estas son:


  • MIDP ( capa superior ):  Contiene APIs Java para conexiones de red de usuario, almacenamiento persistente , y la interfaz de usuario. También tiene acceso a las bibliotecas CLDC MIDP.

  • J2ME API´s  ( perfiles ): Que consiste en el conjunto mínimo de interfaces de programación de aplicaciones para el dispositivo movil.

  • Configuraciones: Que se ocupa de las interacciones entre el perfil y la JVM.

  • JVM

  • Sistema operativo ( capa inferior ) .
1,2 y 3 son capas de software.

Por ahora no vale explicar mucha teoría antes de empezar a diseñar, ya que esta teoría es basada en conceptos abstractos que difícilmente se pueden entender sin experimentar y a riesgo de parecer salirme de los fundamentos de la arquitectura del software que debe indicar la estructura, funcionamiento e interacción entre las partes de este tipo de aplicaciones, uno de los pilares de este blog; se podría decir que es necesario apelar a los dogmas de fe para superar esta etapa, tal como si de una religión se tratara, y después en post más avanzados explicar estos dogmas. Por tanto me propongo como método didáctico la construcción de sencillas aplicaciones que en su momento cimentaran en detalle los conceptos de la Arquitectura.

domingo, 24 de enero de 2010

¿Te puedes imaginar la vida sin tu teléfono celular?

A penas hace unos pocos años, la vida en el año 1999 a. C. - Antes del Celular - es difícil de imaginar. Más que un dispositivo para juegos "Bejeweled", los teléfonos celulares se han convertido en una herramienta esencial para la comunicación en el mundo moderno de hoy. Gracias a la mensajería de texto, correo electrónico e incluso el “narcisismo” de Facebook y Twitter (esto seguro para una nueva entrada) ahora se utilizan como medios de comunicación vital, la vida sin un teléfono celular parece poco más que imaginarse al hijo cavernícola que llega a la cueva, le da las calificaciones al padre que las lee detenidamente a la luz de la hoguera y al rato dice:
- Mira, que repruebes caza lo comprendo, porque eres pequeño y todavía no puedes con la lanza, que repruebes agricultura te lo pasó, porque es jartisimo y al principio cuesta trabajo, que repruebes pintura rupestre te lo perdono porque todavía eres pequeño y no coordinas, PERO QUE REPRUEBES HISTORIA... NO ME JODAS!! ¡¡SI NO LLEVAMOS NI DOS PAGINAS!!. – un mal chiste -. Pero incluso con la mayor comodidad y facilidad que un teléfono celular trae , The New York Times nos presenta algunos estudios no muy optimistas acerca del uso de estos dispositivos:

- " Los científicos dicen que hacer juegos digitales, el correo electrónico , las conversaciones por celular y la información que llega por medios digitales puede cambiar cómo la gente piensa y se comporta. Se dice que nuestra capacidad de concentración está siendo socavada por las explosiones de la información”.

- " Un estudio de la Universidad de California en Irvine, encontró que la gente que fue interrumpida por un E-mail reportaron significativamente mayor estrés en comparación con los que no tienen esa distracción. "

- " Los investigadores temen que la estimulación digital constante crea problemas de atención para niños con cerebros que aún están en desarrollo, y que ya luchan para establecer prioridades y controlar los impulsos. "

-" Aunque la mayoría de los americanos dicen que los dispositivos han hecho su vida mejor y más fácil su trabajo, algunos dicen que ha sido intrusivo, aumenta sus niveles de estrés y hace difícil concentrarse. Las personas más jóvenes se ven especialmente afectados: casi el 30 por ciento de los menores de 45 dicen que el uso de estos dispositivos hace más difícil concentrarse, mientras que menos del 10 por ciento de usuarios de más edad opinan igual. ”

- " El timbre de llamadas entrantes de mensajes o correo electrónico pueden reemplazar el escribir un plan de negocios o jugar pelota con los niños, 1 de cada 10 de los encuestados dejaron de pasar mas tiempo con sus hijos menores de 18 años. "

Sin embargo, a pesar de sus efectos posiblemente adversos, este “ apéndice electrónico" es ahora tan vital para la vida como la salud del corazón. Usted podría sobrevivir sin un brazo o una pierna, pero sin teléfono celular de ninguna manera. La mayoría de nosotros vivíamos libres de teléfono celular apenas hace una década pero hoy en día, algunos escuchamos el " ping "de los textos entrantes en sueños. Hemos sido seducidos por el Top 40 tonos de llamada y la promesa de una vida más fácil y más conveniente, sólo para convertirnos en adictos a la cultura de la telefonía móvil y algunos ni siquiera los ponen en modo vibración mientras mantiene relaciones sexuales ( Sabemos que Laura Acuña no es la única. ). Aún así existencia completamente libre de teléfonos celulares puede no ser realista para todo el mundo, incluso dos de los individuos más ricos del mundo - Warren Buffett y Mikhail Prokho rov, el empresario ruso y dueño de Nueva Jersey Nets - afirman que "No tener un teléfono celular es una forma de controlar que el mundo se ejecute a su tiempo”.

Con esto quiero incitar a los lectores a que antes de empezar con el desafío de la Arquitectura Móvil Micro Edition que vendrá en mis próximas entradas, dejen sus dispositivos móviles apagados por un fin de semana y disfruten de unos cuantos momentos felices, menos estresados y compartiendo horas con sus seres queridos. No olviden dejar un comentario acerca de sus experiencias.