Buscar
Social
Ofertas laborales ES

Entries in j2se (2359)

miércoles
may182011

JRockit pasa a ser gratuito

JRockit, la máquina virtual desarrollada en su día por BEA Systems y que pasó a ser de Oracle cuando éste adquirió la compañía, ha pasado a ser gratuita. Esta es la máquina virtual sobre la que se ejecuta actualmente WebLogic. Hasta ahora, la máquina no estaba disponible de modo gratuito para descarga. 


En la actualidad Oracle se encuentra en proceso de "fusionar" las máquinas virtuales HotSpot (obtenida tras la adquisición de Sun) y JRockit. Tras un período de evaluación, Oracle decidió "quedarse con" HotSpot, e integrar dentro de HotSpot las partes de JRockit donde esta segunda máquina virtual era superior (sobre todo, las opciones de monitorización).


Éste proceso de integración se está llevando a cabo en la actualidad. En el futuro, Oracle sólo ofrecerá una máquina virtual. Pero desde la adquisición de Sun cuenta con dos, y ahora ambas son gratuitas. No obstante, los productos JRockit Mission Control, JRockit Real Time y JRockit Virtual Edition siguen siendo de pago.


Podéis descargar JRockit desde aquí.

domingo
may152011

James Gosling y la reinvención de la rueda

Leía el artículo aquí en JavaHispano sobre las últimas declaraciones de James Gosling y me llamaron mucho la atención tres cosas:

1) Que cualquier cosa, brillante o tontería como un piano, que diga James Gosling va a generar montones de rios de tinta electrónica.

2) Que la retrotecnología está de moda.

3) Que esta industria tiene un NULO sentido histórico, la frase de Newton "sobre hombros de gigantes" apenas se aplica, asusta leer como "nuevas" ideas tienen décadas de historia detrás.

El propósito de este artículo de opinión es el de reflexionar sobre los procesos de creación (y adopción) de tecnología, nuestro sector es uno de los pocos en los que podríamos hablar de que existe una, en mi opinión, inmadurez crónica, de otra manera es difícil de entender ciertas tendencias, tendencias que afortunadamente en algunos casos no duran mucho.

Y no, no estoy pensando en que NoSQL es una tendencia pasajera, al contrario, el que las bases relacionales sean la tecnología abrumadoramente mayoritaria hace pensar que el mundo IT es mucho menos innovador y rico de lo que parece.

Sin embargo en cierto modo algunas opciones del mundo NoSQL en mi opinión sufren de un síndrome de reinvención de la rueda brutal, y en esa reinvención tienen mucho que ver las palabras de Gosling sobre las bases de datos "en memoria", y esto lo digo por el comentario sobre Redis en el hilo de JavaHispano:

por defecto todo en memoria con snapshots cada segundo. Si se cae el servidor pierdes los datos generados en el último segundo. Con esta configuración tiene un rendimiento de 100.000 operaciones por segundo en una máquina normalita.

Alguien que leyera este comentario en los años 70 pensaría "es genial", en esos años los volúmenes de datos que manejamos hoy día no tenían nada que ver, los requisitos en transaccionalidad no son los de hoy en día etc etc, pero es que estamos hablando de 2011 en donde una tecnología pretende venderse como novedosa:

1) Intentando cargar todo en memoria

2) Guardando los cambios durante un periodo de tiempo de una vez

Es decir, podríamos hablar de una base de datos de los años 70, es decir:

1) No preparada para grandes cantidades de datos

2) Transaccionalidad dudosa (transacciones ya realizadas realmente no han sido guardadas).

Evidentemente alguien cercano a Redis matizará y dirá "se puede ajustar el tiempo de snapshot y sólo cargar parcialmente los datos en memoria", es decir, si buscamos transaccionalidad segura la unidad de registro persistente será de 1 operación, o al menos no volveremos de la llamada persistente hasta que haya seguridad de que se ha escrito en archivo, lo cual disminuirá mucho el rendimiento, y a su vez cobrará especial relevancia en procesado multihilo para no parar absurdamente el motor de la base de datos (pues algunas de estas bases de datos presumen de lo que yo llamo "mono-hilo mágico").

Por otra parte si sólo cargamos parcialmente la base de datos en memoria porque el archivo de datos es muy grande, entonces ya no hablamos de una base de datos en memoria sino más bien de una caché, y por tanto el rendimiento fabuloso disminuye drásticamente al ir a buscar datos de archivo.

Es decir al final poco a poco vamos creando de nuevo una base de datos más... convencional, es decir una rueda que se parece mucho a la rueda que queremos substituir...   

El comentario de supertorpe me parece magistral:

Lo que pasa con las Hashtables es que luego vas a querer transacciones y vas a tener que montar un sistema transaccional a mano. Después vas a querer persistencia para no perder los datos. Después vas a empezar a crear métodos para simplificar la creación de consultas a la hashtable, para devolver datos relacionados y vas a acabar creando un DSL para ello. Después vas a querer que varios usuarios accedan concurrentemente y vas a crear una arquitectura y unos protocolos de acceso por encima para soportarlo. Después... vas a acabar implementando un sistema de gestión de BBDD a mano, eso sí, con unas Hashtables en memoria en su núcleo :D :D :D 

¿Esto significa que las bases de datos NoSQL no aportan nada que merezca la pena?

NO, pero el aspecto diferencial está en el PARADIGMA, sólo se puede competir con las bases de datos relacionales a través de paradigmas diferentes, el paradigma relacional por ejemplo es MUY difícil de escalar porque requiere que todas las tablas estén "juntas", cuanto más escalas a base de partir la base de datos "menos relacional" es y más sentido cobran las alternativas.

Pero competir con el paradigma relacional sólo es posible aportando al menos similares resultados en rendimiento unido a fiabilidad unido a capacidad de gestionar ingentes cantidades de datos (ya que en flexibilidad es un terreno muy díficil), no en argumentos tipo "base de datos en memoria, snapshots cada segundo y proceso mono-hilo" que suenan a Oracle v0.1 pues por ejemplo ¿es que creemos que los de Oracle son idiotas y no tienen una enorme caché en memoria? 

Es en el terreno de la flexibilidad donde yo creo que las bases de datos NoSQL tienen un largo camino que recorrer, como dice janatic (peloteo mode-on) 

"la gente que lo hace es muy pragmatica y no reniega del SQL. De hecho están haciendo muchos esfuerzos para incluir en lo posible funcionalidades típicas de SQL"

Porque la escalabilidad y el rendimiento no lo es todo, también es importante la extracción de datos de mil combinaciones posibles y ahí quizás la rueda no esté inventada.

Volviendo a la reinvención de la rueda, leyendo las palábras de Gosling sobre "bases de datos en memoria", Gosling está hablando de un único nodo a la vez "cliente y servidor" haciendo operaciones él solito en memoria y archivo. Vale muchos ya han mostrado que eso es una tontería como un piano por mucho Gosling que lo diga... ¡O NO! cuando lo leí pensé "joder pero si eso bien hecho y de verdad ya está inventado desde hace más de 15 años ¡¡Y YO LO HE USADO!!", y estaba pensando en ObjectStore y su cache forward cuya idea básicamente es que el servidor envía de forma asíncrona una parte de la base de datos a la memoria del cliente (de los clientes) y que no es exclusiva de ObjectStore.

Pero claro estamos hablando de bases de datos orientadas a objetos

* que no son nuevas (no nuevo=no molo)

* que encajan exactamente en el modelo de datos orientado a objetos sin impedancia con la base de datos (¿para qué si hay bases de datos sin esquema y mis aplicaciones son tan dinámicas que no uso esquemas basados en clases?)  

* que son particionables automáticamente pues cada dato persistente puede saber donde está físicamente el relacionado incluso en un archivo diferente (¿para qué si hay trucos tan ingeniosos como los números hash?. 

* gestionadas por empresas propietarias que están felices y contentas con sus nichitos de mercado

Con esto no quiero decir que las bases de datos orientadas a objetos sean una "gran opción", las empresas que hay detrás (Progress, Versant) quizás no se lo merezcan dado su enorme desinterés es favorecer su propio mercado (no hay más que ver como dbObjects de Versant ha casi desaparecido del mapa).

Volviendo al tema Gosling, ahora que resulta que la "tontería" de Gosling no es tan tonta y resulta que es una técnica madura y que funciona (aunque ni mucho menos en la versión simplona del ejemplo de Gosling), es cuando merece la pena repensar en reinventar la rueda y empezar a superar el modelo de cliente tonto relacional JDBC mero "forwarder" de cadenas SQL en el que hemos vivido tantos años y quizás pensar en una nueva generación de bases de datos verdaderamente transparentes que residan parcialmente en el cliente en donde una simple Collection.size() no suponga cargar toda la colección como ocurre en los inevitablemente tontorrones Hibernate y JPAs... quizás el nuevo Hibernate vendrá por la via de DataNucleus JDO...

Aunque lo siento para llenar ese hueco siempre me vienen a la mente bases de datos orientadas a objetos... ¡joder qué fijación!

 

miércoles
may112011

Google I/O: Google Music, Android Open Accesory y GAE sale del beta

Ayer inició el Google I/O 2011 en San Francisco. En este primer día Android ha sido el rey del evento, se ve que Google apuesta mucho por los usuarios móviles. En el keynote se dieron unas cifras que hablan de la importancia actual de la plataforma:

 

  • 100 millones de dispositivos Android activados
  • 400,000 nuevos dispositivos Android activados cada día
  • 200,000 aplicaciones gratuitas y de pago en el Android Market
  • 4.5 mil millones de aplicaciones instaladas a través del Android Market
  • 310 modelos diferentes de dispositivos Android

 

La keynote, que pudo ser seguida en vivo en el sitio, tuvo como momento más impresionante las demostraciones del nuevo API de Android: Android Open Accesory, la inbtegración de Android con Arduino que facilita integrar hardware con los móviles mediante USB. Entre los demos, hubo uno donde el usuario usando una bicicleta fija, controlaba un juego en su Android y otro donde los acelerómetros del móvil servían para controlar un juego real. 

Esta iniciativa se inscribe dentro de Android@Home el esfuerzo de Google para llevar Android a la domótica: controlar todos los dispositivos que se tienen en casa a través del móvil.

Además de Android, se anunciaron otros proyectos interesantes. El primero de ellos es que Google AppEngine saldrá de Preview este mismo año y dentro de los próximos meses. Para ello, se ha agregado soporte a Google Go, el lenguaje de programación creado por la empresa. Por lo que ahora GAE soporta java, python y Go.

Además se anunciaron cambios en las condiciones de uso de GAE, no se han dado cifras oficiales pero ya se anunció que las cuotas para la versión gratuita disminuirán. Además se anunciaron 3 esquemas de precios:

 

  • Gratuito, como el de ahora pero con menores cuotas.
  • Pagado. Se paga USD $9 al mes por aplicación más las cuotas usadas.
  • Premium. Se paga por empresa y no por aplicación.

 

Otra noticia importante, la disponibilidad de Backends. Hasta ahora las aplicaciones GAE corren sobre instancias dinámicas controladas por Google, con Backends se le asignará al usuario un Backend: un servidor con los recursos que haya especificado (memoria, cpu, disco, etc) con una ip que no cambia. 

Por último, se anunció un nuevo servicio de Google:  Google Music. Un servicio que permite subir a la nube tu música para poder escucharla por streaming en cualquier ordenador o en tu móvil android.  Por ahora el servicio está en Beta solamente en Estados Unidos. 

Todas las sesiones se han grabado y las puedes ver en el canal de YouTube.  

lunes
may022011

Google Chrome 11 es "poco amistoso" con Java

Google acaba de publicar Google Chrome 11. Y esta nueva versión del navegador web se está portando de un modo bastante agresivo contra "plugins que no son ampliamente usados" como por ejemplo el plugin de Java. Cuando este navegador llega a una página que contiene un Applet muestra un mensaje diciendo que el plugin de Java necesita permisos para ejecutarse. Según Google, el usuario sólo debería dar permisos al plugin si confía en la web en la cual se encuentra éste.


De este comportamiento está excluido flash no sé si porque consideran que está "ampliamente utilizado", o porque desde hace ya algún tiempo Google Chrome ejecuta flash (y abre los documentos PDF) en una sandbox y por tanto consideran que ya no es peligroso.


En el pasado ya hemos publicado en esta web una noticia donde explicábamos como Java se había convertido en posiblemente el objetivo principal de los hackers que quieren instalar troyanos en los PCs Windows. Ese movimiento forma parte de una continua tendencia a dejar de atacar el sistema operativo (lo cual cada vez más difícil por el buen trabajo de Microsoft) y atacar a aplicaciones ampliamente difundidas.

 

El movimiento de Chrome 11 es un disparo a la línea de flotación de los Applet. Seguramente, a día de hoy nadie va a llorar por los Applet. Pero JavaFX es un tema diferente... y este comportamiento también va a afectar a JavaFX. Sobre todo si otros navegadores lo copian, Java será percibido por el usuario como algo "peligroso".


En cualquier caso, la culpa realmente no es de Google. Existe un problema real con la seguridad del plugin Java. Un problema que está siendo explotado activamente por los hackers. Un problema que realmente tiene su raíz en que la gente suele tener JREs no actualizados instalados en su equipo.

 

¿Sería hora de realizar actualizaciones automáticas de los JREs (que no de los JDKs) por defecto para tratar de resolver los problemas de seguridad que está teniendo Java? ¿Creéis que este movimiento de Google va a afectar negativamente a JavaFX?

 

 

jueves
abr282011

Java seguirá llegando a Mac OS X con retraso (al menos en Java 7)

Parece que hay algunas cosas que no van a cambiar respecto a cuándo Sun era la compañía que estaba al frente de Java. Y una es que las nuevas versiones de Java seguirán llegando a Mac OS X con retraso (al menos en lo que a Java 7 respecta). Esta semana Oracle ha publicado información sobre las plataformas que soportará inicialmente Java 7.


Java 7 estará disponible el 28 julio para las plataformas recogidas en esta lista. En general, son todas las que uno espera, con dos excepciones. Una es soporte para Itanium, tanto para Windows como para Linux. En este caso no es que vaya a haber un retraso; es que Oracle no tiene intención de liberar la versión de Java para esta plataforma porque hay poca gente interesada en ella.


La segunda excepción es Mac OS X. En este caso Oracle y Apple se habían comprometido a trabajar juntos para crear un porte del OpenJDK para la plataforma de Apple. Hasta esta versión de Java, Apple era quien desarrollaba en soporte de Java para Mac. Pero recientemente anunciaron que no tenían intención de seguir haciendo esto.


Por ahora, lo único que nos dice Oracle es que Java para Mac OS X estará disponible "en algún momento después de que se publique el JDK 7 para el resto de las plataformas".


¿Cuántos de vosotros desarrollais aplicaciones Java en Mac? ¿Tenéis miedo de que vuestra plataforma deje de ser idónea para el desarrollo Java? ¿Creéis que existe la posibilidad de que la experiencia de un JDK basado en el OpenJDK sea subóptima comparada con usar los JDK que desarrollaba Apple? ¿Ha habido alguien que ya haya abandonado Mac por estos continuos retrasos a la hora de actualizarse a nuevas versiones de Java?

Page 1 ... 5 6 7 8 9 ... 472 Next 5 Entries »