Bienvenido a Java Mexico

Java México es una comunidad de desarrolladores mexicanos en el lenguaje Java.

Este sitio es colaborativo, automáticamente al registrarte obtienes un Blog para compartir tus conocimientos o información acerca del lenguaje. Antes de publicar en tu blog o los foros por favor lee los lineamientos de publicación.

Para dudas y problemas con respecto al lenguaje Java puedes visitar los Foros de Discusión.

También puedes responder nuestra encuesta para saber en que estado vives!

RESUELTO: java.io.NotSerializableException: org.apache.log4j.Logger

Buen día amigos, acabo de encontrarme con este problema:

Caused by: java.io.NotSerializableException: org.apache.log4j.Logger 

y debido a: Problema de Log4j

En corto, la solución es:

private static final Logger log = Logger.getLogger(Entity.class);

Agregar la varible como  static final (por los comentarios que ahí mencionan) .

Saludos.

PD. Otro factor podría ser que tu clase no implementa Serializable.

String Calculator en Groovy

Hola, como parte de la tarea de un curso que estoy tomando, nos dejaron resolver String Calculator y aquí comparto mi solución, la termine en poco tiempo, pero no en menos de 30 minutos la parte de probar las exceptions se me dificulto, se que con shouldFail de GroovyTestCase eso se pudo resolver, pero quise experimentar un poquito. Ya me dio flojera hacer que los delimitadores fueran mas complejos como por ejemplo [****].

String.metaClass.sum = { ->
        if(delegate.trim()){
                def delimiters = '[,'

                if(delegate.startsWith("//")){
                        def limitPosition = delegate.indexOf("\n");
                        delimiters += delegate[2..limitPosition]
                }

                def negatives = []
               
                def result = delegate.split(delimiters + ']').collect{ num ->
                        num = num.isNumber() ? num as int : 0
                        num >= 0 ?: (negatives << num)
                        num < 1001? num : 0
                }.sum()
                if(negatives){
                        throw new RuntimeException(
                                "Negatives not allowed $negatives"
                        )
                }
                result
        } else {
                0
        }
}

assert 0 == "".sum()
assert 0 == " ".sum()
assert 1 == "1".sum()
assert 1 == " 1".sum()
assert 1 == " 1 ".sum()

Ejemplos en Ceylon

Aquí les dejo unos código muy sencillos en este lenguaje.

JPA y EJB

Buenos Días a Todos.

De antemano felicitarlos por este gran foro. Mi inquietud es la siguiente, tengo que desarrollar un aplicación, utilizo un modulo EJB y una aplicación(Escritorio) común y corriente. y quiero utilizar persistencia de datos (JPA).

Pero estoy algo confundido sobre JPA, por lo que he leído en algunos Blog, es lento. Utiliza dos tipos de persistencia Leasy y Eager, una carga toda el mapeo de la base de datos, (que pienso que se consumiría todos los recursos) y la otra solo carga los datos de cada objeto sin mapeo.

También leí, que se podían obviar los dos anteriores y tener todas las clases sin que se cargue los datos en memoria.

Me gustaría saber cual es su punto de vista sobre este tema.

¿Creen que JPA aplicaría o seria lo suficientemente viable, donde una aplicación puede crecer a nivel de datos y tablas?
¿Hay alguna forma de utilizar persistencia de datos sin utilizar Leasy y Eager, es decir que no haga ese cargue de información en memoria pudiendola saturar, y si hay alguna forma como seria?

Gracias, y nuevamente felicidades por este foro.

Game Of Life en Ceylon

En el Code Retreat que hubo en Agosto de 2012, el reto fue implementar el famoso Game of Life, en parejas. En mi equipo, @juwe y yo lo desarrollamos en Ceylon (no me impuse; él se animó, jejej).

Apenas hoy lo pude subir a un repositorio que tenemos en GitHub especialmente para ejemplos de Ceylon, después de darle una buena actualizada al código porque han habido varios cambios en la sintaxis y en el módulo de lenguaje desde que escribimos esto originalmente: ya teníamos comprensiones, funciones de orden superior, funciones anónimas y varias otras cosas, pero no teníamos por ejemplo el assert, tuplas, ni la sintaxis actual para secuencias y colecciones iterables; la sintaxis para funciones anónimas cambió ligeramente, al igual que la de parámetros variádicos (los famosos varargs).

PrimeFaces 3.5.RC1 Released

fuente (http://www.primefaces.org/)
Equipo PrimeFaces se complace en anunciar la primera versión candidata de PrimeFaces 3,5. Esta versión cuenta con nuevos componentes, mejoras a los componentes existentes, el apoyo RTL, accesibilidad mejorada y más. En comparación con versión anterior principal 3.4, hay más de 175 mejoras + presentadas.

Curso de Scala presencial "en línea"

En breve estaré impartiendo un curso de Fundamentos del lenguaje de programación Scala, presencial "en línea", usando el sistema Webex Training Center, con todas sus posibilidades. Lo estaré ofreciendo en el horario de la tarde noche dos veces por semana con una duración de 30 horas (5 semanas). Los interesados pueden enviarme un correo a barbaro.ferro@gmail.com para conocer temas, precios y calendario.

Interfaces funcionales en Java 8

De lo más relevante en ésta versión es la inclusión de lambdas y junto con ello nuevos conceptos como las interfaces funcionales.

Podemos decir que una interfaz se considera funcional cuando tiene un método abstracto sin implementación. La intención es crear un contrato o una “forma” de como será una expresión lambda para que el compilador cuente con información suficiente al momento de aplicarla, dicho de otra forma, es el tipo de datos de la expresión lambda. ¿Por qué?. Bueno, en Java las expresiones lambda son como cualquier otro objeto y como tal, también necesitan un tipo de datos. Por ejemplo, el siguiente programa traduce e imprime una palabra de español a inglés usando lambdas.

//interfaz funcional
interface Traductor {
   String traducir(String palabra);
}

public class Main {
    public static void main(String[] args) {
        // Implementacion de Traductor usando una expresion lambda
        Traductor traducirIngles = (p) -> "hola".equals(p) ?  "hello" : "WHAT?";

        System.out.println( traducirIngles.traducir("hola") ); // imprime hello

Día de Ryz, 2013

El año que acaba de concluir fue bastante lento para Ryz, la razón es que me pasaron muchas cosas.

- Cambié de trabajo para entrar a Knowtion y esto me absorbió la mayor parte de mi tiempo libre.
- La otra gran parte de mi tiempo libre me la pesé haciendo otras cosas que me hacían mucho, mucho, pero muucho muy feliz.

Estuvo bien, no hay queja. El objetivo de Ryz no es competir contra los otros lenguajes, ni siquiera contra Java mismo, no hay prisa.

En el 2012 lenguajes existentes y nuevos han ido consolidando algo que pretende hacer Ryz, simplificar el uso de Java. Java 8 incluirá closures finalmente, IDE's como Intellj IDEA 12 ya tienen soporte para ello. La comunidad (al menos en la que me encuentro) tiene ya bastante familiaridad con el uso de bloques y la programación funcional está empezando a consolidarse como paradigma al lado de la POO. Hay al menos un lenguaje con tipado estructurado que está siendo usado con éxito en producción actualmente. Todos hablan ya de Smalltalk y así por el estilo. Mucho e esto estaba en la base de Ryz, mucho solo en mi cabeza.

Feliz 2013

Distribuir contenido