Noticias javaHispano.org

Mostrando entradas con la etiqueta J2EE. Mostrar todas las entradas
Mostrando entradas con la etiqueta J2EE. Mostrar todas las entradas

martes, 21 de octubre de 2008

10 trucos de Subversion para controlar tu código


1. Usa status para encontrar tu...estado


Con Subversion, si quieres encontrar lo que has modificado ejecutas svn status. Este comando compara los ficheros en tu copia de trabajo (working copy) con aquellos en las areas administradas por Subversion (esos molestos directorios .svn), evitando así la necesidad de un acceso a la red de ida y vuelta:



$ svn status
D fish.c
A shrimp.c
M anemone.c


Ten en cuenta que fish.c está previsto que sea borrado, shrimp.c está previsto que sea añadido, y anemone.c ha sido modificado.


Ahora, por defecto, svn status sólo muestra los ficheros que son interesantes (como aquellos que han sido añadidos, modificados o borrados). Si quieres ver la información de todos los ficheros de tu copia de trabajo, utiliza la opción --verbose


  $ svn status --verbose

44 23 sally README

44 30 sally INSTALL

44 35 harry trout.c

D 44 19 ira fish.c

A 0 ? ? shrimp.c

M 0 ? ? anemone.c

44 36 harry things/rocks.txt


La primera columna representa lo mismo, pero la segunda muestra la revisión de trabajo del elemento. Las tercera y cuarta columnas muestran la revisión del último cambio del elemento y quién la realizó.


Si quieres saber qué ficheros se actualizarán la próxima vez que ejecutes svn update, utiliza la opción --show-updates en el comando svn status


  $ svn status --show-updates --verbose
* 44 23 sally README
44 30 sally INSTALL
* 44 35 harry trout.c
D 44 19 ira fish.c
A 0 ? ? shrimp.c
M * 44 32 sally anemone.c
44 36 harry things/rocks.txt

Puedes ver que los ficheros que serán actualizados son los marcados con un *.


2. Recuerda, puedes mover cosas


He visto personas pasando mucho tiempo en reuniones decidiendo la estructura de directorios y el lugar de los ficheros en un proyecto, pero con Subversion puedes mover ficheros y directorios con total libertad:


  $ svn move foo.c bar.c

A bar.c

D foo.c

Ahora bar.c ha sido marcado para ser añadido y foo.c ha sido marcado para ser borrado. (Así es como Subversion representa un movimiento de ficheros. svn commit Enviará tus cambios al servidor.)

Puedes mover ficheros y directorios directamente en el servidor mediante las URL's:


  $ svn move -m "Move a file" http://svn.red-bean.com/repos/foo.c \
http://svn.red-bean.com/repos/bar.c



Esto realiza el movimiento de foo.c a bar.c en el servidor directamente.


3. Etiquetar y crear ramas mediante copia


En Subversion, las operaciones de rama (branch) y etiquetado (tag) se hacen como copias:


  $ svn copy -m "Tag rc1 rel." http://svn.red-bean.com/repos/trunk \
http://svn.red-bean.com/repos/tags/1.0rc1



Has creado una etiqueta de tu línea principal de desarrollo o troncal (indicada como trunk en términos de Subversion). Si en realidad quieres crear una rama, copia la linea troncal de desarrollo en el directorio branches (ramas), es así de sencillo. Y en Subversion, etiquetar y crear ramas es así de rápido.


En Subversion, etiquetas y ramas son sólo rutas copiadas en el árbol del repositorio. Por convención, las etiquetas se encuentran bajo la ruta /tags y las ramas bajo /branches.


Subversion necesita solo copiar un unico nodo directorio para hacer una copia, lo cual no es realmente rápido, pero ocupa muy poco espacio en el repositorio--no importa el número de ficheros incluidos en la rama o etiqueta. ¡La comunidad de Subversion los llama "cheap copies" ("copia barata") por una buena razón!


No estás limitado a etiquetar todos los ficheros en la misma revision en Subversion: Si necesitas hacer una etiqueta o rama "revision-mezclada", siempre puedes copiar una copia de trabajo en una URL:



$ svn copy -m "Mixed branch." . http://svn.red-bean.com/repos/branch/1.2-mixed

Vete a Branching and Merging para una descripción más extensa de cómo hacer ramas y etiquetar.



4. "Revert" en vez de "delete and update"



Subversion almacena una copia original de cada fichero en el directorio .svn de tu copia de trabajo, de manera que puedes hacer esto:


  $ svn revert I-made-a-boo-boo.txt
Reverted 'I-made-a-boo-boo.txt'


Esto viene bien si no tienes una conexión de red en un momento dado.



5. No temas a tu sistema de control de versiones



Por defecto, ciertos sistemas de control de versiones que no mencionaré (como CVS) traducen los finales de línea (de CR [Unix] a CRLF [Windows] y viceversa) y expanden palabras reservadas (como $Id$) en tus ficheros. Esto es muy útil hasta que subes al repositorio un fichero binario y CVS, en un alarde de generosidad, convierte tu fichero en algo incomprensible.


Subversion nunca hará nada sobre tus datos salvo que tú se lo pidas explícitamente.

Repitamos de nuevo:



SUBVERSION NUNCA HARÁ NADA SOBRE TUS DATOS A MENOS QUE SE LO PIDAS.

Puedes añadir cualquier fichero binario a tu repositorio de Subversion y no tener que hacer nada especial para que Subversion no destruya tu fichero. Sin embrago, si añades un fichero de texto (un fichero .java o .c, por ejemplo), podrías querer que Subversion controle la transformación del fin de linea automáticamente por ti. Esto se hace usando las propiedades de Subversion.



En este caso, tendrás que asignar a la propiedad svn:eol-style el valor native:



  $ svn propset svn:eol-style native halibut.c


y subir tu cambio al repositorio.



Puedes aprender de tu cliente de Subversion para añadir ciertas propiedades a tus ficheros automáticamente--lee la sección de Automatic Properties y su configuración para más información.




6. Log, log, log tu log



El comando log de Subversion proporciona datos útiles y compactos basado en un commit atómico de Subversion. Por ejemplo:


$ svn log
------------------------------------------------------------------------
r3 | sally | Mon, 15 Jul 2002 18:03:46 -0500 | 1 line

Added include lines and corrected # of cheese slices.
------------------------------------------------------------------------
r2 | harry | Mon, 15 Jul 2002 17:47:57 -0500 | 1 line

Outline sandwich fixins.
------------------------------------------------------------------------
r1 | sally | Mon, 15 Jul 2002 17:40:08 -0500 | 1 line

Initial import
------------------------------------------------------------------------


Cada entrada del log muestra el número de revisión de la entrada, el autor, la fecha, el número de líneas en la entrada de log (para ayudar en el análisis de la salida de svn log), y el mensaje de log en sí mismo. Si quieres ver las rutas que cambiaron en la salida de tu log, pasa la opción --verbose:

$ svn log --verbose ------------------------------------------------------------------------ r3 | sally | Mon, 15 Jul 2002 18:03:46 -0500 | 1 line Changed paths: M /trunk/sandwich.txt

Added include lines and corrected # of cheese slices.
------------------------------------------------------------------------
r2 | harry | Mon, 15 Jul 2002 17:47:57 -0500 | 1 line
Changed paths:
M /trunk/sandwich.txt

Outline sandwich fixins.
------------------------------------------------------------------------
r1 | sally | Mon, 15 Jul 2002 17:40:08 -0500 | 1 line
Changed paths:
A /trunk/sandwich.txt

Initial import
--------------------------------------------------------------------



En los ejemplos anteriores, habrás notado que no hemos pasado ningún fichero o directorio específico (llamados targets) al comando de log. Si ejecutas svn log sin especificar targets (objetivos), Subversion presupone que te refieres al directorio de trabajo actual. Subversion usa una revision de incio de 1, y la revision de trabajo de tu directorio de trabajo actual como la revision final. (Puedes saber cuál es esta revision de trabajo usando svn status -v, como mencionamos anteriormente.)



Y ahora una pequeña nota: Si subes un cambio de un fichero e inmediatamente ejecutas svn log, no verás el mensaje de log de tu commit reciente. Esto es debido a que la "revision de trabajo" de tu directorio de trabajo no ha sido actualizado (subir un fichero no actualiza inmediatamente tu directorio de trabajo o cualquier otro fichero). Si ejecutas svn update y a continuación svn log, verás el mensaje de log "perdido".



Lee http://svnbook.red-bean.com/en/1.5/svn.tour.history.html y http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.log.html para más información sobre el uso de svn log.




7. Deshacer rápidamente un commit erróneo



Supón que tienes una copia de trabajo de /trunk y descubres que el cambio que hiciste en la revisión 303, que modificó oyster.c, es erróneo por completo--nunca debería haberse subido al repositorio. Puedes usar svn merge para "deshacer" el cambio en tu copia de trabajo*, y entonces subir la modificación local al repositorio. Todo lo que necesitas hacer es especificar una diferencia inversa usando svn merge:


  $ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk
U oyster.c

Usa svn diff para verificar que el cambio es correcto, y entonces súbelo al repositorio.



Para más información, lee Undoing Changes


* Es decir, restaura la última versión de tu repositorio a su estado anterior; Subversion todavía tendrá el commit "malo" en el repositorio. Siendo un sistema de control de versiones, el trabajo de Subversion es recordar todo lo que le hayas enviado.




8. Recuperar elementos eliminados



Si borras un fichero de tu repositorio y quieres "resucitarlo" a la última versión del respositorio, la forma más fácil es con svn copy desde una revisión anterior a su eliminación a tu copia de trabajo. Usa svn log -v para encontrar la revisión donde fue borrado, y entonces haz tu copia:


 $ svn copy --revision 807 \
http://svn.red-bean.com/repos/trunk/perch.c ./perch.c

Para más detalles, mira Resurrecting deleted items.




9. Cambia a una rama sin crear una nueva copia de trabajo



Como Subversion trata las etiquetas y las ramas como rutas normales en el repositorio, puedes ejecutar svn update para actualizar tu copia de trabajo al nombre de la rama con la que quieres comenzar a trabajar. Introduce el comando svn switch.


svn switch actualiza tu copia de trabajo para apuntar a un nuevo árbol en el repositorio--es decir, el árbol de una rama en vez del árbol troncal.


Esta es la manera que Subversion tiene para mover una copia de trabajo a una nueva rama.


  $ svn switch http://svn.red-bean.com/repos/branches/vendors-with-fix .
U myproj/foo.txt
U myproj/bar.txt
U myproj/baz.c
U myproj/qux.c
Updated to revision 31.

Para más detalles, ver Traversing branches.



10. Visualizar o montar tu repositorio



Si tu repositorio Subversion está instalado a través del servidor Apache HTTP Server (es decir, accedes a él mediante una URL que comienza con http), Subversion te da un par de regalos muy sabrosos:



Primero, puedes acceder desde cualquier navegador web al repositorio de Subversion y navegar como quieras através de la última revisión del repositorio.



tips1-top10-browse.jpg



Segundo, si usas un sistema operativo que conozca el protocolo DAV, puedes montar tu repositorio de Subversion en tu escritorio (sólo lectura):



tips2.jpg



tips3-top10-mount.jpg



Además de ser conveniente para ver el contenido de tu repositorio, es útil para compartir ficheros con usuarios distintos a Subversion.

martes, 29 de abril de 2008

Publicado Apache CXF 2.1, con soporte JAX-WS 2.1.

Apache CXF es un framework open source de servicios. CXF te ayuda a construir y desarrollar servicios usando APIs de programación de alto nivel, como JAX-WS. Estos servicios pueden soportar varios protocolos como SOAP, XML/HTTP, RESTful HTTP, o CORBA y funcionar sobre una variedad de capas de transporte como HTTP, JMS o JBI.

CXF incluye un amplio conjunto de características, pero su objetivo principal son las siguientes áreas:
  • Soporte de Standards de Web Services: CXF da soporte a una variedad amplia de estandars de servicios web incluyendo SOAP, WSI Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, y WS-Security.
  • Interfaces: CXF proporciona una variedad de modelos de programacion de alto nivel. Incluye uno JAX-WS 2.1. También uno sencillo que permite la creación de clientes y endpoints sin anotaciones.
  • Modo de uso: CXF está diseñado para un uso sencillo e intuitivo. Hya una API sencilla para rápidamente construir por primera vez código de servicios, plugins de Maven para realizar la integración más sencilla, soporte para la API de JAX-WS, soporte XML para Spring 2.0.

Lo nuevo en CXF 2.1:

  • Soporte JAX-WS 2.1 - La implementación de JAX-WS se ha actualizado a la especicficacion JAX-WS 2.1. La generación de codigo es compatible con JAX-WS 2.1/JAXB 2.1.
  • Implementación inicial del framework de servicio basado en JAX-RS 0.6 REST.
  • Generacion de cliente Javascript y soporte basado en endpoints de SOAP pueden tener clientes javascript creados automaticamente con URL ?js. También hay una herramienta por linea de comandos.
  • Mezcla de mapeo CORBA de Yoko - JAX-WS Clientes/Servidores puede hablar IIOP y permitir la comunicación con otros procesos CORBA. Herramientas para IDL -> WSDL, WSDL -> IDL, etc...
  • Nueva herramienta java2ws para realizar mejor los patrones de desarrollo para novatos en java.
  • Suporte en ejecución de xmlbeans para permitir usar XmlBeans para el modelo de datos.
  • MUCHOS MUCHOS arreglos de fallos (bugs), mejoras de realización, etc... Demasidados para enumerarlos individualmente.

Finalmente, la mejor noticia :

  • Es la primera versión tras graduarse de la "incubadora" de Apache como un Proyecto de Alto Nivel.

martes, 18 de marzo de 2008

Rapido desarrollo web con J2EE Spider

J2EE Spider es una nueva herramienta open source para el desarrollo rápido de aplicaciones web basadas en formularios. Los objetivos de J2EE Spider son simples:

Generar código cuando quieras, con lo que quieras y como quieras.

Cuándo nos permite generar código no es sólo al comienzo del proyecto, sino también realizarlo y construirlo de manera incremental. Este concepto de sucesivos "builds" utiliza merge cuando sea necesario de manera que no pierde cambios realizados en el código por el programador.

Con lo que es flexible es con la elección de frameworks. Esto permite al desarrollador decidir qué tecnologías serán parte del código, aprovechando el conocimiento del equipo de desarrollo. En el futuro se intentará la generación con el mayor número posible de frameworks.

Cómo nos permite alterar la plantilla de generación de código de manera que el código generado sea lo más parecido posible a la metodología de desarrollo de cada equipo. También es posible añadir nuevos recursos a la generacion de codigo standard de manera sencilla.

Caracterísiticas prinicpales de J2EE Spider:

  • Interface visual para gerenrar código
  • Integracion con Eclipse
  • Construcción incremental
  • Ingeniería de ida y vuelta (round-trip)
  • El código generado es intenacionalizable
  • Uso de plantillas en la generación de código
  • Soporte para múltiples frameworks
Además de ser capaz de proporcionar plantillas para páginas adaptables para tus aplicaciones, las nuevas tecnologías se pueden integrar cuando sean necesarias. Sin embargo, para la funcionalidad "fuera de la caja" las sigueintes tecnologías son habilitadas:
  • Web frameworks: Struts, JSF y Mentawai ( web application framework Brasileño)
  • Contenedores de Inyección de Dependencia: Spring
  • Mapeo O/R: Hibernate
  • Plantillas de Paginas: SiteMesh y Facelets
Por el momento la documentación es limitada. La mejor fuente de información es a través de diferentes screencasts. Estos demuestrab las caracterísitcas en acción y están disponibles en diferentes formatos:

Los requerimientos mínimos para usar J2EE Spider en tus proyectos es Java 5, Eclipse (con WTP), un contenedor JEE o Servlet y el plug-in J2EE Spider. Más información, así como la página de descarga para el plug-in, puede encontrarse en el sitio web de J2EE Spider: http://www.j2eespider.org.