Buscar
Social
Ofertas laborales ES
viernes
may162008

Spring Web Flow 2.0

SpringSource ha publicado la versión 2.0 de su framework Web Flow. Este framework hasta la versión 1 estaba enfocado sobre todo a tener una manera simple de construir aplicaciones web tipo wizard, que requieren de varios pasos (o flujo) para lograr un objetivo. Para ello, de forma similar a Seam, establecía nuevos níveles para guardar datos además de los típicos Request, Session y Application: Flash y Conversation; además de integración con otros frameworks web como Spring MVC y JSF.

Sin embargo, en esta nueva versión Web Flow ha evolucionado hasta convertirse en la base de la estrategía web de Spring Source. Como tal además de proveer los flows para definir aplicaciones y el estado conversacional de los mismos; ahora en esta nueva versión incluyen un módulo Javascript y una mayor integración con JSF.

El módulo Javascript (Spring JS) permite servir scripts y CSS a una aplicación web de forma dinámica a través de un Servlet y sirve como una capa de abstracción para el uso de librerías JS, aunque por el momento solo soporta Dojo, en el futuro se extenderá a otras. Este módulo permite la decoración de páginas HTML con funcionamiento avanzado, con el objetivo de que en navegadores sin capacidades javascript o Ajax, la aplicación siga siendo usable; un concepto explotado en JQuery. Además brinda un bridge para realizar peticiones Ajax basado en enviar fragmentos de una página web vía Ajax para sustituir fragmentos existentes, estos fragmentos son gestionados por la librería Tiles.

Por otro lado, el módulo Spring Faces permite integrar Web Flow con el ciclo de vida de JSF con el fin de permitir la gestión de este tipo de aplicaciones a través de Flows. Para ello se pueden sustituir varios elementos de JSF con Spring, como la gestión de los managed beans, la navegación, la resolución de vistas, etc. La idea es seguir explotando los componentes JSF pero gestionarlos con Web Flow (y de forma añadida integrarlos con otros productos Spring como Spring Security) de forma transparente.

En resumen, Web Flow 2.0 se enfoca en mejorar la integración con otras librerías como Tiles, librerías Javascript y JSF y en simplificar el framework; por lo que mencionan que las líneas de código se han reducido a la mitad, se ha estandarizado el uso de EL (con soporte para Unified EL y OGNL) para la definición de acciones en un Flow

Con este anuncio, Spring Source sigue con la publicación de nuevos productos de su ya extenso portafolio cubriendo las necesidades de la industria.

jueves
may152008

Crear un instalador para programas Java - Andrés Guachún

Bueno amigos, Soy Andrés Guachún, y soy de Ecuador. Voy a tratar de explicarles como hacer un instalador en Java en 5 minutos. Al finalizar van ha ver que es tan fácil pero les va ha servir un 100%. Me puse hacer este tutorial porque no existe este tema en ninguna parte y es realmente necesario hacerlo para poder competir con otros lenguajes como los de Microsoft.

Bueno, primero les voy a decir que necesitamos, para que no haiga ninguna complicación en encontrarlos voy a ponerlos en el mismo tutorial los enlaces ademas de que todos estos son free o de libre distribucion, ademas los programas son pequeños algunos de estos no poseen ni 1 MB, los programas necesarios son:


· JavaExe creado por DevWizard
· NSIS scriptable install system 2.36.
· Y un programa en java con su clase principal.


Ahora necesitamos hacer al programa ejecutable, pero existen varias maneras pero la más fácil la voy hacer aquí. Es por eso que utilizamos JavaExe este es un pequeño programa pero funciona perfectamente. Aquí les voy a indicar como poner el icono que deseemos para la aplicación, primero copiamos cualquier icono con extensión .ico a la carpeta de JavaExe, en este cambiamos el nombre del icono como JavaExe.ico antes de esto debes tener en cuenta que debe por lo menos tener 3 archivos esta carpeta el JavaExe.exe, MergeIco.exe y el icono con el nombre JavaExe.ico, ya que tengamos estos tres icono solo ejecutamos MergeIco.exe este si el formato del icono es correcto este se pone en el Javaexe.exe, sino posee un icono con formato correcto lo único que nos mostrara un mensaje indicando que el icono no puede ser reemplazado, a continuación las Imágenes



Ejecutable en Java

    1.    Primero descomprime el archivo JavaExe.zip

javaexe

2.     Ingresa a la carpeta., esta carpeta tiene varios archivos  pero los más importantes son JavaExe.exe y MergeIco.ico
  javaexefiles

 3.    Ahora copia el icono que desees  colocarle a tu programa  y cámbiale el nombre  al de JavaExe

Cambiaricono

4.    Ahora ejecutas el MergeIco este automáticamente te cambiará el icono.

iconocambiado


5.    Ahora copiamos nuestro programa dentro de la carpeta de nuestro programa.

javaexecopy

6.    Ahora le cambiamos el nombre por la clase que tiene nuestra clase main.

javaexename

 7.    Eso es todo ahora puedes aprovechar el programa ejecutable.

Crea tu instalador para Java

Para crear un instalador es necesario tener instalado NSIS  y entender un poco como funciona este,  primero debes saber que funciona  como un script con extensión .nsi, este es el archivo más importante para la creación de un instalador, ya que daremos la información de donde se va ha instalar, si posee el desinstalador, además de colocar los accesos directos al programa.

1.    Instalación de NSIS, esta instalación no voy a llegar a detalles ya que solo es doble clic y seguir las ventanas que vayan saliendo.

 

 

nsis

2.    Ahora creamos un archivo .nsi, este lo pueden llamar Merge.nsi, en verdad el nombre no importa pero debe tener la extensión nsi, este archivo puede ser creado en cualquier editor en mi caso lo voy a hacer con el block de notas, ya que es el mas básico y se encuentra en cualquier maquina que tenga instalado Windows.

MergeArchivo

3.- El archivo Merge.nsi debe tener el siguiente código, este código puede ser modificado para que cada persona ponga los datos que deseen sin tener que crear un archivo nuevo cada ver que deseen crear un instalador:

; Merge.nsi
     ;
     ; Este instalador toma todos los archivos los instala en archivos de programas o en un directorio
     ; que el usuario seleccione, luego crea un desintalador además de crear en el menú de inicio
     ; crea accesos directos uno para el programa y otro para el desinstalado.
     ;
     ;--------------------------------
     
     ; Nombre del instalador
     Name "Merge"
     
     ; El Archivo de Salida
     OutFile "MergeInstall.exe"
     
     ; El directorio default para la instalación
     InstallDir $PROGRAMFILES\Merge
     
     ; Clave en el registro de Windows chequeado para el directorio (Si existe, Este 
     ; se sobre escribirá en el viejo)
     InstallDirRegKey HKLM "Software\Merge" "Install_Dir"
     
     ; Requerir permisos para Windows Vista
     RequestExecutionLevel admin
     
     ;--------------------------------
     
     ; Paginas
     
     Page components
     Page directory
     Page instfiles
     
     UninstPage uninstConfirm
     UninstPage instfiles
     
     ;--------------------------------
     
     ; El material para la instalación
     Section "Merge (requerido)"
     
       SectionIn RO
       
       ; Toma el directorio de que se selecciono para la instalación.
     
       SetOutPath $INSTDIR
       
       ; Pone los Archivos a instalar
       File "ClaseVector.class"
       File "Listas.class"
       File "numero.class"
       File "Tranformaciones.class"
       File "VentanaPrincipal.class"
       File "VentanaPrincipal.exe"
     
       
       ; Escribimos los registros de instalación dentro del directorio del registro
       WriteRegStr HKLM SOFTWARE\Merge "Install_Dir" "$INSTDIR"
       
       ; Escribimos las claves de desinstalación de Windows
     
       WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "DisplayName" "Merge"
       WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "UninstallString" '"$INSTDIR\uninstall.exe"'
       WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "NoModify" 1
       WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "NoRepair" 1
       WriteUninstaller "uninstall.exe"
       
     SectionEnd
     
     ; Sección opcional (Pudiera ser deshabilitada pero en este caso necesitamos crear todo.)
     Section "Start Menu Shortcuts"
     
       CreateDirectory "$SMPROGRAMS\Merge"
       CreateShortCut "$SMPROGRAMS\Merge\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
       CreateShortCut "$SMPROGRAMS\Merge\Merge (MakeNSISW).lnk" "$INSTDIR\VentanaPrincipal.exe" "" "$INSTDIR\VentanaPrincipal.exe" 0
       
     SectionEnd
     
     ;--------------------------------
     
     ; Desinstalador
     
     Section "Uninstall"
       
  ; Remover las claves del Registro
     DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge"
     DeleteRegKey HKLM SOFTWARE\Merge
     
       ; Eliminados los archivos y los desinstalamos
       Delete $INSTDIR\ClaseVector.class
       Delete $INSTDIR\Listas.class
       Delete $INSTDIR\numero.class
       Delete $INSTDIR\Tranformaciones.class
       Delete $INSTDIR\VentanaPrincipal.class
       Delete $INSTDIR\VentanaPrincipal.exe
       Delete $INSTDIR\uninstall.exe
     
       ; Eliminamos todos los accesos directos del menú de inicio
       Delete "$SMPROGRAMS\Merge\*.*"
     
       ; Eliminamos las carpetas creadas
       RMDir "$SMPROGRAMS\Merge"
       RMDir "$INSTDIR"
     
     SectionEnd

 

En este código todo lo que esta con color rojo es lo mas importante, son las partes claves donde colocas los archivos del programa que necesitas para ejecutarlo. Ahora tambien puedes cambiar el nombre merge por lo del programa que este haciendo a continuacion voy a explicar cada linea es un poco tedioso y aburrido si  lo  desean pueden leerlo o pasen al punto Nº 4.

Para una mayor explicación en esta parte les voy a explicar un poco el código como ya se habrán dado cuenta todo lo que se encuentra al inicio con un punto y coma son comentarios.


Name "Merge"
Es el nombre interno del instalador este puede ser cualquier nombre que le desees dar.
OutFile "MergeInstall.exe"
Es el archivo que nos va ha devolver al finalizar la compilación, como yo deseo que el instalador se llama MergeInstall.exe.
InstallDir $PROGRAMFILES\Merge
Esta línea especificamos en donde se va ha instalar el programa como nosotros sabemos toda computadora puede cambiar la localización de archivos de programas, entonces en este caso NSI, posee varias variables que toma la localización automáticamente de  cualquier computador, entre estas variables se encuentran: $PROGRAMFILES, $DESKTOP.
Como se puede apreciar en este caso en particular vamos a instalar donde es común en el archivo de programas, y para crear otra carpeta dentro de esta solo colocamos el nombre de la nueva carpeta en este caso Merge.
InstallDirRegKey HKLM "Software\Merge" "Install_Dir"
Esta línea sirve para colocar dentro del registro de Windows la localización de instalación de nuestro programa. Como podemos ver este se guarda en el registro en la carpeta Software/Merge, donde Merge es el nombre del programa y “Install Dir” va ha tomar automáticamente donde se instalo el programa.
RequestExecutionLevel admin
Este instalador sirve tanto en Windows XP como para el Vista, pero la condición es que el Windows Vista necesitas autorización para instalar por eso colocamos la línea de RequestExecuteLevel.
Page
Esto son las partes más importantes, ya que un instalador creado en NSI se divide por page o paginas cada página es una parte clave de la instalación, un instalador por lo menos debe poseer 1 página, para una página se realiza de la siguiente manera:

Page Nombre de la Página.
En el ejemplo se declaran 3 paginas las cuales la primera es para recoger los componentes, la segunda colocar en los directorios y por ultimo instalarlos en su localización de instalación.
Page components
Page directory
Page instfiles


UninstPage
El uninstpage tienen la misma percepción de las páginas con la variante que estas no serán utilizadas para la instalación sino para lo contrario     que es la desinstalación, ejemplo:
UninstPage uninstConfirm
UninstPage instfiles

Section "Merge (requerido)"
Esta línea sirve para decir que comienza la pagina de instalación, la cual la primera va ha ser la pagina de componentes según nuestro ejemplo. En esto podemos cambiar el nombre el cual es “Merge (requerido)” por el que deseemos, esto es importante ya que aparecerá en la primera parte del proceso de instalación del programa.
SectionIn RO
Aquí indicamos la existencia de una pagina nueva que es interna, esta es la que le sigue de las que declaramos en este caso va ha ser la pagina de directorios.
SetOutPath $INSTDIR
En este paso especificamos el directorio receptor de los archivos. Pero este dato es una constante del NSI, poniendo $INSTDIR decimos que colocara en el directorio que seleccionamos al momento de instalar.
File
Aquí especificamos cada archivo que va ha tener el instalador en este caso por lo menos para java es de colocarle cada archivo .class, también podríamos hacer un solo archivo jar, y añadir solo este, pero como necesitamos por lo menos en este ejemplo VentanaPrincipal.exe, ya que este ejecuta el programa.
File "ClaseVector.class"
File "Listas.class"
File "numero.class"
File "Tranformaciones.class"
File "VentanaPrincipal.class"
File "VentanaPrincipal.exe"

Instalación en el registro
El registro es una parte muy importante al momento de realizar una instalación ya que dirá en que parte se instala, y donde va ha encontrarse su desinstalador, para el caso de desinstalar por medio del  programa de Windows. A continuación se muestra cada una de estas líneas.
WriteRegStr HKLM SOFTWARE\Merge "Install_Dir" "$INSTDIR"
Línea que indica al registro donde va ha ser instalado.

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "DisplayName" "Merge"
En esta línea se muestra el nombre que va ha mostrarse al momento de llamar al desinstalador de Windows, en nuestro caso va ha ser Merge, al momento de realizar sus instaladores coloquen el nombre de su programa donde se encuentra Merge.

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "UninstallString" '"$INSTDIR\uninstall.exe"'
Aquí indicamos en donde se localizara el desinstalador si este existe esto lo hacemos colocando “$INSTDIR\uninstall.exe”

WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "NoModify" 1
WriteRegDWORD HKLM
Esta opción es para indicar que nuestro programa no puede ser modificado.
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "NoRepair" 1
WriteUninstaller "uninstall.exe"

Esta es la ultima línea que se refiere al registro por lo menos a lo que se refiere a la instalación, y significa que el programa no puede ser reparado, sino solo reinstalado encima.

SectionEnd
Aquí indicamos que se termino la sección “Merge (Requerido)”.
Section "Start Menu Shortcuts"
Aquí indicamos que comenzamos otra sección la cual es para crear los accesos en la barra de menú de inicio.

CreateDirectory "$SMPROGRAMS\Merge"
Crea el directorio para los accesos directos.

CreateShortCut "$SMPROGRAMS\Merge\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
Crea el acceso directo para el desinstalador

CreateShortCut "$SMPROGRAMS\Merge\Merge (MakeNSISW).lnk" "$INSTDIR\VentanaPrincipal.exe" "" "$INSTDIR\VentanaPrincipal.exe" 0
Crea el acceso directo del Programa.
 
SectionEnd
Indicamos la terminación de la sección de accesos directos.

Section "Uninstall"
Comienzo de la sección de desinstalación.
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge"
Primero eliminamos  en el registro el desinstalador.

DeleteRegKey HKLM SOFTWARE\Merge
Después indicamos  que deseamos eliminar del registro la entrada de la localización del programa.
Delete
Ahora vamos a eliminar cada archivo que se instalo o que teníamos en el instalador como se puede ver a continuación vamos eliminando cada clase y archivo que lo instalamos, además el desinstalador, para esto colocamos el comando delete $INSTDIR\”nombre del archivo”.
Delete $INSTDIR\ClaseVector.class
Delete $INSTDIR\Listas.class
Delete $INSTDIR\numero.class
Delete $INSTDIR\Tranformaciones.class
Delete $INSTDIR\VentanaPrincipal.class
Delete $INSTDIR\VentanaPrincipal.exe
Delete $INSTDIR\uninstall.exe


Delete "$SMPROGRAMS\Merge\*.*"
Ahora para no dejar basura que siempre se acostumbra al momento de desinstalar un programa se la delete “$SMPROGRAMS\Merge\*.*”, así eliminamos accesos directos del menú de inicio.
RMDir "$SMPROGRAMS\Merge"
Ahora eliminamos la carpeta de acceso directo del menú.
RMDir "$INSTDIR"
Eliminador la carpeta de instalación.

SectionEnd

Aquí indicamos la finalización de la sección de desinstalación y del programa.

Después debes guardar este archivo en la misma carpeta del programa esto se debe ya que los .class y el .exe, el que sirve para ejecutar el programa, se encuentran en esta.

ArchivoInstalador

 

4.     Después de crear el archivo Merge.nsi, este debe ser compilado para lo cual abrimos el NSIS
 

nsismenu

5.    Ahora damos en compile NSI scripts
  comenzar

 6.    Luego de esto se abre la siguiente ventana, esta es el compilador el cual solo le debemos dar nuestro instalador.

compilador

7.    Para compilar solo damos en File > Open, y seleccionamos el archivo a compilar, como en este ejemplo creamos el Merge.nsi, es el que lo vamos a utilizar.

abrir

8.    Luego de seleccionar el archivo este será compilado automáticamente.

compilado

9.    Ahora abrimos la carpeta donde se encuentra  nuestro programa y veremos que existe un nuevo archivo Mergeinstall.exe, el cual es el instalador ya  creado, y listo eso es todo  para crear el instalador.
 

instalador

Prueba del Instalador


Ahora si quieres ejecuta el archivo MergeInstall, o cópialo en el escritorio y ejecútalo ahí, de cualquier modo te presentara la siguiente ventana de instalación:

instalacion1

 

En este instalador puedes seleccionar los programas que deseas instalar a instalar, en este caso sabemos que el programa es necesario entonces el Merge no se puede quitar pero los accesos directos si por eso esta bloqueado la selección Merge.
También como todo instalador tenemos la opción de seleccionar la dirección de donde vamos a instalar.
 

instalacion2

instalacion3

Al finalizar la instalación vas a encontrar en la barra de inicio de Windows y lo puedes ejecutar, pero además te crea el desinstalador.


instalado 

Si ejecutas el desinstalador te darás cuenta que es uno común como cualquier instalador, el cual eliminara todos los archivos que se creo en la instalación, además de borrar del registro algunas entradas que creamos.

desinstalar

Eso es todo amigos, este instalador es uno sencillo dentro del NSIS existen muchos mas instaladores mas profesionales, pero solo quería hacer algo sencillo que nos funcione a todos, igual hay como aplicarlo en nuestros instaladores solo copiando el archivo merge.nsi y modificarlo de acuerdo a sus necesidades.

Ahora el resultado final puedes descargarlo en el siguiente link:

    MergeInstall.exe

Y todos los archivos para hacer este instalador dercardalo en el siguiente link:

    Merge.zip

Si tienen alguna pregunta, comentario o sugerencia envíame un mensaje a acuario_1ro@hotmail.com.

Atte.

Andrés Guachún

 

jueves
may152008

Google Doctype: Documentación sobre teconologías web

Mark Pilgrim de Google ha publicado su proyecto Doctype, una enciclopedia gratuita y abierta sobre tecnologías web "escrita por desarrolladores web para desarrolladores web". Incluye artículos y ejemplos escritos por los ingenieros de Google sobre una variedad de temas relacionados con el desarrollo web: seguridad, desempeño, caching, manipulación de DOM, CSS, etc. Por ahora contiene cerca de 8000 líneas de código javascript que componen la librería javascript de Google que junto con doctype se publicó como opensource bajo una licencia propia.

Además, Doctype busca ser una enciclopedia de referencia para cada elemento DOM, cada atributo, cada método, cada propiedad CSS, etc respaldada con test cases. Cualquier persona con una cuenta de correo en GMail puede empezar a editar y añadir artículos desde ahora.

Si se navega por los artículos que por ahora componen a Doctype, se pueden encontrar artículos sumamente técnicos y llenos de ejemplos para respaldar lo que explican. Desde artículos sobre buenas prácticas y detallados how-to's hasta simples referencias de propiedades CSS. Sin duda esta enciclopedia se convertirá en referencia obligada para todos los desarrolladores web. 

Un gran esfuerzo de la gente de Google para brindar a las tecnologías web de un manual de uso y una enciclopedia de referencia que hace mucho que se necesita. ¿Que te parece Doctype?

jueves
may152008

Compass 2.0: Lucene hecho simple

Shay Banon ha publicado la versión 2.0 de Compass, un motor opensource de búsquedas de indexación basado en Lucene. El objetivo de Compass es simplificar el uso de Lucene para realizar índices de tus objetos de dominio y poder hacer búsquedas de ellos de forma rápida. En palabras de su creador "Compass es a Lucene, lo que Hibernate es a JDBC".

Para ello, el API de la librería es bastatante simple y se basa sobre todo en anotaciones sobre tus objetos de dominio, de forma similar a como se trabaja con cualquier ORM como JPA o Hibernate. 

Shay Banon en declaraciones a InfoQ, destaca las siguientes nuevas características en esta versión 2.0:

  • Simplificación de la integración con ORM.
  • Integración con Grids de datos distribuidos. Integración con GigaSpaces, Terracota y Coherence.
  • Capacidad para realizar búsquedas en un Grid de datos. Los cambios que ocurran en un grid de datos se reflejan automáticamente en el índice de Lucene.
  • Mejoras en el desempeño.
  • Fácil actualización desde Compass 1.2, aunque se advierte que es necesario regenar el índice de Lucene si se actualiza desde versiones previas.
Junto con esta nueva versión, se ha publicado una nueva página para el proyecto: http://www.compass-project.org/.  COmpass es opensource bajo la licencia Apache v2.0
jueves
may152008

OpenSwing 1.6, framework libre para el desarrollo de aplicaciones Swing

OpenSwing es un framework para el desarrollo de aplicaciones swing, tanto para aquellas que no se comunican con una base de datos como para aquellas aplicaciones de dos o tres capas cuyo front end es una aplicación de escritorio. El framework incluye un conjunto de componentes gráficos implementados en Swing orientados a la visualización de datos entre los cuales hay componentes para mostrar cantidades de dinero, grids, un componente híbrido entre un árbol y un grid, calendarios, diagramas de Gantt y un largo etcétera.

OpenSwing también cuenta con una librería para el desarrollo de la capa de acceso a datos y (para las aplicaciones de tres capas) la lógica de negocio, así como una librería que se encarga de simplificar la comunicación con el servidor. También cuenta con componentes para visualizar documentos PDF, Excel, csv, RTF, XML. El framework se distribuye bajo licencia LGPL y cuenta con abundante documentación entre la cual se incluyen varias aplicaciones de demostración.

Noticias pasadas del Web site:

  • Improved lookup control, by adding filter panel on top of lookup's grid 
  • Created "import data" button, that can be linked to a grid control and allows to import records in grid starting from an XLS or CSV file
  • Created CryptUtils utility class, to support encryption and decryption task, that can be used with login dialog
  • Added commands "select all" and "deselect all" to popup menu in grid, for check-box type columns.
  • Added commands for copy/cut/paste to a popup menu showed over an input control when right mouse clicking on it.
  • Improved "window" menu in MDI menu bar: added "switch...", numeric mnemonic for opened windows menu items, "reduce to icon", "reduce all to icon", "cascade", "tile horizontally/verically" menu items

Algunos acoplamientos:

Home page: http://oswing.sourceforge.net

Demo: http://oswing.sourceforge.net/demo10/demo10.jnlp

JAllInOne demo: http://www.hostingjava.it/-carniel/jAllInOne.jnlp (account: guest/guest)