lunes, 18 de agosto de 2014

Java muestra los virus mas mortales



Aqui un ejemplo de Java 8 usando lambdas para mostrar el listado de virus mas mortales en humanos, incluyendo el Ebola:



public class Ejemplo {

    public static void main(String[] a) {
        //Antes de Java 8 :
        List virusMortales = Arrays.asList("Ebola", "SIDA", "Gripe Aviar", "Dengue");
        for (String virus : virusMortales) {
           System.out.println(virus);
        }

        //En Java 8:
        virusMortales.forEach(n -> System.out.println(n));

        // Usando Method Reference:
        virusMortales.forEach(System.out::println);
    }
}

Corregir el error lambda expression not expected here

Si NetBeans te muestra el mensaje:

lambda expression not expected here

lambda expressions are not supported in -source 1.7
  (use -source 8 or higher to enable lambda expressions)




Lo que debes hacer es dar click derecho sobre el proyecto, dar click en Propiedades  y en pestaña Sources seleccionar la version de Java 8 y no deberas tener problema:


NetBeans 8: Maximizar y minimizar la ventana de log


Ahora en NetBeans para minimizar la ventana de Log, es necesario dar doble click en la pestaña de titulo, a diferencia de antes que se utilizaba la tecla Escape. Esto creo que lo hicieron para parecerse mas a Eclipse, a mi parecer esto fue buena idea.

Migrando Netbeans 7.4 a 8.0

La migración de un proyecto de NetBeans de la versión 7.4 a la 8.0 es bastante sencilla.

Simplemente instala previamente la versión java 8 (JDK), despues instala NetBeans 8.0.

Cuando abras NetBeans por primera vez detectara automaticamente que existia una version previa, y mostrara una ventana preguntando si se desea importar la información de la versión anterior, seleccion en "OK" y los proyectos que estabas usando los veras automaticamente en la nueva versión.

Adicionalmente, si tienes o usas JRebel, te preguntara si deseas importar los plugins, este proceso es bastante directo, ya que se descargara el plugin, se instalara, y si tenias una licencia, se configurara automaticamente, no sera necesario que especifiques la llave o el archivo de licencia para continuar usando JRebel.

El unico detalle es que cuando quieras arrancar el proyecto, seguramente veras que solo se muestra la pagina por default de Tomcat (si es que es el servidor de aplicaciones que estabas usando), asi que lo que tendras que hacer sera hacer un Deploy al proyecto para que el archivo WAR se instale en tu servidor de aplicaciones (Tomcat en mi caso) y despues deberas poder ejecutar tu proyecto sin problemas.

Asi que no tengas miedo y empieza a usar la nueva versión de Java y NetBeans, el cambio sera muy directo.

martes, 27 de mayo de 2014

Novedades de Java 8

Nuevas caracteristicas/Funciones de JDK 8

Descarga aquí el infográfico en resolución completa.
 

viernes, 4 de diciembre de 2009

Migracion de MySql a Derby/HsqlDb

Problemas para migrar de Mysql a Derby
1) Derby no tiene las funciones de MySql como era de esperarse
2) Derby no tiene la habilidad de desactivar los foreign constraints para hacer cargas masivas
3) Derby no agrupa por funciones definidas por el usuario
Problemas para migrar de Mysql a HsqlDb
1) Hsqldb si permite columnas con auto incremento o identidad, pero deben ser forzosamente las llaves primarias, a menos que se defina una secuencia y un trigger
2) Los Triggers deben ser clases Java que importan de la clase Trigger de la api de Hsqldb, por tanto no se puede exportar directamente el esquema de mysql a DDL
HsqlDb si permite desactivar constraints
Los clientes para Hsqldb pueden ser DbVisualizer, Aqua Data Studio y RazonSQL
Los clientes para Derby pueden ser Aqua Data Studio y SquirrelSQL

La herramienta recomendada para migrar de MySql a Derby llamada DDLUtils de Apache es buena opcion si no tuviera bugs, el proposito de esta herramienta es obtener el esquema de la base de datos origen a un archivo xml y los datos de la bd a otro archivo xml, para despues con la misma herramienta exportar tanto el esquema como los datos a la nueva base de datos destino. El archivo de esquema que genera la herramienta se genera correctamente, sin embargo el archivo de los datos, tiene muchos errores, se cortan tanto los valores como los nombres de los campos.

Existe un servidor embebido de MySql que se podria utilizar para Java pero por los comentarios que hay en internet, no es viable ya que no es un jar, sino un .dll, exclusivo para windows y hay muchos problemas para convertir las cadenas del mysql a java, puesto que mysql esta desarrollado en C y por la interfaz con java requeriria mucho trabajo, por lo tanto no es viable.

Instrucciones para ajustar el DDL de una base de datos de MySql para una de HSQLDB
  • REMOVER UNSIGNED
  • REMOVER () PARENTESIS DESPUES DE INT
  • TEXT DEBE SER VARCHAR
  • AUTO_INCREMENT DEBE SER IDENTITY
  • CAMBIAR PRIMARY KEY POR UNIQUE
  • EL COMANDO DEFAULT SE DEBE PONER ANTES DE NOT NULL
  • REEMPLAZAR '''' POR ''
    REMOVER ZEROFILL
Los inserts quedan igual, no requieren modificacion
Las vistas son dificil de migrar a menos que sean muy sencillas
Los ALTER para agregar los constraints no requieren modificacion
Los Query's deben ser modificados para los Selects que utilizan Order By en la sentencia Select deben estar todos los campos que sean referenciados en la sentencia Order By o se generara una Excepcion.

Crear funciones Java para Derby
Es necesario crear la clase y los metodos de tipo estatico, despues empaquetar en un jar y ejecutar los siguientes comandos en Derby
Para instalar el Jar:
call sqlj.install_jar('c:\derby\lib\derbyFunciones.jar', 'user3.udfdemo', 0);
call syscs_util.syscs_set_database_property ('derby.database.classpath', 'user3.udfdemo');
Para crear la funcion en Derby:
create function concat(char, char) RETURNS CHAR PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'test.FuncionesDerby.concat'
Para desinstalar el Jar:
call SQLJ.remove_jar('user3.udfdemo',0);