Translate

jueves, 17 de noviembre de 2011

Typesafe incluye a play en su Stack


Typesafe le empresa formada a raíz de Scala anuncio que agregara a play 2.0 a su stack.  Stack de typesafe es una plataforma que permite desarrollar software con scala teniendo a Akka como midleware. Bueno este stack va a tener a play como plataforma para desarrollo web. Recordemos que play es un framework para desarrollo ágil en Java y Scala (a partir de la versión 2.0).

El framework play va podes ser usado tanto en Java como en scala.

 Dejo links:

http://typesafe.com/stack
http://typesafe.com/company/news/15856
http://blog.typesafe.com/typesafe-stack-adds-play-framework
http://typesafe.com/technology/play

Libro Gratuito de Scala!

Typesafe nos regala un libro sobre scala!!

Dejo el link: http://typesafe.com/resources/scala-for-the-impatient

miércoles, 16 de noviembre de 2011

Me la venia venir

Increíble leo en javahispano que adobe abandona Flex!!

"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 ya ha despertado múltiples críticas y quejas por parte de los usuarios de Flex, que por lo general no están en absoluto contentos con un movimiento que ven como un abandono de Flex."


Para mi esto significa el fin de RIA basada en plugins y un comienzo de Ria basada en HTML 5 y Javascript. Después que ie 10 anuncie que no soportara plugines era cuestión de tiempo que las demás empresas se den cuenta por donde viene la mano. 


Que opinan? Murió Ria basada en plugins?


Dejo el link: 
http://www.javahispano.org/portada/2011/11/16/adobe-anuncia-que-abandona-flex.html



domingo, 13 de noviembre de 2011

Play


El objetivo de play es hacer aplicaciones Web rapidas con Java y Scala. Se centra en la productividad de los desarrolladores y provee una arquitectura basada en REST. play! es un marco de trabajo para desarrollo ágil de software.

Entre las características podemos nombrar:


  • Una arquitectura simple basada en el patrón MVC y RestFull
  • Utiliza JPA
  • Testeable (pensado para hacer TDD)
  • y mucho más!

Dejo este video que me dejo impresionado:

 
A web app in 10 minutes using Play framework from zenexity on Vimeo.

Dejo links:
http://www.playframework.org/
http://www.playframework.org/documentation/1.2.3/overview
http://www.playframework.org/documentation/1.2.3/guide1
http://www.playframework.org/2.0

viernes, 11 de noviembre de 2011

Ahora le toca a eclipse!



Luego que Jboss presente su lenguaje Ceylon para la plataforma Java; ahora la organización eclipse pone una nueva ficha en el tablero. Xtend es el lenguaje de eclipse. El cual corre sobre la plataforma java.

Xtend nació con el objetivo de simplificar el lenguaje y escribir menos lineas de código. Entre sus características podemos nombrar:

  • Tipado estático
  • Facilita el desarrollo
  • Closures
  • Compila a código Java no a bycode
  • Sintaxis similar a Java
  • Se desarrollo con Xtext y se basa en Xbase


Veamos un ejemplo:


import my::metamodel;extension other::ExtensionFile;

/**
  * Documentation
  */
anExpressionExtension(String stringParam) :
  doingStuff(with(stringParam))
;

/**
  * java extensions are just mappings
  */
String aJavaExtension(String param) : JAVA
  my.JavaClass.staticMethod(java.lang.String)
;


No es el objetivo de reemplazar Java. Por lo tanto, los frameworks pueden interactuar con código Xtend igual que interactúa Java. También puede llamar a funciones Java, Xtend de una manera totalmente transparente. Y, por supuesto, ofrece un moderno IDE basado en Eclipse IDE integrado con las herramientas de desarrollo de Java (JDT).

Dejo un ejemplo que compara java con Xtend:


Dejo links:






Xtend Intro from Xtext Team on Vimeo.

jueves, 10 de noviembre de 2011

Private Cloud for Dummies

Libro gratuito sobre la nube! IBM nos regala un libro gratuito sobre las nubes privadas, lo unico malo es que hay que registrarse.

Dejo el link :

http://www.ibm.com/vrm/newsletter_11421_9654_211548_email_DYN_1IN/EGoette105121800

lunes, 7 de noviembre de 2011

Eclipse cumple 10 años

El 5 de noviembre del 2001 fue liberada la primera versión de Eclipse, desde ese momento hasta hoy creció a pasos agigantados; dándonos una IDE optima de muy buena calidad. Nada más para decir, simplemente Feliz cumpleaños.


Dejo links:


Gosu

Gosu es un lenguaje que corre sobre la jvm, y tiene las siguientes características:

  • 100% orientado a objetos
  • tipado estático
  • es imperativo
  • 100% compatible con java
  • inferencia de tipos
  • soporta closures
  • generic simplificados
  • y con licencia Apache 2.0!


Veamos un ejemplo:


// Declare some data
var minLength = 4
var strings = { "yellow", "red", "blue" }

// Slice and dice the data using blocks
print( strings.where( \ s -> s.length() >= minLength )
              .sort()
              .join( ", " ) )

// Use standard java classes
var someFile = new java.io.File( "SomeFile.txt" )

// But with shiny new methods
someFile.write( strings.join( "\n" ) )


Dimos un pequeño vistazo a este lenguje, dejo links:

http://gosu-lang.org/
http://gosu-lang.org/intro.shtml
http://gosu-lang.org/examples.shtml

sábado, 5 de noviembre de 2011

Spring Insight

Spring Insight es una tecnología la cual da visibilidad del rendimiento en tiempo de ejecución de la aplicación.

Las pruebas de estrés de una aplicación por lo general son lentas. Mediante la combinación de Spring inSigth con sus herramientas de testing  (tal como JMeter), se puede ver no sólo que direcciones URL son lentas, sino porque y descubrir la forma de acelerarlos.



Dejo unos screenshot:





Dejo links:

http://www.springsource.org/insight
http://static.springsource.com/projects/tc-server/6.0/devedition/cinintro.html

Configurar spring para usarlo con anotaciones

Para configurar spring para que funcione a base de anotaciones es necesario crear el archivo applicationContext.xml de spring y lo vamos a guardar en WEB-INF si es una aplicación web y queremos usar spring como contexto:

  
        
         

Luego podemos configurar nestros beans con anoteciones de la siguiente manera, primero creamos la interfaz:

package com.ejemplo;

/**
 * @author emanuel
 *
 */
public interface HelloWorldService {
 
 public String convertToUpperCase(String word);

}

Y luego una clase que lo implemente:

package com.ejemplo;

import org.springframework.stereotype.Service;

/**
 * @author emanuel
 *
 */
@Service
public class HelloWorldServiceImpl implements HelloWorldService {

 @Override
 public String convertToUpperCase(String word) {
  return word.toUpperCase();
 }
}


Con @Service estamos indicando a spring es un servicio. Tambien podemos hacer @Autowired para que spring injecte por tipo, de igual forma que lo hace cuando configuramos por xml. Por ejemplo si deberiamos configurar un manager o action con anotaciones podemos hacer lo siguiente:

package com.ejemplo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

/**
 * @author emanuel
 *
 */
@Component("helloWorld")
@Qualifier("helloWorld")
@Scope("request")
public class HelloWorldBean {
 
 private String name;
 
 @Autowired
 private HelloWorldService helloWorldService;
 
 public void setHelloWorldService(HelloWorldService helloWorldService) {
  this.helloWorldService = helloWorldService;
 }

 public String convertNameToUpperCase() {
  name = helloWorldService.convertToUpperCase(name);
  return "success";
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
    
}


Es muy comodo y elegante, la desventaja es que si quiero cambiar una dependencia debo recompilar, que creo que no es un gran problema. Es una alternativa genial!

jueves, 3 de noviembre de 2011

Probar Javascript con jsfiddle.net

Cuando tenemos que probar algo en Javascript es muy fácil tomamos un blog de nota hacemos una pagina que nos permita probar la función que necesitamos. Pero si usamos alguna librería Javascript se pone más complicado.  
En  ese caso es mucho más recomendable un servicio como el que provee esta pagina:


jsfiddle.net/


En el cual podemos probar nuestro html y Javascript. El código puede ser compartida con otros, incrustado en un blog, etc. Con este enfoque, los desarrolladores de JavaScript pueden aislar fácilmente los errores. 


Muy útil!


Dejo link:
http://doc.jsfiddle.net/

miércoles, 2 de noviembre de 2011

Actores con Akka

La concurrencia se puede manejar de dos formas a travez de hilos o thread como c++ y java o por medio de actores como erlang y scala. El modelo de actores es un modelo de concurrencia computacional que trata a los "actores" como los primitivos universal de la computación digital en paralelo: en respuesta a un mensaje que recibe, un actor puede tomar decisiones locales, crear más actores, envía más mensajes, y determinar cómo responder al siguiente mensaje recibido.

Si buscamos en la wikipedia dice lo siguiente:

En informática, el modelo de actor es un modelo matemático de cálculo simultáneas que trata a los "actores", como los primitivos universales de la computación digital simultáneas: en respuesta a un mensaje que recibe,un actor puede tomar decisiones locales, crear más actores, enviar más mensajes, y determinar cómo responder a la siguiente mensaje recibido. El modelo de actor se originó en 1973.  Se ha utilizado tantocomo un marco para una comprensión teórica de la computación, y como la base teórica para variasaplicaciones prácticas de los sistemas concurrentes. La relación de la modelo para otros trabajos se discute enla indeterminación en el cálculo simultáneo y el modelo de actor y cálculos proceso. Toma tu torta!!

Akka es un framework java que nos brinda este modelo en el lenguaje java. Permitiéndonos manejar la concurrencia de forma más simple como lo hace scala o erlang.

Veamos un ejemplo:

// server code
class HelloWorldActor extends UntypedActor {
  public void onReceive(Object msg) {
    getContext().tryReply(msg + " World");
  }
}

remote().start("localhost", 2552).register(
  "hello-service",
   actorOf(HelloWorldActor.class));

// client code
ActorRef actor = remote().actorFor(
  "hello-service", "localhost", 2552);
Object res = actor.ask("Hello").get();



Como podemos ver en ejemplo podemos hacer un manejo de actores de forma remota.  Akka Utiliza el modelo del actor junto con la memoria transaccional de software que elevar el nivel de abstracción y proporcionar una mejor plataforma para construir aplicaciones concurrentes correcta y escalable. A la vez es tolerante a fallos dado que fue concedido con tecnología Let it crash/Embrace failure. Akka es de código abierto y disponible bajo la licencia Apache 2. A la vez esta basado en scala y provee una api para este lenguaje, escrita en este lenguaje.

Tiene integración con Spring, soporta OSGI, se integra con Apache Camel. Solo falta que te cocine y te lave la ropa!

Seguramente vamos a seguir escribiendo sobre este framework, dado que esta muy bueno!

Dejo links:
http://en.wikipedia.org/wiki/Actor_model
http://akka.io/
http://akka.io/docs/
http://akka.io/docs/akka-modules/1.1.3/modules/spring.html

lunes, 31 de octubre de 2011

Netty

Netty es un framework de Jboss que provee un manejo asíncrono en aplicaciones web, un framework ideal para hacer comet.

Netty es un cliente NIO infraestructura de servidor que permite el desarrollo rápido y sencillo de aplicaciones de red, tales como servidores de protocolo y los clientes. Simplifica y agiliza la programación de la red tales como TCP y UDP socket servidor.

"Rápido y fácil" no significa que una aplicación resultante sufrirá un mantenimiento o un problema de rendimiento. Netty ha sido diseñado cuidadosamente con las experiencias obtenidos de la implementación de una gran cantidad de protocolos como FTP, SMTP, HTTP, etc.Como resultado, Netty ha logrado encontrar una forma de lograr la facilidad de desarrollo, rendimiento, estabilidad y flexibilidad sin compromiso.

Mas adelante vamos a probar este framework.

Dejo links:

http://www.jboss.org/netty
http://www.jboss.org/netty/documentation.html
http://docs.jboss.org/netty/3.2/guide/html_single/index.html

domingo, 30 de octubre de 2011

Apache Mina y Apache AsyncWeb

Mediante una serie de técnicas llamadas Comet, puedes hacer una aplicación que envíe datos al usuario en tiempo real; es decir, que el navegador mantenga la conexión siempre abierta y reciba continuamente nuevos datos cuando los haya. Para servidores y aplicaciones clásicas que no estén preparadas para mantener muchas conexiones, la forma más sencilla es solicitar desde el navegador un cada X segundos nueva información (polling). Si tenemos muchos usuarios a la vez abriendo conexiones y haciendo peticiones a la BD nos encontramos con que nuestro servidor no da más de sí y deja de atender peticiones. Un ejemplo de polling clásico sería realizar peticiones mediante AJAX a un script PHP que devuelve nuevos datos en JSON cada 3 segundos y actualiza la tabla de novedades.

En el desarrollo web, Comet es un neologismo para describir un modelo de aplicación web en el que una petición HTTP mantenida abierta permite a un servidor web enviar datos a un navegador por Tecnología Push, sin que el navegador los solicite explícitamente. Comet es un término paraguas de múltiples técnicas para conseguir esta interacción. Todos estos métodos confían en características incluidas por defecto en navegadores, como JavaScript, en lugar de sobre plugins no disponibles por defecto. Existen frameworks en java que nos permiten hacer coment tenemos a Netty de Jboss, Atmosphere y Apache Mina.

Vamos a ver como funciona y nos permiten hacer coment Apache Mina. Apache Mina es un framework que nos permite hacer aplicaciones escalables y performantes basadas en network. Este framework provee una api asincrona para varios tipos de transportes y protocolos tcp/ip o UDP/ip via Java Nio.

Apache AsyncWeb que es parte de Apache Mina, rompe con la forma petición-respuesta de los servidores webs más usados. Esto le permite ser altamente escalable y capaz de soportar un rendimiento muy alto incluso en escenarios de alto procesamiento de latencia.
Una Api simple permite crear fácilmente servicios asincronos y integración con spring permite una configuración simple con gran flexibilidad. AsyncWeb permite también aplicar filtros a todas las requests.

Dejo links:
http://mina.apache.org/
http://mina.apache.org/asyncweb/