Pongo la dependencia a ExampleEJB como provided dado que no quiero que maven agregue el jar dentro del war después hago deploy del proyecto EJB y del WAR.
Ahora mvn clean install parados en el proyecto parent (ExampleJEE) y mvn eclipse:eclipse (si usan eclipse).
Bueno ahora importamos el proyecto a eclipse: file-> import-> Existing Projects into Workspace … Elegimos el path donde se encuentra el proyecto ExampleJEE y importamos.
Vamos a crear las siguientes clases en ExampleEJB:
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.
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.
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
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) : JAVAmy.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).
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.
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:
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.
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!
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:
En el cual podemos probar nuestro html y Javascript. El códigopuedeser compartida con otros,incrustado en unblog,etc.Con este enfoque,los desarrolladores de JavaScriptpuedenaislarfácilmentelos errores.
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!
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.