Buscar
Social
Ofertas laborales ES

Entries in j2se (2359)

martes
sep132011

Decidida la sintaxis de las closures para Java 8

Parece que el grupo de expertos que trabajan en la definición de Java 8 por fin han hecho una decisión (casi final en estos momentos) en la sintaxis de las closures, y la decisión es básicamente emplear la sintaxis de C#. Esta sintaxis es:



 lambda = ArgList Arrow Body
   ArgList = Identifier
             | "(" Identifier [ "," Identifier ]* ")"
             | "(" Type Identifier [ "," Type Identifier ]* ")"
   Body = Expression
             | "{" [ Statement ";" ]+ "}"


Algunos ejemplos de closures escritas con ellas son:

 

   x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println("I am a Runnable"); }

 

Los motivos que han llevado a tomar esta decisión son dos fundamentalmente. Por un lado, esta sintaxis "parece bastante aceptable". Por otro lado, no hay ninguna métrica clara para decidir entre las distintas opciones de sintaxis que estaban barajando. Por ello han tomado la decisión de optar por algo que "ya está funcionando en el mundo real", y han escogido esta sintaxis, la que emplea C# (que también es muy similar a la de Scala).

¿Qué os parece esta sintaxis?

viernes
sep022011

Oracle retira la licencia Linux para distribuir su JDK

Es una noticia que ya sucedió hace 10 días, y hasta ahora no había entrado en mi radar, aunque creo que es relevante. A final de agosto, Oracle anunció que la licencia que permitía a las distribuciones de Linux empaquetar con la propia distribución el binario de su JDK (el de licencia comercial, no del OpenJDK) sería retirada, y el proyecto jdk-distros de Java.net sería discontinuado.


Esto quiere decir que a partir de Java 7 las distribuciones de Linux no pueden empaquetar el JDK propietario de Oracle. Los usuarios finales podrán instalarlo (como se hace en Windows, por ejemplo) por su cuenta descargándolo desde la página de Oracle. Pero no será posible empaquetarlo en la distribución.


Según Oracle, el motivo para esto es que el OpenJDK ha alcanzado un nivel de madurez que lo convierte en una opción perfectamente viable y ese sería el JDK que deben emplear estas distribuciones.


Este argumento no tendría ningún problema si ambos fuesen completamente equivalentes. Yo puedo dar fe de que en Java 6. El OpenJDK 6 tenía un rendimiento considerablemente inferior al rendimiento del JDK propietario de Sun/Oracle, especialmente en aplicaciones Swing (lo que hacía algunas de mis aplicaciones simplemente inutilizables bajo Linux con el OpenJDK). Además el OpenJDK aunque cumple con la especificación Java, no tiene tantas herramientas de desarrollo (herramientas del estilo de jarsigner o keytool) como el de Oracle.


De esto puedo dar fe en el caso de Java 6. Sobre el OpenJDK 7 no tengo experiencia en mis propias carnes, pero uno de los mantenedores de Debian afirma (y yo le creo basándome en experiencia previa) que algunos de estos problemas (sobre todo relacionados con aplicaciones de escritorio) persisten.


Aunque el problema no es muy grave en la práctica (sigue siendo posible instalar manualmente el JDK de Oracle si se quiere) no entiendo qué se debe este paso de Oracle. ¿Qué problema habría con qué las distribuciones de Linux sigan empaquetando algo que es gratuito y que los usuarios pueden instalar por su cuenta?


¿Qué opináis acerca de este movimiento de Oracle?

jueves
sep012011

Greach, el 4 de Noviembre en Madrid

Hoy 1 de septiembre se abre el registro de Greach, un evento dedicado exclusivamente al lenguaje Groovy y a todos los frameworks y herramientas que se han creado a su alrededor. Se celebrará el próximo viernes 4 de Noviembre en la universidad San Pablo CEU de Madrid. De un solo día de duración, será corto pero intenso: dos tracks llenos de charlas y talleres sobre Groovy, Grails y Griffon, con primeras figuras nacionales e internacionales como Guillaume Laforge y Andrés Almiray (líderes del proyecto Groovy y Griffon, respectivamente). Después de la experiencia tan buena con Spring2GX Day y Spring I/O, creemos que este tipo de eventos son el foro ideal para aprender, compartir experiencias, conocer gente, hacer contactos y, porque no, amigos.

El precio de la entrada es de 10€, incluye comida y de momento no hay límite en el aforo. Desde Javahispano queremos darle las gracias especialmente a Escuela de Groovy y Osoco, nuestros patrocinadores Platino y Oro, ya que sin ellos no habría sido posible. También agradecemos a nuestros sponsors colaboradores ManningJetbrains y Atlassian por su apoyo y participación en el evento.

Podéis visitar la web de Greach para conocer el programa y horario (todavía no definitivo) de las charlas, conocer un poco más a los sponsors y ver la localización del evento. Algunos speakers españoles ya han confirmado el tema de sus charlas y tenemos temas tan interesantes como programación funcional con Groovy, un taller de Koans de metaprogramación y MongoDB sobre Grails. Todavía quedan por confirmar nuevos speakers y nuevas ponencias. 1 día, 2 tracks, 11 speakers, 13 charlas ¿te lo vas a perder?

jueves
sep012011

Disponibles los videos y presentaciones del JVM Language Summit 2011

El JVM Language Summit se ha convertido en el evento por referencia para hablar de lenguajes de programación alternativos a Java corriendo de la máquina virtual. Este año Oracle alojó la conferencia en sus instalaciones, del 18 al 20 de julio. Ahora acaban de hacer públicos los videos de todas las charlas, junto con las presentaciones (y por una vez Oracle no requiere registro ni nada para acceder a ellos). 


Podéis acceder a todos los videos y bajar todas las presentaciones desde aquí.

martes
ago302011

Encuesta: ¿Has probado Java 7?

Pues según la encuesta de Agosto sólo el 15% de los usuarios del portal han probado Java 7. Un poco decepcionante; quizás haya sido porque fue liberado a final de julio y el mes de agosto en muchos países es un mes de vacaciones.


Yo soy uno de los que ha probado Java 7. He ejecutado varias aplicaciones mías con él (aplicaciones de escritorio hechas con Swing), y he hecho algunos códigos "Hola mundo" de las nuevas características. 


Por la parte que me toca, comentar que toda las aplicaciones funcionaron perfectamente y percibo alguna ganancia en el rendimiento de operaciones de pintado intensivo. En el pasado, me había quejado de que Swing en uno de mis monitores que está en modo portrait presentaba un rendimiento de repintado penoso. Pues bien, lo han arreglado :)


La parte mala es que sí cambio la orientación del monitor de modo portrait a landscape con la aplicación Swing corriendo, al volver a ganar el foco la aplicación comienza a lanzar excepciones por culpa de un buffer de Swing :(  De todos modos, prefiero este comportamiento al anterior (el rendimiento de repintado de mi aplicación con Java 6 en el monitor en modo portrait antes hacia la aplicación completamente y inusable).


Esta es mi experiencia personal. Alguna otra gente (especialmente los chicos del proyecto Apache lucene) ha informado de un bug bastante feo en el compilador Hotspot de la máquina virtual que puede terminar con el proceso nativo de la JVM, bug que Oracle conocía en el momento de liberar Java 7 pero que ya no tenía tiempo a actualizar. Tendremos que esperar por la Update 1 de Java 7 para que se arregle (más información al respecto aquí).


¿Has probado Java 7 ? ¿Cuales han sido tus impresiones? ¿Ahí alguien que se haya atrevido a ponerlo en producción?