Novedades del JSDK 1.4
sábado, septiembre 1, 2001 at 2:00AM
Novedades de J2SE 1.4
Como seguramente todos sabeis ya, Sun tiene casi a punto la versión 1.4 de Java 2 Standard Edition (J2SE), ya podeis trabajar con la versión beta si quereis, por ejemplo. Sun se puso una "obligación" de sacar cada 18 meses (para dar tiempo a que la gente asimile las novedades) una "gran versión" (las pares, 1.2, 1.4, ...), que introducen grandes cambios en el lenguaje, y dedicar el tiempo intermedio a las mejoras puntuales y resolución de problemas, con nuevas versiones (1.2.2, 1.3, ...) que mejoren algún aspectos concretos deficientes. Por si no lo sabeis, los 18 meses desde la salida de Java2, Java 1.2 se han cumplido.
He dicho "Sun tiene a punto" pero también habría podido decir "la comunidad Java tiene a punto". Sun sabe que no tiene el poder de Microsoft para "marcar estandares", asi que se tiene que arropar de todas las empresas del sector posibles (lease IBM, Compaq, Epson, etc), y de todos los desarolladores del mundo, sabe que solo implicando el mayor número posible de partes puede "hacer algo". Este era el objetivo tras la aparición de la Java Developer Connection (JDC) y el Java Community Proccess (JCP).
La JDC no es más que una especie de agrupación (de libre acceso) para todas las personas o empresas interesadas en el desarrollo con y de Java. Alli se liberan las primeras versiones de las APIs para probarlas, se presentan articulos y tutoriales sobre Java, etc. Más o menos, todo desarollador de Java debería estar apuntado, sobre todo por es gratis. El JPC es, mas o menos, para parte "seria" de la JDC. En el JCP, dividio en varios grupos de expertos enfocados a distintos temas, se debaten cosas sobre la estructura y definición de Java, sus problemas o limitaciones, sus fallos, sus deficiencias, donde ahora mismo se decide realmente la evolución de Java, aunque para la mayoría de nosotros, todo esto de influir en el desarrollo de Java no pasará, en el mejor de los casos, de enviar un correo electrónico del estilo "IŽve found a bug in..." o "Why not ... in next releases?". Como inciativa no esta mal, pero todavía Sun deberia hacer algo más, lo más deseado sería eliminar algunas de las restricciones más comprometidas de su licencia, o incluso declarar Java opensource. Quizás algún día, personalmente me parece una buena idea para su supervivencia.
En fin, que me lio. Lo que quería decir era que por primera vez se puede decir que esta nueva versión de Java es fruto de "la comunidad java" y no solo de Sun. Desde un principio se ha escuchado a todas las partes, a los desarrolladores particulares y a las grandes empresas, con el fín de delimitar los problemas "más urgentes" y darles una solución. Se podría decir que el TOP-5 de las peticiones de los usuarios ha resultado ser el siguiente:
- Java se usa más en aplicaciones gráficas en el cliente de lo que se pueda pensar. Todos sabemos que aunque las interfaces de usuario de Java son realmente ricas en funcionalidad, su rendimiento no es el mejor del mundo.
- Java debe mejorar en los grandes servidores (mainframes y supercomputadores), puesto que la multiplataforma es un aspecto muy a tener en cuenta para esos servidores.
- A veces se ha sacrificado la calidad por la cantidadvo la disponibilidad, lo cual no debería suceder.
- Se debe mejorar el rendimiento y la escabilidad en general.
- Se deben mantener versiones de calidad tanto en el cliente como en el servidor. Da la impresión de que el los últimos tiempos Sun se ha dedicado "únicamente" a fortalecer el servidor.
Estos cinco factores son los que han regido las decisiones a tomar a la hora de preparar esta versión, los que decidían que era urgente y que podía esperar. Finalmente, lo que se ha decidido era que los objetivos concretos a mejorar eran el nivel de confianza, la disponibilidad, los servicios, la escalabilidad, el rendimiento y el despliegue de las aplicaciones Java. Esto suena simplemente a "queremos mejorar todo lo posible", es cierto, pero a fin de cuentas esi siempre es asi, hay que mejorar todo lo que se pueda.
Pero basta ya de palabreria y pasemos a las aportaciones reales que hacer Java 1.4 al lenguaje y su API. Puede parecer que no son demasiadas, pero eso solo es debido a que la mayoria de los cambios se han centrado en mejorar el rendimiento de lo existente más que en incluir grandes novedades.
La maquina virtual.
Entre los cambios más destacados en la máquina virtual de Java esta el soporte para arquitecturas de 64 bits, en un principio SPARC y para Intel Itanium esta en camino.
La implementación del recolector de basura también ha mejorado en gran medida, sobre todo en los grandes servidores con grandes cantidades de memoria, y se dice que ahora las mejoras que aportaba HotSpot al rendimiento de la maquina virtual estan incluidas en la JVM estandar, sin que halla que descargarse un nuevo paquete. Se espera con ello que el rendimiento intrínseco de la maqina virtual crezca solo.
Java gráfico.
Como se ha mencionado, Java es mas empleado en aplicaciones cliente de lo que se podría esperar, y es que el "caramelo" de la multiplataforma es muy apetecible. Es por ello que Java 1.4 tenía que tener una parte muy enfocada a la mejora de su rendimiento, y un factor muy importante es el referente a la presentación gráfica al usuario.
Se han producido muchos cambios en todas las clases gráficas, Java2D, AWT y Swing. No os asusteis que no teneis que aprenderos millones de nuevos métodos para cada clase, la mayoría de los cambios son internos, en su implementación enfocados en mejorar el rendimiento.
Java2D se ha reescrito en gran parte y se ha optimizado todo lo posible para el trabajo real, dejandose de lado ciertos aspectos más enfocados "a la galería" que a la realidad. Se hablan de cifras de mejora del rendimiento impresionantes, de un 40% respecto a la versión 1.3 y de un 100% respecto a la 1.2. Es posible que los usuarios de Linux no se acaben de creer el cambio, ya que toda lacomunicación con el servidor X ha sido reescrita y mejorada de forma más que evidente, se habla de multiplicar por 5 o incluso más el rendimiento. Por alguna razón, la maquina vistual de Java se comunicaba con el servidor X por medio de imagenes de bits (bitmaps), ahora lo hace directamente por medio de comandos X.
La impresión en Java es en realidad un trabajo gráfico, hay que dibujar la página antes de imprimirla (podeis ver el capitulo refernte a impresion en el proyecto de "traducción de Swing" de esta página). Este API también se hamejorado de forma ostensible, obteniendose ahora no solo un mejor rendimiento, si no también un mayor cotnrol sobre la página y todo el proceso de impresión.
También se ha reescrito enteramente el sistema de control del foco en AWT, una de las partes que nunca ha trabajado realmente bien en Java. La reescritura ha sido completa, así que a la espera de encontrar nuevos bugs esta "impoluta".
En lo referente a Swing, a la par de las mejoras de rendimiento, el problema de look&feel presente en los JFileChooser en Windows se considera resuelto, y se han añadido nuevos componentes gráficos para enriquecer nuestras interfaces de usuario, entre ellos JSpinner, JProgressBar, JTAbbedPanel, etc.
Otras mejoras que se podrián definir como dentro de "java gráfico" son las mejoras en el tratamiento de ficheros con formato gráfico, un mejor soporte de las fuentes True-Type, soporte para las "imprescindibles" ruedas del ratón.
Conectividad.
Uno de los aspectos centrales de la conectividad en los últimos tiempos es XML, y por supuesto Java tiene que prestar la atención que esta "fiebre" requiere convirtiendose en un aspecto de los más "mimados" por Java. La nueva J2SE tiene soporte completo para las APIs SAX 1.0 y 2.0, para DOM 1.0 y 2.0, para XSLT, todo incluido en el núcleo por medio de JAXP. La idea era incluir nuevas APis, como podrían ser JATO (http://jato.org) y JDOM (http://www.jdom.org), pero se las considera aún inmaduras, por lo que se aplaza su inclusión.
Después de las guerras entre Sun y Microsoft y de que el desarrollo de aplpet halla caido a mínimos debido a los problemas entre navegadores, el nuevo Java Plugin ofrece también númerosas mejoras. Ofreciendo ahora mucha mayor interacion con el browser (se puede acceder a su DOM al estilo de Javascript) y con el usuario (mostando un indicador del proceso de carga del applet en cada momento).
También se añade soporte para IPv6, se autriza por primera vez la distribución fuera de EEUU del API de seguridad (anteriormente prohibida por las leyes estadounidenses al considerarse poco menos que secreto de estado), la inclusión de servicios de DNS dentro del JNDI, un nuevo JDBC 3.0 totalmente integrado en el núcleo de Java, un practicamente completo soporte de CORBA (incluidos POA -portable object adaptor- y CosNaming para implementaciones persistentes), y soporte para el Java Web Start también en el núcleo del lenguaje.
Otras novedades.
Mejorar lo existente siempre es bueno, pero por supuesto al lenguaje le faltaban cosas. Algunas de las que se han incluido en esta nueva versión son:
- Soporte total a Unicode 3.0, con nuevos juegos de caracteres, como por ejemplo el Hindi, si alguno sabe hablarlo ;-).
- Un debugger avanzado (JDPA) que permite, entre otras cosas, el cambio de clases en tiempo de ejecución.
- I/O enfocada a mejorar el rendimiento del buffer, a hacerlo más escalable, y a las tan deseadas expresiones regulares.
- API de registro de las operaciones del sistema (log).
- Inclusión de asertos simples en el núcleo como cambio en el lenguaje.
- Soporte a las excepciones en cadena, lo que hará más sencillo llegar a la fuente de las mismas.
Conclusión.
Como ya se ha dicho, esta nuevo J2SE 1.4 se ha centrado más en la mejora del rendimiento que en las grandes novedades. El rendimiento es uno de los factores más importantes para la aceptación de cualquier cosa, por lo que si Java mejora en ese aspecto, junto con lo ya conseguido en los ámbitos de servidores y multiplataforma, podremos afirmar realmente que Java ha llegado a la madurez.
Habra que conformarse por ahora con las versiones beta (se espera aún otra antes de la versión final) hasta la llegada a finales de verano o pincipios de otoño de la versión 1.4 para saber si realmente el rendimiento mejora hasta el límite del que se habla.
PS: si alguién ha oido hablar de "un Java llamado Merlin", que sepa que es el nombre de la versión 1.4 en tiempo de desarrollo. La 1.5 se llama "Tiger". Ya sabemos como funcionan estos americanos ;-).
|
j2se 