Lo nuevo de concurrencia en Java 7


Hoy me bajé la versión final de Java 7 cosa que tenía rato pendiente. Una de las características que más me interesaban de esta versión es el nuevo framework para la solución de problemas con múltiples hilos.
Básicamente lo que uno se ahorra es la creación y sincronización de hilos. De verdad que uno termina escribiendo menos código.

Se soporta la estrategia "divide y vencerás" con tareas recursivas. Se ofrecen dos: una que no devuelve resultados RecursiveAction y otra que sí RecursiveTask. Nuestra clase deberá recibir en su constructor su instancia del problema. El método compute() debe implementar la solución al problema incluido la división del problema con nuevas instancias de la misma clase.

Para probarlo escribí mi propia versión del MergeSort con un main() donde hago el proceso sobre 20millones de long. Por defecto usará tantos hilos como procesadores disponibles se tenga en el computador. Se puede cambiar esto pasando la cantidad de hilos deseada al constructor de ForkJoinPool.

En mi laptop ya vieja con un triste AMD Tk-55 dual core se ejecuta en 9276ms. ¡Pruebalo!



JavaFX se hunde junto con Windows

Hace tiempo que vengo observando la evolución de JavaFX y de vez en cuando entro a ver si veo algo que me anime a bajarlo y ver qué tal funciona.
Entonces resulta que sacan la versión 2.0 de JavaFX que entre otras cosas elimina el lenguaje de script que se venía usando en versiones 1.x. Esta versión está publicada en la página y por ahí leí que había acceso a versiones Beta para diversas plataformas. De vez en cuando reviso si ya tienen una para Linux estable.
Hoy me consigo por casualidad con el FAQ oficial y el texto que para mi termina de sepultar todo rastro de JavaFx para mi:


5. What operating systems are supported by JavaFX?


JavaFX 2.0 will be fully supported on 32-bit and 64-bit versions of Microsoft Windows XP, Windows Vista, and Windows 7. Early Access versions of JavaFX 2.x for Mac OS and Linux will be made available at a later date, but support for these platforms will not be included as part of the JavaFX 2.0 final release.
No digo más nada...

¿Dominará JavaScript la escena de las "Apps"?

Últimamente veo que todo se quiere hacer con HTML+CSS+JavaScript. Es como se cediera ante la enorme oferta de personal preparado en la herramienta.

¿A qué me refiero?

  • RIA: aplicaciones de Internet "enriquecidas". Son un concepto de interacción con aplicaciones Web al nivel de las aplicaciones de escritorio. Tradicionalmente hechas en Flash o Java Applets hoy en día las vemos desarrolladas en cosas como
    • AJAX: Un concepto que consiste en que una página base utiliza JavaScript para conectarse al servidor y bajar el resto de los datos agregando elementos al HTML de la página base
    • jQuery: Una de las más populares bibliotecas JavaScript para trabajar con AJAX
    • Adobe Air: Una plataforma de Adobe donde se hacen las App de escritorio entre otras cosas con HTML y JavaScript 
  • Aplicaciones para Blackberry: se desarrollan sobre un API basado en Java Mobile Edition (JME). Luego sacaron el Widget SDK que actualmente se llama WebWorks. No es más que un kit para desarrollar aplicaciones para Blackberry usando HTML+CSS+JavaScript
  • Juegos: el nuevo standard HTML5 ofrece tags para la reproducción directa de elementos multimedia como audio y video. También incluye un "Canvas" o lienzo donde las aplicaciones JavaScript pueden dibujar libremente incluso con aceleración de hardware. ¿Lo pone en duda? mire esto
  • Desarrollo de aplicaciones móviles multiplataforma: todos llegamos a soñar con que JME, QT, o incluso más recientemente JavaFx nos permitieran escribir una aplicación móvil y poder instalarla en diversas plataformas móviles. En la actualidad varias herramientas lo han logrado pero con HTML+CSS+JavaScript. Ejemplos de esto son PhoneGap, RhoMobile y WorkLight.
  • Aplicaciones móviles nativas vs. Aplicaciones Web diseñadas para móviles: está planteada la controversia si el futuro de las App móviles va a las nativas o a las Web. La misma Apple que posee una enorrme tienda de aplicaciones ahora también tiene un directorio de aplicaciones Web diseñadas para el iPhone que está creciendo. La polémica gira en torno a: ¿Si ya las plataformas basadas en HTML5+CSS3+JavaScript me ofrecen todo lo que necesito qué gano con hacerla una aplicación nativa?. Dependiendo de la aplicación la respuesta podría ser "nada" pero con el pasar del tiempo nuevas herramientas van saliendo que estrechan la brecha
En conclusión vayan y estudien bastante HTML5, CSS y JavaScript por si acaso...

Actualización: no sabía de la herramienta de Adobe para transformar clips flash en archivos HTML. El proyecto se llama Wallaby

    Ser padre

    Por muchos años estuve pensando en eso. Siempre decía frases como "cuando tenga hijos les enseñaré todo sobre videojuegos". Hay ciertos valores en mi familia de los que estoy muy orgulloso y siempre he tenido la visión de transmitirlo a mis hijos. Ahora estamos en la espera de un hijo y a estas alturas aún no sabemos si será varón o hembra. Lo cierto es que le recibiremos con mucho amor venga lo que venga porque eso es relago de dios. Una misión para nosotros los padres.

    No ha nacido y ya me siento como un padre porque desde ya estamos pendientes de su bienestar en su desarrollo en el vientre de su mami. Son tantos los detalles que he aprendido que ya perdí la cuenta. Se podría decir que era un absoluto ignorante de los cuidados que se debe tener con la mujer embrazada.

    Hay gente que es pesimista en tener hijos porque "este mundo no vale la pena". En mi caso estoy ilusionado por traer niños a este mundo y enseñarles lo bueno y lo malo, el amor y el odio, windows y linux.... Ups.... Jajajajajaja

    Me siento preparado para este nuevo reto y sólo queda esperar.

    La salud ocular y las pantallas

    Cada día es más común que la gente cumpla jornadas laborales enteras frente al computador.
    En mi caso comenzó en el año 2005 cuando en menos de 12 meses ya tenía que usar lentes por primera vez en mi vida.
    El deterioro no hace otra cosa que avanzar. Hace un par de semanas que se me está cansando mucho la vista y todo apunta a que me toca aumentar la fórmula de mis lentes.

    ¿será que terminaré con "culos de botella"? Espero que no!!!! BlogBooster-The most productive way for mobile blogging. BlogBooster is a multi-service blog editor for iPhone, Android, WebOs and your desktop