Java Standard Edition

Java 2 está muriendo...

El día ayer finalizó el soporte para Java Standard Edition ver. 1.4; por otra parte también a Java SE 5 (aka 1.5) solo le resta un año más de vida. Últimas versiones de la plataforma Java que alguna vez se denominó "Java 2" (J2SE).

En realidad Java SE 1.4 entra en su fase de final de servicio de su ciclo de vida (EOSL por sus siglas en inglés) después de 6 años y medio de soporte, por lo que si bien no está del todo muerto, si que agoniza, ya que dejan de atenderlo a menos que alguien pague por ello (ver Java SE for Business). La misma suerte correrá dentro de un año Java SE 5.

¿Y que pasará con J2EE? Pues al tener su base en J2SE es de esperar que también tenga sus días contados. Pero eso ya será definido por cada implementación, algunas ya lo han hecho...

Más información en:

Java SE Support Road Map

Netbeans6.5 Release Candidate2

Ya salió a la luz la rc2 de netbeans 6.5

http://download.netbeans.org/netbeans/6.5/rc/

Entre las características más sobresalientes que incluye son desarrollo web, empresarial, escritorio, aplicaciones móviles, php, javascript, java, C/C++ , Editor UML, soporte para bases de datos, SOA, Rest, Profiler, soporte para SCM, Tomcat/Glassfish por default, Ruby y Groovy, soporte robusto para php, debugging de javascript para firefox e internet explorer (con sugerencias de compatiblidad entre navegadores), soporte para jquery, prototype y otras librerías js. Esta versión también incluye muchas mejoras en el editor de java y ruby on rails, desarrollo C/C++. En la parte java se incluye soporte y autocompletado para hibernate, spring, importador de proyectos eclipse, y algo llamado compile on save (Lo copiaron de eclipse y consiste en compilar al momento de guardar las clases para simular "Live class reloading" osea ver los cambios en caliente sin reiniciar manualmente el servidor). Esta release candidate incluye mejoras a la versión beta y muchas muchas características no incluidas aquí .... todo en un mismo paquetito con la opción de descargarlo en español

Modificación de código con Javassist

Recientemente tuve contacto con esta librería, que permite hacer cosas bastante interesantes. El objetivo central de la misma es permitir la manipulación de de clases de Java, directamente sobre los binarios, en tiempo de ejecución.
Dentro de su funcionalidad está la capacidad de leer y modificar las anotaciones que tiene un método o clase, siempre y cuando hayan sido definidas con Retention.CLASS o Retention.RUNTIME, es decir, anotaciones que se quedan en la clase compilada pero son ignoradas por la JVM al momento de utilizar la clase, o bien anotaciones que se quedan en la clase y son visibles en tiempo de ejecución.
Lo interesante es que se pueden ver las anotaciones y otras propiedades de una clase y sus métodos, antes de cargarla a la JVM, esto porque se lee el archivo .class directamente y se interpreta, e incluso se puede modificar. Por ejemplo, se pueden agregar anotaciones a una clase que no las tenía.
Incluso parece ser que se pueden modificar métodos, agregando código al principio o al final del mismo; crear clases al vuelo que heredan de clases existentes.

Liberado Java 6 Update 10

Ya se encuentra disponible para su descarga la tan esperada actualización 10 de Java SE 6.0: Java 6 Update 10.

Java 6 Update 10 es un importante release para toda aplicación de escritorio Java y, por supuesto, para el próximo release de Java FX a finales del presente año. Por supuesto, Java 6 Update 10 también puede ejecutar GlassFish y otros trabajos del lado servidor...

Celebrando 10 años de Netbeans

Ah! que rápido se pasa el tiempo,... como se dice por allí, "parece que fue ayer.." total que ya es el cumpleaños número 10 de Netbeans.

En la página del proyecto de Netbeans se hace una invitación para que se junte la comunidad y celebre este importante acontecimiento, a la vez que se reconozca a la gente y a los proyectos que han hecho posible el éxito de esta gran herramienta.

http://www.netbeans.org/birthday/

Al momento de publicar esta nota se encuentra disponible la versión 6.1 de la cual puedo apreciar tres características importantes, desde mi punto de vista, claro.

El soporte para JavaScript, El soporte y la integración por defecto con el Framework de Spring y El soporte y la integración con MySQL.

En fin, pues no me queda más que hacer la invitación para que prueben y evaluén esta herramienta si es que aún no la conocen.

http://www.netbeans.org/


Sale y vale
Byte

Reto Programacion _JAVA

Hola bueno pues vamos a ponerle algo de emocion a esto.. primero que nada mucho se ha hablado de la seguridad que proporciona java, sobre todo porque corre en su maquina virtual sin embargo segun he estado leyendo hay una clase que permite crear nuevos procesos independientes de la maquina virtual el reto es este construir un programa que permita lanzar procesos(nombre y numero de megas a ocupar), esto sencillo pero lo que se va a destacar de aqui es la manera de programacion y la calidad.. espero colaboren poniendo sus soluciones...

Crear teclas aceleradoras para actions

Con este método podemos asignar teclas acelaradoras a nuestros actions

        protected void crearAcelerador(int key, Action action) {
                getRootPane()
                                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
                                .put(KeyStroke.getKeyStroke(key, 0),
                                                action.getValue(Action.SHORT_DESCRIPTION));
                getRootPane().getActionMap().put(
                                action.getValue(Action.SHORT_DESCRIPTION), action);
        }

Lo podemos usar de la siguiente manera:
crearAcelerador(KeyEvent.VK_ESCAPE, salirAction);

Con esto al presionar la tecla escape se ejecutará el código que tenemos en la acción salir.

Fábrica de ventanas

Este código lo podemos usar en nuestro menú principal para crear las ventanas de la aplicación a partir del nombre del action que este asignado a un menú o botón

        private class VentanaAction extends AbstractAction {
                private static final long serialVersionUID = 1L;

                VentanaAction(String name, int key) {
                        super(name);
                        putValue(MNEMONIC_KEY, key);
                }

                private void crearVentana(AbstractAction action) {
                        try {
                                JFrame form = (JFrame) Class.forName(
                                                "presentacion." + action.getValue(NAME) + "Form")
                                                .newInstance();
                                form.setVisible(true);
                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                }

                public void actionPerformed(ActionEvent e) {
                        crearVentana(this);
                }
        }

Nuestro action puede estar declarado así:
private VentanaAction consultasAction = new VentanaAction("Consultas", KeyEvent.VK_C);

Con esto al presionar alt + c se instanciara la clase presentacion.ConsultasForm que hereda de JFrame.

Métodos para mostrar mensajes

Métodos sencillos para mostrar un mensaje de advertencia y otro para confirmar con si o no.

        protected void mostrarMensaje(String mensaje) {
                JOptionPane.showMessageDialog(this, mensaje, "Advertencia",
                                JOptionPane.WARNING_MESSAGE);
        }

        protected boolean confirmarMensaje(String mensaje) {
                return JOptionPane.showConfirmDialog(this, mensaje, "Confirmar",
                                JOptionPane.YES_NO_OPTION) == 0;
        }

Código para habilitar/deshabilitar JTextFields

Con este método podemos habilitar o deshabilitar uno o varios JTextFields además de asignar otros colores

        protected void habilitarControles(Component component, boolean b) {
                if (component instanceof JTextField) {
                        JTextField text = ((JTextField) component);
                        text.setEnabled(b);
                        if (b) {
                                text.setDisabledTextColor(new Color(0, 0, 0));
                                text.setBackground(new Color(255, 255, 255));
                        } else {
                                text.setDisabledTextColor(new Color(0, 40, 240));
                                text.setBackground(new Color(240, 240, 240));
                        }
                } else {
                        if (component instanceof Container) {
                                for (Component c : ((Container) component).getComponents()) {
                                        habilitarControles(c, b);
                                }
                        }
                }
        }
Distribuir contenido