Recursos JNI

En DeveloperWorks podéis acceder a un grupo de recursos JNI que van desde:

· Qué ofrece JNI

· Primeros pasos con JNI

· Usando JNI en Sistemas UNIX y Linux

· Usando IBM i

JQuery Mobile 1.0

Acaba de publicarse la versión 1.0 de JQuery Mobile , esta versión lleva más de un año de desarrollo.

JQuery Mobile es la librería Javascript para dispositivos móviles más usada.

JQuery Mobile soporta la mayoría de las plataformas móviles. Usa un nivel de soporte de 3 niveles: A (Full), B (Full sin AJAX) y C (basic).

Podéis acceder a sus demos aquí y a sus tutoriales aquí.

La Informática en 1979

A través de

He visto este reportaje sin desperdicio :)

Inquietante el flequillo ochentero, bueno algunos aún lo mantienen :)

Foro de Arquitectos – Aplicaciones Empresariales en Windows Azure.

msarquitecture_top.gif WinAzure_h_w.png pb.png

13/15 de Diciembre de 2011

msarquitecture.jpg
Foro de Arquitectos – Aplicaciones Empresariales en Windows Azure

(Barcelona 13 de Diciembre de 2011)

(Madrid 15 de Diciembre de 2011)

Descubra como implementar escenarios de aplicaciones empresariales reales en la plataforma de nube PaaS de Microsoft: Windows Azure.

Analizaremos escenarios ‘Multi-Organización’, propagación de credenciales corporativas Windows Active Directory a la nube de Windows Azure, así como experiencias reales de pruebas de carga, monitorización, y optimización de aplicaciones reales en Windows Azure, gracias a la participación de empresas que ya han migrado sus propios productos y aplicaciones reales a Windows Azure.

Inscríbase en:

BARCELONA (13/12/11)

register.gif

MADRID (15/12/11)

register.gif

o llamando al teléfono 902 197 198

Dónde:

Barcelona: Hotel Barceló Sants,
Placa del Paisos Catalans, s/n
Barcelona

Madrid: Hotel Meliá Avda. America
Juan Ignacio Luca de Tena, 36
Madrid 28027

Cuándo:

Barcelona:13/12/2011 Madrid: 15/12/2011

Horario: 9:30 a 18:00

Agenda
Hora Descripción Ponentes
9:30-10:00 Registro
10:00-10:15 Presentación del evento César de la Torre
Microsoft
10:15-11:00 Securización de aplicaciones en Windows Azure:

Propagación de credenciales AD mediante ADFS 2.0 y Access-Control de Windows Azure

Plain Concepts
11:00-11:30 Café (Catering Microsoft)
11:30-12:55 Aplicaciones Multi-tenant (multi-organización) en Windows Azure Microsoft
13:00-13:55 Proyecto de despliegue de la Solución ‘ Panda Cloud Protection ‘ en Windows Azure y Pruebas de Carga realizadas con Visual Studio 2010 sobre Windows Azure . Panda Security
14:00-15:25 Tiempo Comida
15:30-16:25 Desplegando Aplicaciones Java y Servidores de Aplicación no Microsoft, en Windows Azure Ilitia
16:30-17:25 Optimizaciones de aplicaciones en Windows Azure (Cache, rendimiento, escalabilidad y latencia).

- Caso real sobre la optimización de Softeng PortalBuilder en Windows Azure .

Softeng

RTFTemplate: definiendo plantillas en RTF

RTFTemplate es un motor de plantillas que permite definer las plantillas en RTF y generar RTF.

Cunfionc haciendo un merge del modelo RTF (Template) con los objetos Java (Context) pasados.

Por ejemplo:

Para esta plantilla:

Me genera:

Publicado en Java, Librerías. 2 Comments »

Adobe anuncia que abandona/cede Flex

Bufffffff!!!!

Una semana después de haber anunciado que no continuaría desarrollando Flash para dispositivos móviles, Adobe anuncia que va a donar el Flex SDK y BlazeDS a la Apache Software Foundation.

Esta noticia ha levantado quejas, críticas y sobre todo miedo por parte de los usuarios de Flex que creen que Adobe abandona la tecnología.

Por eso Adobe ha explicado con más detalle la noticia y si les hacemos caso es un movimiento hacia el mundo open-source más que un abandono:

· ¿Seguirá Adobe impulsando Flex? Sí, el proyecto en Apache será liderado por el equipo de Flex SDK.

· ¿Recomienda Adobe HTML5 o Flex? A largo plazo HTML5 será la mejor tecnología. En la actualidad Flex tiene claros beneficios sobre HTML5 para proyectos grandes…

· ¿Seguirá Adobe con Flash Builder?

· ¿Dará soporte Adobe a los clients de Flex?

Mi opinión, que como en otros muchos casos, va contracorriente, es que es un movimiento inteligente de Adobe para poder evolucionar más rápido Flex.

El modelo que proponen ya se usa en otras muchas compañías, de hecho a mí me recuerda al movimiento Eclipse, cuando IBM donó su IDE completo a la comunidad…con esto consiguió convertirse en el estándar y no relacionarlo con una compañía comercial.

Espero sinceramente no equivocarme, a mi Flex me parece una tecnología muy interesante para un gran número de proyectos.

Trabajando con Aspectos y Anotaciones con Spring

Preparado por Miguel Angel Madrigal :)

Spring simplifica el trabajo con AOP a través del framework AOP AspectJ.

A continuación se describe un pequeño ejemplo para ilustrar su uso en un caso típico. En el ejemplo veremos cómo hacer que un método de negocio decorado con una anotación @Trazable genere una traza informando de la duración de la invocación del método.

  1. Creación de la anotación

En primer lugar definiremos en nuestro proyecto una anotación sencilla, que usaremos posteriormente para indicar que un determinado método va a ser trazable. Es importante que definamos la anotación de modo que esté disponible en tiempo de ejecución:

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface Trazable {

}

Para el caso de nuestro ejemplo no definiremos ningún atributo en la anotación, aunque en un caso general es perfectamente posible.

Observamos que nuestra anotación está, a su vez, decorada con la anotación @Retention, que nos permite establecer la política de retención. El valor indicado RetentionPolicy.RUNTIME indica que la metainformación que representa nuestra anotación estará disponible en tiempo de ejecución.

La anotación @Target sirve para indicar qué tipo de estructuras van a poder decorarse con nuestra anotación. El valor ElementType.METHOD indica que nuestra anotación únicamente puede aplicarse a métodos.

  1. Creación de un bean de negocio que utilice la anotación

A continuación, y para que resulte más fácil comprender los conceptos, crearemos un bean de negocio con un método decorado con la anotación @Trazable.

@Component

public class BeanTrazable {

@Trazable

public void metodoTrazable() {

try {

Thread.sleep(1000);

} catch ( InterruptedException e ) {}

}

}

Observamos que hemos decorado la clase con @Component para indicar que esta clase deberá ser desplegada en Spring como un bean. La clase dispone de un método metodoTrazable, decorado con nuestra anotación @Trazable. El método simplemente introduce una espera de un segundo.

  1. Creación del aspecto

A continuación vamos a crear un aspecto que controle la invocación de los métodos que anotemos como @Trazable. Para ello creamos una clase AspectoTrazable, y la anotamos como @Aspect.

@Aspect

public class AspectoTrazable {

private static final Log log = LogFactory.getLog(AspectoTrazable.class);

@Around("execution(* *(..)) && @annotation(trazable)")

public Object trazar(ProceedingJoinPoint pjp, Trazable trazable) throws Throwable {

long instanteInicial = System.currentTimeMillis();

Object resultado = null;

Throwable throwable = null;

try {

resultado = pjp.proceed();

} catch ( Throwable t ) {

throwable = t;

}

long instanteFinal = System.currentTimeMillis();

log.info("Invocacion de metodo: " + pjp.getSignature() + ", duracion: " + (instanteFinal – instanteInicial));

if ( throwable == null ) return resultado;

throw throwable;

}

}

Observamos que se define un método trazar , que está decorado con la anotación @Around. Esta anotación indica dos cosas:

  • Mediante el valor "execution(* *(..)) && @annotation(trazable)" que contiene, estamos indicando que nuestro aspecto aplicará en la ejecución de cualquier clase y método que contenga una anotación cuyo tipo de datos es el del parámetro de nombre ‘trazable’ en nuestro método. En este caso, este parámetro trazable será del tipo Trazable, la anotación que definimos anteriormente.
  • Que la lógica que vamos a definir en nuestro método trazar queremos que aplique antes y después de la ejecución de los métodos decorados con @Trazable.

El método dispone de dos argumentos. El primero de ellos es un ProceedingJoinPoint, que representa el punto en nuestro código en el que se introducirán las acciones llevadas a cabo por el aspecto que estamos definiendo, esto es, todos y cada uno de los métodos decorados con @Trazable que se definan. En el caso de nuestro ejemplo sólo hay un único caso, de modo que representará al método metodoTrazable de la clase BeanTrazable.

El segundo de ellos es la instancia de Trazable que decore al método trazable concreto que se esté ejecutando cuando aplique nuestro aspecto. En el caso de nuestro ejemplo, sería la anotación del método metodoTrazable de la clase BeanTrazable. Si la anotación tuviera atributos, veríamos aquí sus valores concretos para el método metodoTrazable.

La implementación del método trazar sigue los siguientes tres pasos:

  • En primer lugar, tomamos una medida del instante inicial en que se produce la invocación.
  • A continuación usamos el objeto ProceedingJoinPoint que recibimos como argumento para propagar la invocación. Cuando hacemos esto, lo que está sucediendo en realidad es que comenzará la ejecución del método decorado con @Trazable. En el caso concreto de nuestro ejemplo, se comenzaría a ejecutar el método metodoTrazable de la clase BeanTrazable, con lo que comenzaría la espera de un segundo. Guardamos el resultado de la invocación y el posible Throwable que pueda lanzarse en la ejecución del método decorado con @Trazable.
  • Después de la invocación del método sobre el que aplica el aspecto, éste recupera el control para tomar una medida del instante final, y a continuación generar una traza informando del nombre del método decorado con @Trazable, así como de la duración de la invocación.
  • Finalmente, se retorna el resultado o excepción que guardamos previamente.
  1. Creación de un test para verlo en funcionamiento

A continuación vamos a crear un test para ver en funcionamiento el aspecto que acabamos de confeccionar:

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath:/META-INF/spring/applicationContext.xml")

public class TestAspectoTrazable {

@Autowired

private BeanTrazable beanTrazable;

@Test

public void test() {

beanTrazable.metodoTrazable();

}

}

Observamos que el test recibe una instancia de nuestro BeanTrazable, y a continuación define un método test que simplemente invoca el método metodoTrazable. Si ejecutamos el test y observamos las trazas que genera, veremos cómo el aspecto ha escrito la traza con la duración de la invocación:

16/11/2011 12:07:57.754 INFO main [AspectoTrazable.metodoTrazable_aroundBody1$advice:30] Invocacion de metodo: void com.bbva.arq.front.spring.demo.aspectos.BeanTrazable.metodoTrazable(), duracion: 1000

HighCharts: Charts en Javascript

Highcharts es una librería Javascript basada en JQuery para generar todo tipo de Charts.

Estos gráficos en puro Javascript son interactivos

Soporta gráficos de línea, área, columnas, tartas,…

Es compatible con los navegadores actuales incluidos iOS e IE 6. En los navegadores actuales se usa SVG para renderizar.

Es una versión libre para aplicaciones no comerciales y con un coste de 80$ por aplicación web que lo usa (también hay licencias por empresa o por desarrollador).

Podéis ver las características aquí aunque para convenceros lo mejor es que veáis los ejemplos, impresionan :)

Podéis ver otras librerías y compararlas aquí.

Eclipse presenta Xtend

Eclipse ha lanzado Xtend, un lenguaje basado en Java. Ya está disponible una web para descubrir más detalles y descargar el sdk necesario. Sólo funciona en conjunción con Eclipse IDE.

Uno de los puntos fuertes de Xtend es que reduce la cantidad de código necesario: elimina toda la parte redundante como declarar algunas variables intermedias, bucles o definición de las variables de retorno en los métodos. También se convierte en opcional el uso de getter y setter para acceder a los atributos o no tener que poner paréntesis en la invocación de métodos que no reciben parámetros.

Además, se ha implementado el uso de clousures (una de las características más demandadas de Java), el uso de template expressions con lo que podremos concatenar strings de forma más potente o extender tipos usando métodos de extensión que permiten añadir nuevos métodos.

Xtend compila a código java legible. Es decir, en lugar de generar bytecode directamente: xtend pasa el código .xtend a otro fichero .java con la sintaxis habitual de java. Xtend está desarrollada y diseñado para Eclipse así que dentro del IDE se dispondrá de una serie de plugins para facilitar la implementación usando el lenguaje.

Para poder empezar a usar Xtend es necesario disponer de Eclipse IDE.

Para saber más: http://www.eclipse.org/Xtext/xtend/

Comparando Frameworks Web Java

Como todos los años desde hace el 2006 desde nos ayuda a elegir un framework Web:

Como resumen:

Si además le damos un peso a cada uno de los criterios (por ejemplo no le damos importancia al número de libros publicados) tenemos:

En el caso de Spring MVC coincido 100% en las conclusiones:

Podéis acceder al informe completo aquí.

Publicado en Frameworks, Java, Web. 2 Comments »
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 408 seguidores

%d personas les gusta esto: