La semana pasada el Java Community Process, el organismo que crea y mantiene las especificaciones (JSR) que definen la plataforma Java estrenó una nueva web y, lo que es más importante, una nueva normativa. Se ha actualizado a la versión 2.7, cuyas novedades se resumen aquí.

En general, las novedades tratan de incrementar la transparencia en el funcionamiento de este organismo. A partir de esta versión del JCP, los grupos de expertos deben indicar de un modo perfectamente claro los términos de la licencia para la especificación, para la implementación de referencia y para el test de compatibilidad. Se desaconseja los grupos de expertos que manejen documentación “confidencial”, o que empleen mecanismos de comunicación internos no públicos, y se les incentiva a responder a cualquier duda o comentario que la comunidad realice acerca de su trabajo.

Publicado en Noticias | Sin comentarios »

Desde el pasado día 24, está disponible Galileo, la versión 3.5 de Eclipse con importantes novedades.

Publicado en Noticias | Sin comentarios »

Magnolia CMS 4.1

29 de Junio de 2009

Magnolia ha liberado la versión 4.1 de su CMS basado en Java, la cual simplifica aún más la creación de sitios web empresariales ahora que se le han añadido varías plantillas para soluciones personalizadas a sus extensas funcionalidades integradas por defecto. El Standard Templating Kit incluye ademas una sofisticada lógica para exhibir eventos, calendarios, foros, glosarios, preguntas frecuentes (FAQ), anuncios con varias imágenes, nubes de categorías, fusión de flujos RSS y más. Magnolia 4.1 también viene con nuevas funcionalidades como el soporte para Contenigo Generado por el Usuario (UGC), un motor de transformación de imágenes, y una gestión de Activos Digitales de tipo pluggin (DAM).

El Standard Templating Kit ha sido mejorado para Magnolia 4.1. Incluye nuevas plantillas listas para ser utilizadas de manera a generar paginas web completas, así como nuevos párrafos que generan solo partes de las páginas:

Nuevas plantillas

  • Plantilla de descripción de Noticias
  • Plantilla de descripción de Eventos
  • Plantilla de descripción de Categoría
  • Plantillas de Glossario, Letra y Termino
  • Plantilla de preguntas frecuentes (FAQ)

Nuevas plantillas de párrafos

  • Elementos destacados & carrusel
  • Comentarios
  • Foro
  • Fusión de RSS
  • Nube de Categoria
  • Detalles de Contacto del anuario
Publicado en Noticias | Sin comentarios »

Las excepciones de tipo NullPointer son las causas de excepción en tiempo de ejecución más comunes.

Todos los valores en Java, excepto las primitivas, son referencias a objetos y todos tienen un valor por defecto, el valor null, que indica que el objeto no tiene asignado ningún valor. A un objeto con valor null, no inicializado, que no referencia ningún objeto, no se le puede aplicar ningún método, siendo el resultado el lanzamiento de una excepción de tipo NullPointerException

Una excepción de tipo NullPointerException lleva asociada la información de la línea de código donde se produjo el error. El mecanismo para detectar y corregir el error es directamente ir a esta línea de código y averiguar cuál de los objetos involucrados en la operación es el que no ha sido inicializado. Una vez detectado, será necesario inicializar el valor del objeto, pero siempre teniendo cuidado de no hacerlo para simplemente eliminar el error, sino que se le debe asignar un valor acorde con la lógica propia del programa.

 
class Casa{
private long precio;
 
public Casa (long precio){
this.precio = precio;
}
 
public long getPrecio(){
return precio;
}
 
public class Vender {
 
private Casa casa;
 
public static void main(String[] args){
 
Vender vender = new Vender();
System.out.println(vender.casa.getPrecio());
}
}

Obviamente al ejecutar este ejemplo, se producirá un error indicando la línea concreta del error, y revisando esta línea se puede ver que la casa no está inicializada, y al no tener una referencia de la misma no se puede operar sobre el objeto y se lanzará la excepción NullPointerException.

Por ejemplo, el error se podría corregir inicializando el objeto casa incluido en el objeto Vender.

private Casa casa = new Casa(100000);

Oracle adquiere Sun. Esta noticia afecta de pleno al mundo Java.

¿cómo afectará el hecho de que una empresa con productos con licencias de pago tome el control de otra, Sun, que había apostado por las licencias Open Source (aunque a su particular modo)?

Desde que saltó la noticia, los comentarios la misma ha inundado en el universo de los bloggers dedicados al desarrollo de Java. La realidad y la profundidad de los cambios los descubriremos en los próximos meses.

Publicado en Noticias | Sin comentarios »

En esta entrada os mostraremos cómo enviar sms desde una aplicación Java. Seguro que esta funcionalidad os la ha pedido algún cliente que quería integrar directamente en vuestra aplicación la posibilidad de enviar un sms en alguna situación como comunicarse con sus propios clientes, enviar una alerta en determinadas ocasiones, etc…

Lo primero es encontrar un proveedor que permita el envío de sms mediante una conexión a su servidor. Puede que existan aún aquellas páginas donde era gratuito enviar un sms. Sin embargo la fiabilidad de entrega de estos proveedores, unido a que sólo permiten enviar a través de una página web y no desde un programa java y que suelen estár asociados al envío de publicidad no hacen de esta solución una solución aceptable.

Un proveedor de sms sirve de intermediario entre nuestra aplicación Java y los operadores de telefonía móvil. La misión del programa Java será por tanto conectarse de algún modo al proveedor elegido (HTTP, SMTP…) y pasarle los datos del sms en algún formato (con los propios parámetros de HTTP, con un xml…).

Después de buscar entre varios proveedores, nos hemos quedado con la pasarela de envío de sms de Altiria. El envío de sms se realiza con este proveedor mediante una petición POST a su servidor con los datos del sms que se quiere enviar como parámetros de la propia petición, siendo los más importantes el contenido del sms y los destinatarios. Se puede encontrar el documento de especificaciones de la conexión también en su web (Documento de especificaciones).

Queremos resaltar que el para que el ejemplo que ponemos a continuación funcione y envíe un sms, es necesario ponerse en contacto con Altiria y contratar un bono de envío de sms que permita la conexión a su pasarela de envío. El ejemplo sirve para ilustrar lo fácil que sería el envío del sms una vez contratado el bono.

Ya tenemos el proveedor y el mecanismo de envío (HTTP). Ya sólo queda implementar esta conexión HTTP en nuestro programa Java. Para ello necesitamos un cliente HTTP para realizar la conexión. Hemos elegido la librería HTTP de Jakarta, (HttpClient) que debe estar presente en el classpath de nuestra aplicación. El siguiente código realiza la conexión enviando los parámetros del sms.

//Se inicia el objeto HTTP
HttpClient client = new HttpClient();
client.setStrictMode(true);
//Se fija el tiempo máximo de espera de la respuesta del servidor
client.setTimeout(60000);
//Se fija el tiempo máximo de espera para conectar con el servidor
client.setConnectionTimeout(5000);
PostMethod post = null;
//Se fija la URL sobre la que enviar la petición POST
 
//Como ejemplo se supone www.pasarela_push_altiria.com/post/sms
post = new PostMethod("http://www.pasarela_push_altiria.com/post/sms");
 
//Se fija la codificación de caracteres en la cabecera de la petición
post.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
 
//Se crea la lista de parámetros a enviar en la petición POST
NameValuePair[] parametersList = new NameValuePair[3];
parametersList[0] = new NameValuePair("dest", "34600111222");
parametersList[1] = new NameValuePair("dest", "34600111333");
parametersList[2] = new NameValuePair("msg", "Mensaje de prueba");
 
//Se rellena el cuerpo de la petición POST con los parámetros
post.setRequestBody(parametersList);
int httpstatus = 0;
String response = null;
 
try {
//Se envía la petición
httpstatus = client.executeMethod(post);
//Se consigue la respuesta
response = post.getResponseBodyAsString();
}
catch (Exception e) {
//Habrá que prever la captura de excepciones
return;
}
finally {
//En cualquier caso se cierra la conexión
post.releaseConnection();
}
 
//Habrá que prever posibles errores en la respuesta del servidor
if (httpStatus!=200){
return;
}
else {
//Se procesa la respuesta capturada en la cadena ‘‘response’’
}

Este código se traduce en el envío de un sms con el texto “Mensaje de Prueba” a los móviles 34600111222 y 34600111333.

Publicado en Artículos | 2 Comentario »

De manera a poder dirigirse de manera más directa y concreta al mercado hispano, Magnolia International Ltd. ha sacado hoy su sitio web totalmente en castellano (http://www.magnolia-cms.com/es/home.html), en él se pueden encontrar todas las informaciones en cuanto al CMS Java Opensource más intuitivo y fácil de utilizar del mercado, de hecho el lema de Magnolia “Simple is Beautiful” es un lema que los desarrolladores y jefes de producto en Magnolia siempre han tenido en cuenta al momento de desarrollar nuevas funcionalidades dentro de Magnolia, no es suficiente que Magnolia sea capaz de hacer una tarea propia a un CMS, sino que lo hace de manera sencilla y elegante. Al mismo tiempo Magnolia anuncia las dos últimas novedades:

El lanzamiento de Magnolia On Air(http://www.magnolia-cms.com/es/home/products/onair.html) el producto Magnolia que cumple con la necesidad de los medios modernos de comunicación de capturar, readaptar y publicar contenidos rápidamente en la web. La producción continua de flujo de trabajo reduce significativamente los costos, lleva contenido rico en medios a la web primero e invita a la participación de la comunidad.

El lanzamiento de la nueva versión 4.0(http://www.magnolia-cms.com/es/home/4-0.html) la cual cuenta entre otras cosas la integración total de las plantillas de tipo FreeMarker y eso a nivel de repositorio, las plantillas Magnolia no son más que otro contenido dentro del repositorio, se pueden validar, versionar, replicar a varias instancias, exportar e importar. Otra novedad más es la integración del Standard Template Kit STK, el cual es todo un sitio montado con las últimas novedades de Magnolia y que da un ejemplo de las mejores prácticas de desarrollo a seguir al momento de desarrollar con Magnolia 4.0

Publicado en Noticias | Sin comentarios »

YourKit Java Profiler 8.0

19 de Febrero de 2009

Ya está disponible la versión 8.0 de YourKit Java Profiler.

Esta herramienta (Profiler) permite hacer un análisis exhaustivo de las aplicaciones Java en memoria y tiempo de CPU. De muy fácil utilización, permite detectar fugas de memoria en las aplicaciones Java.

La nueva versión ofrece una vista de las clases agrupadas por classloaders, una vista mejorada de las clases en memoria y los objetos retenidos así como también una mejora en la telemetría y tiempo de CPU en ejecución de las clases implicadas.

Nosotros hemos probado la aplicación y nos ha servido para detectar y corregir varias fugas de memoria en nuestra aplicación y también en algunas de las librerías de terceros utilizadas.

El único inconveniente de este software es que es de pago, aunque existen licencias para usos académicos y proyectos de software libre.

Publicado en Noticias | Sin comentarios »

Swan es un framework y serie de herramientas para facilitar el desarrollo de aplicaciones enriquecidas web con Ajax y Java. Swan fue desarrollada por un equipo de programadores en Mexico que prtenecen a ObjectWave Corp. Esta herramienta permite que programadores, aun sin experiencia con ajax, puedan facilmente crear una aplicacion de principio a fin integrando el cliente (browser) con el servidor (Java).

Con Swan puedes ahorrarte hasta un 80% del trabajo necesario para agregar funcionalidad de Ajax en tu aplicacion web de Java. Swan no requiere de tag libraries especializadas y es muy facil de aprender. Las herramientas de Swan se pueden agregar como plugins para Eclipe.

Visita el site de Swan para aprender mas al respecto

Publicado en Noticias | Sin comentarios »

Apache Jackrabbit 1.5

11 de Diciembre de 2008

Apache Jackrabbit es un servidor para gestión de documentos que implementa JCR: Java Content Repository (JSR 170) y además lo extiende para añadir funcionalidades necesarias para administrar contenidos. Este proyecto inició en 2002 y el equipo de desarrollo ha seguido mejorándolo.

Entre los cambios más importantes de esta nueva versión, según lo comentó Jukka Zitting uno de los desarrolladores en su blog, están:

  • El componente standalone del servidor Jackrabbit. Un simple jar que permite levantar un servidor Jackrabbit con WebDav de forma muy sencilla (tan simple como ejecutar un java -jar).
  • Mejoras al desempeño de los queries con XPath.
  • Soporte para queries con sintaxis GQL o Google Query Language. Este lenguaje se usa en AppEngine para crear quieres contra BigTable, ahora Jackrabbit lo soporta y lo traduce a expresiones XPath.
  • Se ha mejorado el soporte a transacciones.
  • Creación de workspace clusterizados. Los workspaces creados en un nodo, se replican automáticamente en todos los nodos del clúster.
  • Se han incorporado nuevas características de JCR 2.0, el JSR-283. Una especificación aún no terminada pero que ya se está soportando paulatinamente en esta herramienta.
Publicado en Noticias | Sin comentarios »