Herramientas Open Source para Desarrollo de Software con Java
Spring Tours UPeU 2009José Luis Gutiérrez
Descripción General Beneficios de Open Source Herramientas
◦ Control de Versiones◦ Manejo de Artefactos◦ Entorno de Desarrollo de Software◦ Integración Continua◦ Pruebas de Rendimiento y Funcionalidad
Agenda
Free and Open Source Software (FOOS) es un término general usado para referirnos a aplicaciones de sistemas que son soportados por una comunidad de desarrolladores no compensadas.
FOOS es una ideal sustitución de software comercial y su uso en empresas corporativas ha ido en aumento en los últimos años.
Descripción General
Precio. Generalmente no tiene cargos. Fiabilidad. Menos errores en el software. Innovación. Basado en el talento creativo de una
larga lista de desarrolladores. Licenciamiento. Proporciona amplios derechos a
los usuarios finales. Actualizaciones. Las FOOS son activamente
soporta, mejorando errores y capacidades. Interoperabilidad. No impone restricciones y se
adhieren abiertamente a interfaces con otros sistemas.
Escalable.
Algunos beneficios de Open Source son:
Control de Versiones
Sistema Open Source para control de versiones, originalmente diseñado para reemplazar CVS.
Administra archivos y directorios al mismo tiempo.
Maneja un árbol de archivos en un repositorio central.
Subversion puede ser accedido desde cualquier punto de red la cual permite ser usado por personas en diferentes computadoras.
Plugins para IDEs
Subversion
http://subversion.tigris.org
Manejo de Artefactos
Herramienta de secuencia de comandos para automatizar la construcción de procesos Java.
Leguaje de secuencia de comandos basado en XML.
Puede ser extendido usando clases Java. Ejemplo buid.xml
Apache Ant
<project name=”TestProject” default=”dist” basedir=”.”> <property name=”src” location=”src”/> <property name=”build” location=”build”/> <property name=”dist” location=”dist”/> <target name=”init”> <mkdir dir=”${build}”/> </target> <target name=”compile” depends=”init” description=”compile the source ” > <javac srcdir=”${src}” destdir=”${build}”/> </target> <target name=”dist” depends=”compile” description=”generate the distribution” > <mkdir dir=”${dist}/lib”/> <jar jarfile=”${dist}/lib/MyProject-${DSTAMP}.jar” basedir=”${build}”/> </target></project>
http://ant.apache.org
Herramienta Open Source para manejos de proyectos y manejo de artefactos.
Esta basado en tecnología XML llamado Project Object Model (POM)
Maven automatiza las secuencias de comando normalmente escritos en Ant.
Soporta multiples projectos incluidos con herencias, repositorio pre configurado y usa plugins extensibles
Ejemplo del archivo pom.xml
Maven
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId> <version>${mavenVersion}</version>
</dependency>
</dependencies>
</project> http://maven.apache.org
Ivy administra dependencias Java. Toda las dependencias pueden ser especificadas en un
archivo Ivy XML. Integración con Apache Ant Provee reportes de dependencia incluyendo reportes
graficos para ver dependencias transitivas Ejemplo ivy:
Ivy
<ivy-module version="2.0"> <info organisation="apache" module="hello-ivy"/> <dependencies> <dependency org="commons-lang" name="commons-lang" rev="2.0"/> <dependency org="commons-cli" name="commons-cli" rev="1.0"/> </dependencies></ivy-module>
http://ant.apache.org/ivy
Entorno de Desarrollo Integrado(IDE)
Eclipse
http://www.eclipse.org
Eclipse es una colección de proyectos Open Source.
Eclipse integra diversos módulos llamados “Plug-in”.
Es iniciado como un Java IDE, pero tambien tiene cobertura para mas lenguajes estáticos y dinamicos;
Eclipse Plug-ins
http://www.eclipse.org
Mayormente los plug-ins usados son: Por defecto; WTP, Ant, JUnit, Axis, BIRT y otros. Subclipse; soporte para subversion dentro del
Eclipse IDE. Hibernate Tools; Soporte para integracion con
Hibernate. Spring IDE; Soporte para Spring Beans y
Webflow Maven; para iniciar tareas Maven y manejo de
dependencias. PMD, CheckStyle; para verificación de reglas
de compilación.
Integración Continua
Hudson
https://hudson.dev.java.net
Hudson es un motor extensible de Integración Continua que puede ser iniciada en un contenedor de Servlet (Tomcat, GlassFish).
Soporta herramientas SCM incluyento CVS, Subversion.
Los proyectos pueden ser ejecutados a travez de tareas programadas
Sonar Plataforma que maneja la calidad del código
fuente, dedicado a analizar y medir la calidad técnica basado en estándares de reglas de compilación tales como PMD y CheckStyle.
Algunas características son: Visualiza dashboard de proyectos con
información resumida de métricas de software como Mantenibilidad, Escalabilidad, Complejidad, Portabilidad.
Provee información de Métricas de Código Provee información de evaluación de cobertura.
http://sonar.codehaus.org
Pruebas de Rendimientoy
Funcionalidad
JMeter Apache JMeter una aplicación 100% puro
Java, aplicación para escritorio, diseñado para cargar pruebas de funcionamiento y medir el rendimiento.
Puede ser usado para pruebas de rendimiento en fuentes estáticas y dinámicas (Files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers y más).
Puede soportar diferentes tipos de servidores: Web, SOAP, JDBC, LDAP, JMS, Mail.
http://jakarta.apache.org/jmeter
Selenium Apache JMeter una aplicación 100% puro
Java, aplicación para escritorio, diseñado para cargar pruebas de funcionamiento y medir el rendimiento.
Puede ser usado para pruebas de rendimiento en fuentes estáticas y dinámicas (Files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers y más).
Puede soportar diferentes tipos de servidores: Web, SOAP, JDBC, LDAP, JMS, Mail.
http://jakarta.apache.org/jmeter
Cómo trabaja Selenium?
¿Preguntas?