La gente de twitter nos invita a capacitarnos en scala por medio de esta pagina:
http://twitter.github.com/scala_school/
Recordemos que hace tiempo el front end de twitter fue migrado de ruby a scala. Por lo visto le dio buenos resultados.
Que lo disfruten!
Translate
viernes, 23 de septiembre de 2011
lunes, 19 de septiembre de 2011
Crear proyecto Maven + Hibernate
Vamos a crear un proyecto Hibernate con Maven.
Crear proyecto con maven 2 :
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=hibernate
Generar los archivos necesarios para importar el proyecto a eclipse:
mvn eclipse:eclipse
Importar el proyecto desde eclipse : File –> Import –> General
Crear una carpeta resurces en src/main de tal forma que el path quede así: src/main/resources
Abrir el pom y agregar las dependencias de hibernate y mysql y además plugins para que compile con java 1.6, plugin de java doc y plugin de reportes.
El pom debería quedar así:
Hacer mvn clean install y mvn eclipse:eclipse. Refrescar el proyecto en eclipse para que tome los cambios.
Generar clase y su mapeo:
Creeamos una clase persona:
main/resources/com/ejemplo/persona.hbm.xml y el archivo sería como el siguiente:
Configurar hibernate:
Para configurar hibernate es necesario generar un archivo hibernate.cfg.xml y guardarlo en la carpeta resources. Este archivo contendra la siguiente información:
Crear HibernateUtil:
Ahora vamos a crear una clase util, la cual sera encargada de generar las sessiones de Hibernate:
Crear un test:
Vamos a generar un test para probar como todo funciona:
Crear esquema en la base de datos:
Es necesario escribir un esquema llamado prueba en la base de datos Mysql.
Ahora a correr el Test y todo debería a andar!
Crear proyecto con maven 2 :
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=hibernate
Generar los archivos necesarios para importar el proyecto a eclipse:
mvn eclipse:eclipse
Importar el proyecto desde eclipse : File –> Import –> General
Crear una carpeta resurces en src/main de tal forma que el path quede así: src/main/resources
Abrir el pom y agregar las dependencias de hibernate y mysql y además plugins para que compile con java 1.6, plugin de java doc y plugin de reportes.
El pom debería quedar así:
4.0.0 com.ejemplo hibernate 1.0-SNAPSHOT jar hibernate http://maven.apache.org UTF-8 maven-compiler-plugin 1.6 1.6 org.apache.maven.plugins maven-javadoc-plugin org.apache.maven.plugins maven-project-info-reports-plugin junit junit 4.8.2 test mysql mysql-connector-java 5.1.9 org.hibernate hibernate-core 3.6.3.Final javassist javassist 3.12.1.GA
Hacer mvn clean install y mvn eclipse:eclipse. Refrescar el proyecto en eclipse para que tome los cambios.
Generar clase y su mapeo:
Creeamos una clase persona:
package com.ejemplo; /** * @author emanuel * */ public class Persona { private Long id; private String nombre; private String apellido; public Persona(String nombre, String apellido) { super(); this.nombre = nombre; this.apellido = apellido; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellido() { return apellido; } public void setApellido(String apellido) { this.apellido = apellido; } //Constructor usado por hibernate protected Persona() { } }Ahora creamos el archivo de mapeo, el cual es un archivo .xml el cual es deseable (no obligatorio) que se llame igual que la clase que mapea y se encuentre en la carpeta resources con la estructura de paquete que tiene la clase, por lo tanto el path sería:
main/resources/com/ejemplo/persona.hbm.xml y el archivo sería como el siguiente:
Configurar hibernate:
Para configurar hibernate es necesario generar un archivo hibernate.cfg.xml y guardarlo en la carpeta resources. Este archivo contendra la siguiente información:
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/prueba root update org.hibernate.dialect.MySQLDialect true
Crear HibernateUtil:
Ahora vamos a crear una clase util, la cual sera encargada de generar las sessiones de Hibernate:
package com.ejemplo.util; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { // Create the SessionFactory from hibernate.cfg.xml return new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void shutdown() { // Close caches and connection pools getSessionFactory().close(); } }
Crear un test:
Vamos a generar un test para probar como todo funciona:
package com.ejemplo; import static org.junit.Assert.*; import java.util.List; import org.hibernate.classic.Session; import org.junit.Test; import com.ejemplo.util.HibernateUtil; public class HibernateTest { @Test public void test() { Persona persona = new Persona("Juan","Rodriguez"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(persona); session.flush(); Listpersonas = session.createQuery("from Persona").list(); assertFalse(personas.isEmpty()); Persona personaGuarda = (Persona) session.get(Persona.class, persona.getId()); assertEquals(persona, personaGuarda); } }
Crear esquema en la base de datos:
Es necesario escribir un esquema llamado prueba en la base de datos Mysql.
Ahora a correr el Test y todo debería a andar!
sábado, 17 de septiembre de 2011
Google Dart
Google planea matar a javascript con un dardo. Google Dart es el nuevo lenguale de google que pretende suplantar a javascript. Dart se ha descrito como “un nuevo lenguaje de programación orientado hacia la programación web estructurada”. También hay rumores que va a ser un lenguaje orientado a objetos similar a SmallTalk. Me imagino que google quiere revertir la historia que tuvo con Go su lenguaje de programación, el cual no fue muy exitoso por su parecido con C y también tenia una mezcla con python.
Este lenguaje va a ser presentado en el GoTo que se celebra en Dinamarca en el mes de octubre. Los responsables del lenguaje son Lars Bak y Gilad Bracha, dos ingenieros de software de Google con experiencia en diseño de lenguajes.
Bracha es el creador del lenguaje de programación Newspeak y antes de estar en Google fue vicepresidente en SAP Labs, además de reputado ingeniero en Sun Microsystems; entre otras cosas es co-autor de Java Language Specification e investigador en el área de lenguajes de programación orientado a objetos. En cuanto a Lars Bak, es conocido como un veterano de las máquinas virtuales. Diseñó e implementó máquinas virtuales orientadas a objetivos y trabajó en proyectos como Beta, Self, Strongtalk, Sun HotSpot, OOVM Smalltalk y el motor V8 de Google para el navegador Chrome.
Dejo la fuente:
http://www.itespresso.es/dart-el-nuevo-lenguaje-de-programacion-web-de-google-52856.html
Y dejo links:
http://www.extremetech.com/computing/95417-google-announces-dart-programming-language
http://siliconangle.com/blog/2011/09/15/google-dart-details-leaked-new-programming-language-seeks-to-replace-javascript/
Este lenguaje va a ser presentado en el GoTo que se celebra en Dinamarca en el mes de octubre. Los responsables del lenguaje son Lars Bak y Gilad Bracha, dos ingenieros de software de Google con experiencia en diseño de lenguajes.
Bracha es el creador del lenguaje de programación Newspeak y antes de estar en Google fue vicepresidente en SAP Labs, además de reputado ingeniero en Sun Microsystems; entre otras cosas es co-autor de Java Language Specification e investigador en el área de lenguajes de programación orientado a objetos. En cuanto a Lars Bak, es conocido como un veterano de las máquinas virtuales. Diseñó e implementó máquinas virtuales orientadas a objetivos y trabajó en proyectos como Beta, Self, Strongtalk, Sun HotSpot, OOVM Smalltalk y el motor V8 de Google para el navegador Chrome.
Dejo la fuente:
http://www.itespresso.es/dart-el-nuevo-lenguaje-de-programacion-web-de-google-52856.html
Y dejo links:
http://www.extremetech.com/computing/95417-google-announces-dart-programming-language
http://siliconangle.com/blog/2011/09/15/google-dart-details-leaked-new-programming-language-seeks-to-replace-javascript/
jueves, 15 de septiembre de 2011
Software Freedom Day
Éste sábado 17 de setiembre de 2011 se estará realizando el Software Freedom Day, o Día de la Libertad del Software. Es una celebración anual a nivel mundial que se realiza desde hace 7 años para celebrar las virtudes del software libre y los beneficios de compartir.
Software Freedom Day es una celebración global del Software Libre y abierto (FLOSS).
En nuestros días donde nuestras vidas son cada vez más dependientes de la tecnología, es importante que tomemos el tiempo de considerar el impacto tecnológico que este tiene y la importancia de asegurarnos que la tecnología no esta siendo usada para limitarnos, pero para tomarnos más lejos en ruta de oportunidad, innovación y libertad para todas las personas.
Dejo links:
http://softwarefreedomday.org/
http://es.wikipedia.org/wiki/D%C3%ADa_de_la_Libertad_de_Software
Software Freedom Day es una celebración global del Software Libre y abierto (FLOSS).
En nuestros días donde nuestras vidas son cada vez más dependientes de la tecnología, es importante que tomemos el tiempo de considerar el impacto tecnológico que este tiene y la importancia de asegurarnos que la tecnología no esta siendo usada para limitarnos, pero para tomarnos más lejos en ruta de oportunidad, innovación y libertad para todas las personas.
Dejo links:
http://softwarefreedomday.org/
http://es.wikipedia.org/wiki/D%C3%ADa_de_la_Libertad_de_Software
miércoles, 14 de septiembre de 2011
CoffeeScript
CoffeeScript es un lenguaje que “compila” dentro de javascript dando mayor facilidad a la hora de escribir código. Es un lenguaje dentro de javascript para hacernos las cosas más fáciles.
Personalmente creo que javascript no es muy natural pero es un gran lenguaje. El principal problema al escribir código es nuestro desconocimiento sobre el lenguaje, nadie estudia a fondo como funciona javascript.
Después de la reflexión dominical veamos unos ejemplos como nos puede ayudar coffeeScript a escribir código:
En javascript es así
En coffeescript así:
Además de todas estas ventajas permite escribir clases:
Personalmente creo que javascript no es muy natural pero es un gran lenguaje. El principal problema al escribir código es nuestro desconocimiento sobre el lenguaje, nadie estudia a fondo como funciona javascript.
Después de la reflexión dominical veamos unos ejemplos como nos puede ayudar coffeeScript a escribir código:
En javascript es así
var cube, square; square = function(x) { return x * x; }; cube = function(x) { return square(x) * x; };
En coffeescript así:
square = (x) -> x * x cube = (x) -> square(x) * xEn javascript es así
var fill; fill = function(container, liquid) { if (liquid == null) liquid = "coffee"; return "Filling the " + container + " with " + liquid + "..."; };En coffeescript así:
fill = (container, liquid = "coffee") -> "Filling the #{container} with #{liquid}..."
Además de todas estas ventajas permite escribir clases:
class Animal constructor: (@name) -> move: (meters) -> alert @name + " moved #{meters}m." class Snake extends Animal move: -> alert "Slithering..." super 5 class Horse extends Animal move: -> alert "Galloping..." super 45 sam = new Snake "Sammy the Python" tom = new Horse "Tommy the Palomino" sam.move() tom.move()
Lambda en Java 8
Por fin se decidió la sintaxis del operador lambda en java 8. Luego de muchas discusiones se decidió por la sintaxis de scala que es igual a la que usa C#. Me parece muy bien, se habían disparados supuestos y ejemplo de otras sintaxis que para mi gusto no eran cómodas ni elegante.
Sin más veamos unos ejemplos:
x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println("Hola!"); }
Muy similar a Scala:
(x: Int) => x * x
(x: Int, y: Int) => x * y
Que les parece?
Sin más veamos unos ejemplos:
x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println("Hola!"); }
Muy similar a Scala:
(x: Int) => x * x
(x: Int, y: Int) => x * y
Que les parece?
viernes, 9 de septiembre de 2011
Mockito
El objetivo de una prueba unitaria es probar un solo objeto, pero en ciertas ocasiones las colaboraciones entre objetos tienen un acoplamiento alto por lo tanto no puedo probar un objeto sin llamar a otro. Es aquí donde los test se ensucian un poco, en especial si el objeto que deseamos testear depende de algún objeto “pesado” o que tenga interacción con algún otro sistema externo, servidor o base de datos. Por ejemplo testear un objeto que valide el nombre de usuario y la clave en un ldap.
Una estrategia de solución para este problema es usar objetos mocks, los objetos mocks son objetos “de mentira” que permiten simular otro objeto o entidad del sistema. Si vamos a la wikipedia podremos encontrar la siguiente definición:
En la programación orientada a objetos se llaman objetos simulados (pseudoobjetos, mock object, objetos de pega) a los objetos que imitan el comportamiento de objetos reales de una forma controlada. Se usan para probar a otros objetos en pruebas de unidad que esperan mensajes de una clase en particular para sus métodos, al igual que los diseñadores de autos usan un crash dummy cuando simulan un accidente.
En los test de unidad, los objetos simulados se usan para simular el comportamiento de objetos complejos cuando es imposible o impracticable usar al objeto real en la prueba. De paso resuelve el problema del caso de objetos interdependientes, que para probar el primero debe ser usado un objeto no probado aún, lo que invalida la prueba: los objetos simulados son muy simples de construir y devuelven un resultado determinado y de implementación directa, independientemente de los complejos procesos o interacciones que el objeto real pueda tener.
Existen diferentes frameworks en java para hacer mocks, easymock, mockito, etc. Vamos a utilizar mockito.
Mockito es un framework simple, fácil de usar para hacer objetos mocks en java. Tiene una interfaz simple y natural.
Características:
- Se pueden crear mocks de interfaces y clases concretas.
- Verificación de invocaciones (cantidad exacta, al menos una vez, órden de invocación, etc.)
- El stack trace se mantiene limpio, ya que los errores ocurren en los assert que se hagan (y no dentro del método bajo prueba).
- Un API más clara para crear stubs y verificaciones.
Vamos a hacer un objeto mock con mockito:
//creamos el mock y el stub ArrayList instance = mock(ArrayList.class); doReturn("hola mundo").when(instance).get(0); //ejecutamos la lógica a probar instance.get(0); //verificamos que se hayan invocado los métodos verify(instance).get(0)
Como se puede ver la api es clara y simula el lenguaje natural. En la primera linea creamos un objeto mock de la lista; luego indicamos que cuando se llame el método get con el parámetro 0 debe devolver “hola mundo”. Luego ejecutamos el método y luego se verifica si este método se corrió.
Para agregar este framework a nuestro proyecto maven es solo necesario agregar esta entrada en el pom:
org.mockito mockito-all 1.8.5
jueves, 8 de septiembre de 2011
Libros Gratuitos
Dejo dos libros gratuitos, el primero de un framework llamado node.js (muy recomendado) el otro sobre TDD.
http://www.nodebeginner.org/index-es.html
http://www.dirigidoportests.com/el-libro
Que los disfruten!!
http://www.nodebeginner.org/index-es.html
http://www.dirigidoportests.com/el-libro
Que los disfruten!!
lunes, 5 de septiembre de 2011
JUnit 4
Junit 4 es un framework de test unitario basado en anotaciones. Nos permite realizar el mismo trabajo que JUnit 3 pero con anotaciones, proveyendo mayor flexibilidad y simplicidad a nuestro código.
JUnit provee elementos que nos facilitan probar entidades o clases de nuestro programa:
Permite cargar los test de forma transparente Provee anotaciones que facilitan el testing: @Before, @BeforeClass, @After, and @AfterClass Provee diferentes asserts Integración con IDEs (eclipse, netbeans) y herramientas como maven y ant.
Veamos un ejemplo de test con JUnit:
Test Case son casos de prueba, en JUnit 4 son los metodos que estan anotados con @Test
Test Suite son un conjunto de Test Case, JUnit 4 genera automáticamente un Test Suite cuando se corren todos los test de una clase. Veamos un ejemplo de Test Suite:
Con @RunWith configuramos el Runner para correr los Test Suite. Runner es el motor que corre los test, JUnit proporciona uno por defecto que por medio de anotaciones se puede cambiar. Y con la anotación @SuiteClasses indicamos que clases correr.
JUnit provee elementos que nos facilitan probar entidades o clases de nuestro programa:
Permite cargar los test de forma transparente Provee anotaciones que facilitan el testing: @Before, @BeforeClass, @After, and @AfterClass Provee diferentes asserts Integración con IDEs (eclipse, netbeans) y herramientas como maven y ant.
Veamos un ejemplo de test con JUnit:
import static org.junit.Assert.*; import org.junit.Test; public class CalculatorTest { @Test public void testAdd() { Calculator calculator = new Calculator(); double result = calculator.add(10, 50); assertEquals(60, result, 0); } }En la primera linea se importan los métodos de la clase estática Assert, la cual cuenta con sin fin de asserts, que facilitan nuestros test. Con @Test indicamos que ese método es un Test. Además con el método assertEquals de la clase Assert verificamos si el resultado es igual a 60.
Test Case son casos de prueba, en JUnit 4 son los metodos que estan anotados con @Test
Test Suite son un conjunto de Test Case, JUnit 4 genera automáticamente un Test Suite cuando se corren todos los test de una clase. Veamos un ejemplo de Test Suite:
@RunWith(value=org.junit.runners.Suite.class) @SuiteClasses(value={FolderConfigurationTest.class, FileConfigurationTest.class}) public class FileSystemConfigurationTestSuite { }
Con @RunWith configuramos el Runner para correr los Test Suite. Runner es el motor que corre los test, JUnit proporciona uno por defecto que por medio de anotaciones se puede cambiar. Y con la anotación @SuiteClasses indicamos que clases correr.
domingo, 4 de septiembre de 2011
JUnit
Existen diferentes frameworks para ayudarnos a realizar pruebas unitarias, como por ejemplo PHPUnit para PHP, NUnit para .net y JUnit para Java. En java JUnit es el framework más utilizado para hacer pruebas unitarias, pero no el único; existen otros como TestNG, JTiger.
TestNG y JTiger estan basados en anotaciones y nacieron principalmente para suplir algunas deficiencias que tenia JUnit 3.
JUnit es una herramienta simple, Open Source que se ha convertido en el estándar para probar clases java de forma unitaria. Fue creada por Erich Gamma y Kent Beck.
Es fácil de usar y configurar por lo que prácticamente no existe curva de aprendizaje, salvo el cambio de mentalidad que debe producir en las mentes de los programadores al usar técnicas que faciliten el uso de pruebas unitarias.
El propio framework incluye formas de ver los resultados (runners) que pueden ser en modo texto, gráfico (AWT o Swing) o como tarea en Ant.
En la actualidad las herramientas de desarrollo como Netbeans y Eclipse cuentan con plug-ins que permiten que la generación de las plantillas necesarias para la creación de las pruebas de una clase Java se realice de manera automática, facilitando al programador enfocarse en la prueba y el resultado esperado, y dejando a la herramienta la creación de las clases que permiten coordinar las pruebas.
Desde la versón 4 de JUnit hubo grandes cambios, con respecto a otras versiones dado que la versión 4 de JUnit esta orientada a anotaciones dando mayor potencial al framework y flexibilidad.
TestNG y JTiger estan basados en anotaciones y nacieron principalmente para suplir algunas deficiencias que tenia JUnit 3.
JUnit es una herramienta simple, Open Source que se ha convertido en el estándar para probar clases java de forma unitaria. Fue creada por Erich Gamma y Kent Beck.
Es fácil de usar y configurar por lo que prácticamente no existe curva de aprendizaje, salvo el cambio de mentalidad que debe producir en las mentes de los programadores al usar técnicas que faciliten el uso de pruebas unitarias.
El propio framework incluye formas de ver los resultados (runners) que pueden ser en modo texto, gráfico (AWT o Swing) o como tarea en Ant.
En la actualidad las herramientas de desarrollo como Netbeans y Eclipse cuentan con plug-ins que permiten que la generación de las plantillas necesarias para la creación de las pruebas de una clase Java se realice de manera automática, facilitando al programador enfocarse en la prueba y el resultado esperado, y dejando a la herramienta la creación de las clases que permiten coordinar las pruebas.
Desde la versón 4 de JUnit hubo grandes cambios, con respecto a otras versiones dado que la versión 4 de JUnit esta orientada a anotaciones dando mayor potencial al framework y flexibilidad.
Arquitectura Orientada a Servicios
La Arquitectura de Empresa y Arquitectura orientada a servicios le ayudan a mantener el control sobre la complejidad en un mundo siempre cambiante.
Frente a los rápidos cambios - a partir de la creciente globalización, la consolidación de la industria y los mercados emergentes – las organizaciones necesitan ser ágiles en los negocios, así como en TI. Los cambios estratégicos en las actividades empresariales deben ser apoyados por sistemas flexibles y ágiles de TI. La información tiene que ser abierta en forma estandarizada y las transformaciones de negocio y de TI tienen que ser apoyadas por planes de trabajo alineados.
Según Gartner, en 2011 un ochenta por ciento de las organizaciones de todo el mundo se habrán cambiado a SOA, este porcentaje fue mucho menor sin embargo en inegable que las organizaciones se interesan por migrar a una arquitectura abierta orientada a Servicios. La razón: los modelos SOA hacen que sea mucho más fácil adaptar los procesos de negocio a los cambios del mercado que mediante las arquitecturas tradicionales de software. Como ha ocurrido muy a menudo en el pasado, las grandes compañías fueron las pioneras en este desarrollo. Gracias a soluciones inteligentes y modulares, este cambio de paradigma se ha hecho ahora atractivo y factible también para las compañías de tamaño mediano, por tanto se puede afirmar que el futuro pertenece a las arquitecturas orientadas a servicios (SOA).
En una empresa pueden coexistir varias aplicaciones. Esto lleva a una serie de inconvenientes que aumentan el esfuerzo y el tiempo en que se responde a un requerimiento determinado. Uno de los inconvenientes es, por ejemplo, ante aplicaciones diferentes probablemente desarrolladas en lenguajes diferentes, no poder acceder desde una de las aplicaciones hacia la otra para consultar algún dato.
Mediante la aplicación de la Arquitectura SOA se pretende solucionar los inconvenientes antes mencionados. Dentro de la arquitectura SOA la funcionalidad se implementa en pequeños componentes autónomos reutilizables denominados servicios.
SOA obtiene una integración de aplicaciones o componentes, uniendo la tecnología de información con las necesidades del negocio, logrando una respuesta rápida con un bajo acoplamiento, un ambiente operativo integrado que provee servicios para integrar personas, procesos e información.
El hecho de optar por este tipo de arquitectura requiere de una infraestructura de comunicación, en este caso la arquitectura orientada a servicios utiliza ESB (Enterprise Service Bus). Según Craggs es una plataforma basada en estándares que incluye funciones básicas como servicio de mensajería, servicios Web, enrutamiento inteligente y transformación de datos para conectar y coordinar la interacción de un número significativo de aplicaciones de empresas extendidas con integridad transaccional.
SOA es una arquitectura de Software orientada a servicios. Esta arquitectura surge de la continua y creciente evolución de la Tecnología de Información (IT), en conjunto con la evolución de los procesos de negocios.
SOA integra procesos, recursos humanos e información en un ambiente operativo más ágil y flexible. Para poder lograr esta integración hace uso del concepto de servicio, Orquestación y Coreografía de Servicios Web.
La funcionalidad se encapsula en servicios independientes entre sí. Alta interoperabilidad entre los servicios. La aplicación final orquesta la ejecución de los servicios y añade la interfaz.
García, Gabriel Alejandro, SOA Architect, se refiere a la arquitectura diciendo que hace un tiempo era IBM quién buscaba a los posibles clientes para ofrecerles esta tecnología, mientras que hoy en día son los clientes los que se acercan a consultar, más que nada por las siglas, sin conocer muy bien como funciona y que implica. Gabriel, continúa diciendo que, si bien IBM es quien más tiempo tiene en el mercado, otras empresas como Oracle y Weblogic están ganando terreno. En cuanto a los proyectos en Argentina que utilizan esta tecnología, sostiene que las empresas de Telefonía son las que están avanzando en estos proyectos.
Por su parte otro especialista del área de soporte de productos, opina que a nivel País el tema de SOA está en sus comienzos, recién se están comenzando a encarar proyectos serios. Sin embargo, brinda soporte a toda América del Sur, y Países de habla hispana, y considera que a nivel región ya existen proyectos funcionando utilizando SOA y muchos proyectos más en proceso de desarrollo que serán puestos en marcha muy pronto.
Frente a los rápidos cambios - a partir de la creciente globalización, la consolidación de la industria y los mercados emergentes – las organizaciones necesitan ser ágiles en los negocios, así como en TI. Los cambios estratégicos en las actividades empresariales deben ser apoyados por sistemas flexibles y ágiles de TI. La información tiene que ser abierta en forma estandarizada y las transformaciones de negocio y de TI tienen que ser apoyadas por planes de trabajo alineados.
Según Gartner, en 2011 un ochenta por ciento de las organizaciones de todo el mundo se habrán cambiado a SOA, este porcentaje fue mucho menor sin embargo en inegable que las organizaciones se interesan por migrar a una arquitectura abierta orientada a Servicios. La razón: los modelos SOA hacen que sea mucho más fácil adaptar los procesos de negocio a los cambios del mercado que mediante las arquitecturas tradicionales de software. Como ha ocurrido muy a menudo en el pasado, las grandes compañías fueron las pioneras en este desarrollo. Gracias a soluciones inteligentes y modulares, este cambio de paradigma se ha hecho ahora atractivo y factible también para las compañías de tamaño mediano, por tanto se puede afirmar que el futuro pertenece a las arquitecturas orientadas a servicios (SOA).
En una empresa pueden coexistir varias aplicaciones. Esto lleva a una serie de inconvenientes que aumentan el esfuerzo y el tiempo en que se responde a un requerimiento determinado. Uno de los inconvenientes es, por ejemplo, ante aplicaciones diferentes probablemente desarrolladas en lenguajes diferentes, no poder acceder desde una de las aplicaciones hacia la otra para consultar algún dato.
Mediante la aplicación de la Arquitectura SOA se pretende solucionar los inconvenientes antes mencionados. Dentro de la arquitectura SOA la funcionalidad se implementa en pequeños componentes autónomos reutilizables denominados servicios.
SOA obtiene una integración de aplicaciones o componentes, uniendo la tecnología de información con las necesidades del negocio, logrando una respuesta rápida con un bajo acoplamiento, un ambiente operativo integrado que provee servicios para integrar personas, procesos e información.
El hecho de optar por este tipo de arquitectura requiere de una infraestructura de comunicación, en este caso la arquitectura orientada a servicios utiliza ESB (Enterprise Service Bus). Según Craggs es una plataforma basada en estándares que incluye funciones básicas como servicio de mensajería, servicios Web, enrutamiento inteligente y transformación de datos para conectar y coordinar la interacción de un número significativo de aplicaciones de empresas extendidas con integridad transaccional.
SOA es una arquitectura de Software orientada a servicios. Esta arquitectura surge de la continua y creciente evolución de la Tecnología de Información (IT), en conjunto con la evolución de los procesos de negocios.
SOA integra procesos, recursos humanos e información en un ambiente operativo más ágil y flexible. Para poder lograr esta integración hace uso del concepto de servicio, Orquestación y Coreografía de Servicios Web.
La funcionalidad se encapsula en servicios independientes entre sí. Alta interoperabilidad entre los servicios. La aplicación final orquesta la ejecución de los servicios y añade la interfaz.
García, Gabriel Alejandro, SOA Architect, se refiere a la arquitectura diciendo que hace un tiempo era IBM quién buscaba a los posibles clientes para ofrecerles esta tecnología, mientras que hoy en día son los clientes los que se acercan a consultar, más que nada por las siglas, sin conocer muy bien como funciona y que implica. Gabriel, continúa diciendo que, si bien IBM es quien más tiempo tiene en el mercado, otras empresas como Oracle y Weblogic están ganando terreno. En cuanto a los proyectos en Argentina que utilizan esta tecnología, sostiene que las empresas de Telefonía son las que están avanzando en estos proyectos.
Por su parte otro especialista del área de soporte de productos, opina que a nivel País el tema de SOA está en sus comienzos, recién se están comenzando a encarar proyectos serios. Sin embargo, brinda soporte a toda América del Sur, y Países de habla hispana, y considera que a nivel región ya existen proyectos funcionando utilizando SOA y muchos proyectos más en proceso de desarrollo que serán puestos en marcha muy pronto.
martes, 30 de agosto de 2011
Linux El emblema del software libre celebra sus 20 años de vida
Hoy leí el siguiente articulo en clarin:
http://www.ieco.clarin.com/tecnologia/Linux-emblema-software-libre-celebra_0_544745576.html
Me quedo con este párrafo:
En la actualidad, de aquella versión de garaje que nació en un ambiente de PC queda muy poco. Se apuntaló la estabilidad, la seguridad y el hecho de estar respaldado por algunos colosos de la tecnología, han convertido a Linux en una opción muy seria en las empresas . No es por casualidad que está instalado en el 92 % de las supercomputadoras, según el sitio especializado top500.org.
Feliz Cumpleaños al mejor Sistema Operativo por lejos!!!
Feliz Cumpleaños Linux!!!
IBM Linux Prodigio subtitulado por guivaloz
http://www.ieco.clarin.com/tecnologia/Linux-emblema-software-libre-celebra_0_544745576.html
Me quedo con este párrafo:
En la actualidad, de aquella versión de garaje que nació en un ambiente de PC queda muy poco. Se apuntaló la estabilidad, la seguridad y el hecho de estar respaldado por algunos colosos de la tecnología, han convertido a Linux en una opción muy seria en las empresas . No es por casualidad que está instalado en el 92 % de las supercomputadoras, según el sitio especializado top500.org.
Feliz Cumpleaños al mejor Sistema Operativo por lejos!!!
Feliz Cumpleaños Linux!!!
IBM Linux Prodigio subtitulado por guivaloz
domingo, 28 de agosto de 2011
Profiles de Maven
Es posible redefinir prácticamente cualquier parte de un POM definiendo un perfil o profile para definir un profile es necesario modificar el pom agregando la siguiente entrada:
true
Para correr este profile es necesario ejecutar el comando con el parametro -P notest, por ejemplo:
mvn clean install -P notest
En el siguiente profile le estamos diciendo a maven que no corra los test con la expresiónnotest org.apache.maven.plugins maven-surefire-plugin 2.9 true
Para correr este profile es necesario ejecutar el comando con el parametro -P notest, por ejemplo:
mvn clean install -P notest
Creación de Herencia entre projectos con Maven
Para realizar herencia entre pom es necesario generar un proyecto pom (padre) y luego generar cada proyecto (hijo)
Creamos el proyecto padre:
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=EjemploPomPadre
Luego borramos la carpeta src y editamos el pom para que sea similar al siguiente:
Cambiamos el packaging a pom y agregamos las dependencias comunes para todos los proyectos hijos.
Ahora creamos 2 proyectos en el directorio EjemploPomPadre.
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=EjemploHijo1
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=EjemploHijo2
Si editamos el pom del proyecto EjemploPomPadre vemos que maven agrego la siguiente entrada:
Si editamos el pom de uno de los proyectos hijos veremos que se agrego la siguiente entrada indicando el proyecto padre:
mvn help:effective-pom
Creamos el proyecto padre:
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=EjemploPomPadre
Luego borramos la carpeta src y editamos el pom para que sea similar al siguiente:
4.0.0 com.ejemplo EjemploPomPadre 1.0-SNAPSHOT pom ...
Cambiamos el packaging a pom y agregamos las dependencias comunes para todos los proyectos hijos.
Ahora creamos 2 proyectos en el directorio EjemploPomPadre.
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=EjemploHijo1
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=EjemploHijo2
Si editamos el pom del proyecto EjemploPomPadre vemos que maven agrego la siguiente entrada:
EjemploHijo1 EjemploHijo2
Si editamos el pom de uno de los proyectos hijos veremos que se agrego la siguiente entrada indicando el proyecto padre:
Si agregamos una dependencia en el pom padre se agregan a los proyectos hijos, para verificar las dependencias reales de un proyecto tenemos el comando:EjemploPomPadre com.ejemplo 1.0-SNAPSHOT
mvn help:effective-pom
Detención de conflictos entre dependencias con Maven
Para detectar conflictos entre dependecias podemos usar los siguientes comandos:
Ver jerarquía de dependencias
$ mvn dependency:tree
Este comando muestra el arbol de dependencias.
Ver dependencias en orden alfabético
$ mvn dependency:resolve
Analizar uso de dependencias
$ mvn dependency:analyze
Ver jerarquía de dependencias
$ mvn dependency:tree
Este comando muestra el arbol de dependencias.
Ver dependencias en orden alfabético
$ mvn dependency:resolve
Analizar uso de dependencias
$ mvn dependency:analyze
Suscribirse a:
Entradas (Atom)