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

lunes, 28 de octubre de 2013

Aprendiendo a programar Android en 12 clases gratuitas (+ video)

Por si alguno no se enteró, el equipo de JetBrains adaptó su excelente IDE para Java IntelliJ lanzando junto a Google una versión gratuita llamada Android Studio, que se encuentra en Preview, pero ya disponible para descarga.

Dino Esposito

Como esta gente no se queda quieta, además de lanzar la IDE, que es una alternativa más moderna y mejorada (al menos en mi opinión) a Eclipse, se asociaron también con el sitio de entrenamiento en línea Tuts+ para publicar una serie gratuita de entrenamiento sobre desarrollo en Android, presentada por el italianísimo Dino Esposito (el contenido está en inglese), una personalidad del mundo .NET pero también reconocido por su ductilidad para moverse entre plataformas, y sus cualidades como autor y entrenador.

La serie, llamada Android for the Busy Developer, compuesta por doce episodios, está basada en IntelliJ y no en Android Studio (no se bien por qué, pero para todo lo básico es lo mismo).

La serie completa cubre:

  1. Introducción (~12m) 
  2. Diseñador de Interfaces (~18m)
  3. Interactividad mínima (~11m)
  4. Ciclo de vida (~20m)
  5. Más actividades (15m)
  6. Vistas de Lista (~16m)
  7. HTTP (~14m)
  8. Almacenamiento (~15m)
  9. Menúes (~16m)
  10. Diálogos (~11m)
  11. Preferencias (~15m)
  12. Publicación (~6m)
Como pueden ver, son más de dos horas y media de entrenamiento, totalmente gratis, y más allá de que Dino muestre cómo se usa IntelliJ, los conceptos aplican al desarrollo Android utilizando la herramienta que uno prefiera (incluso si uno prefiere programar en C#, utilizando Xamarin Studio), porque hay mucho sobre la arquitectura y APIs básicas de la plataforma.

Les dejo el primer episodio (~12 minutos), en el que Dino explica cómo hacer el clásico Hello, World, para que vean más o menos el tono de la serie.

 

jueves, 5 de julio de 2012

Video: Desarrollando en Node.js desde Mac OS y desplegando en Azure Web Sites

Desde hace años vengo trabajando con Windows Azure, la plataforma de cloud computing de Microsoft. Hasta ahora, más allá de haber logrado algunos proyectos interesantes, la plataforma no me entusiasmaba demasiado por varios motivos:

  • Estaba muy orientada a un modelo de desarrollo específico (Platform as a Service)
  • Estaba muy orientada a .NET (había maneras de utilizar otras plataformas, pero siempre complejas)
  • El mecanismo de despliegue y actualización era muy poco eficiente

En las últimas semanas finalmente se liberaron nuevas características que me parecen mucho más interesantes. Dos en particular (que están aún en preview, pero utilizables dentro de la prueba gratuita por tres meses) son:

Azure Virtual Machines

Este servicio finalmente abre los data centers de Azure por completo. Desde el panel de control se pueden generar imágenes pre-configuradas de varias distribuciones de Linux, además de Windows, obviamente. Vean las opciones disponibles hoy:

Imagenes disponibles 

Azure Web sites

Es un servicio de hosting de aplicaciones web genérico, soportando múltiples lenguajes y con más flexibilidad que un host tradicional. Además de cubrir (por ahora) ASP.NET, ASP, Node.js, Java, PHP, Python y C++, el mecanismo de despliegue es todo un avance con respecto al anterior: se puede subir directamente desde el portal, por FTP, GIT o TFS. En cuanto la aplicación llega a Azure, prácticamente en forma inmediata queda disponible en línea.

Además de los diferentes lenguajes, otro cambio impresionante viniendo de Microsoft es que los SDK y las herramientas de consola son todas abiertas (admitiendo contribuciones; todas en GitHub) están disponibles para Windows, Mac OS y Linux, con lo que nuestra plataforma de desarrollo puede ser cualquiera.

Algunas cosas en mi lista de deseos hacia adelante:

  • Mejorar la usabilidad del portal exigiendo menos Login (ahora insiste varias veces ante distintas operaciones)
  • Soporte para autenticación por certificados en GIT (ahora hay que usar la password en cada push)
  • Soporte para Ruby (creo que el problema principal por ahora son las gemas que requieren compilación nativa)

Como ejemplo de todo esto, les dejo este cortísimo video (~6 minutos, en inglés) en el que Glenn Block, alguien a quien respecto mucho y que siempre impulsó las plataformas y paradigmas abiertos dentro de Microsoft (¡presten atención a su camiseta!), muestra como desplegar una aplicación Node.js (usando Express) desde Mac OS. Microsoft aún no puede sustraerse a sus carteles publicitarios al inicio y fin del video, pero el resto es recomendable.

miércoles, 22 de febrero de 2012

Video: Agiles @ Buenos Aires - Caso de éxito ágil, por Pablo Francavilla

Agiles

En la última reunión mensual de Agiles Buenos Aires, organizada por la comunidad local aproximadamente los segundos martes de cada mes, Pablo Francavilla vino a contarnos los detalles de un caso de éxito para su compañía, GetSense, pero fundamentalmente una experiencia enriquecedora desde el punto de vista de las técnicas que utilizaron.

Una de las claves en este caso, para Pablo, fue la utilización de Story Mapping, una técnica para la definición del producto de manera colaborativa, utilizando un esquema visual con post-it de colores en una pared o mesa, entre todos los participantes: clientes, equipo y cualquiera de importancia en el contexto del proyecto.

Pablo destacó que aprendieron lo básico sobre esta técnica en una reunión prevía de Agiles @ Buenos Aires, lo que también es una referencia interesante en si misma.

La sesión completa, como siempre, llevó casi 120 minutos, y está dividida en 7 partes de unos 17 minutos cada una. Queda a continuación el primer video embebido, y los enlaces a los siguientes debajo. Sepan disculpar mis movimientos un tanto torpes como camarógrafo en los primeros minutos, pero el movimiento del público hacia un lado de la sala al iniciar la sesión me tomó por sorpresa.

Parte 2 de 7

Parte 3 de 7

Parte 4 de 7

Parte 5 de 7

Parte 6 de 7

Parte 7 de 7

jueves, 3 de noviembre de 2011

Video: Lenguajes dinámicos meta-circulares, por Hernán Wilkinson

Hernán Wilkinson

En la reciente Jornada de Arquitectura de Software organizada por el MUG en UADE, Hernán Wilkinson presentó esta sesión sobre lenguajes dinámicos en el contexto de entornos meta-circulares, un valor agregado a las características básicas de los tipos dinámicos.

Hernán es uno de los principales especialistas locales en programación y diseño orientado a objetos, uno de los miembros fundadores de FAST (la Fundación Argentina de Smalltalk) y organizador de la conferencia anual internacional Smalltalks que se realiza en Argentina en diversas localidades, en forma rotativa (la edición 2011 está corriendo hoy mismo en Quilmes).

Actualmente Hernán es uno de los socios de 10pines, una consultora de entrenamiento y desarrollo de software especializada en metodologías ágiles y buenas prácticas de ingeniería.

En la sesión (de una hora aproximadamente) podrán verlo explicar conceptos generales sobre lenguajes dinámicos, puntualizando la diferencia entre tiempos de evaluación y chequeo de tipos, y profundizando luego en la diferencia de flujo de trabajo al efectuar TDD en entornos meta-circulares como una imagen de Smalltak.

No tengo disponibles los slides de la sesión, pero una buena parte de la presentación incluye ejemplos sencillos en Java y en Smalltalk, con lo que el video es más importante. Van a continuación las cuatro partes de aproximadamente 15 minutos cada una.

lunes, 31 de octubre de 2011

JUGAR 2011

Jugar

Bastante sobre la fecha, me entero gracias a mi colega Nico Páez que mañana (1ero de noviembre, a las 14:30) se realiza la conferencia JUGAR 2011 en el Aula Magna del ITBAAv. Eduardo Madero 399, Buenos Aires.

Es muy bueno ver a la comunidad argentina de Java moviéndose de nuevo y organizando un buen temario como este.

Alguna de las charlas (según la misma organización):

Dan Diephouse de MuleSoft (Ingles)
Nos va a contar la experiencia y los desafios que enfrentaron al crear el primer iPaaS del mercado. Caidas de EC2, escalar MongoDB, las ventajas y desventajas de ElasticSearch/Fume, muerte del OS. Como lograron crear un servicio escalable y redundante sin punto unico de fallas en tiempos tan cortos.

Paulo Caroli de Thoughtworks (Ingles)
Paulo va a entrar en detalles sobre Kanban, y los limites que impone al Trabajo en progreso. Va a presentar una forma donde flexibiliza los limites de Kanban usando un metodo llamado objetivo-varianza. Donde el equipo controla  el trabajo en progreso usando el objetivo y varianza. 

Julio Faerman de Red Hat (Ingles)
JBoss es una comunidad open source muy activa desarrollando mas de 80 projectos. Algunos son muy conocidos como el application server y hibernate, pero otras pueden ser tan valiosos no tienen la misma publicidad. En esta charla Julio va a presentar todos los projectos activos de JBoss, como se usan en soluciones y como pueden mejorar la tuya.

Jose Alvarez Muguerza de Turmeric - Turmeric SOA
Jose nos va a presentar el proyecto Turmeric. Es una plataforma SOA para desarrollar, implementar, ejecutar y monitorear servicios y clientes. Esta escrito en Java y sigue los estándares SOAP, XML, JSON, XACML, etc.), y soporta WSDL (SOAP style - Doc Lit wrapped mode y REST style). Turmeric es la versión Open Source de la plataforma SOA usada por eBay para su negocio.

Matias Bagini de JRapid - Java en la nube
En los últimos años surgieron nuevas plataformas para alojar aplicaciones Java en la nube. Google App Engine, Heroku, AWS Elastic Beanstalk, CloudBees, CumuLogic, CloudFoundry y OpenShift son algunas de estas nuevas propuestas. Durante esta sesión haremos una comparativa y mostraremos cómo publicar aplicaciones Java utilizando estas plataformas.

Mariano Cortesi y Juan Codagnone de Zauber - Netty
Una introducción a a servidores no bloqueantes, sus usos, sus ventajas y como implementarlos usando jboss Netty

Sebastian Scarano y Jorge Aliss - Introduccion a Play! Framework
Desarrollaremos una aplicación paso a paso de manera interactiva, para mostrar las ventajas de este framework que trae la agilidad y facilidad de uso de frameworks como rails y django al mundo Java.

Gustavo Brey de Red Hat - Web Frameworks
El objetivo es una rápida introducción a frameworks web actuales y emergentes, para crear aplicaciones web y describir sus ventajas y desventajas. Este es un resultado de una investigación luego de haber desarrollado aplicaciones Web por más de 10 años en diferentes plataformas y lenguajes.

Esperemos tener mucha más actividad alrededor de esta renovada comunidad de Java.

martes, 13 de septiembre de 2011

Video: Programando de a pares con Emilio Gutter

Emilio Gutter

En esta nueva sesión de programación de a pares me sumo a Emilio Gutter para hacer un ejercicio utilizando Java.

Conocí a Emilio a fines del 2006 cuando fuimos compañeros de equipo durante el curso de Certified Scrum Master dado por Tobias Mayer. Nos divertimos mucho durante ese curso, y varios de los que pasamos por ahí nos mantuvimos en contacto después a través de una primer lista de distribución que fue uno de los puntos focales de donde surgió el grupo de organizadores de la primer conferencia de la serie Ágiles: Ágiles 2008.

Emilio lleva más de 10 años trabajando en desarrollo de software y es un desarrollador trotamundos que ha trabajado en proyectos en Argentina, Brasil, UK, USA, Francia, Rumania y Bulgaria, por lo menos. Actualmente es uno de los líderes de su consultora 10pines, que brinda servicios de desarrollo, entrenamiento y coaching, con fuerte foco métodos ágiles, incluyendo un alto compromiso con la calidad y la cultura organizacional.

En el video podrán ver cómo hacemos un ejercicio de diseño en Java, usando Eclipse con JUnit 4 y la biblioteca de mock objects mockito y planeábamos utilizar también harmcrest,una biblioteca de matchers (o predicados) muy útil para realizar aserciones en las pruebas unitarias, pero no alcanzó el tiempo esta vez, así que quedará para más adelante.

Les dejo el video (de aproximadamente 25 minutos) y espero que lo disfruten:

jueves, 31 de marzo de 2011

Yoseki Coding Dojo en Kleer

Siguiendo con la buena costumbre de los Coding Dojo, mis amigos de Kleer vienen organizando algunas de estas sesiones abiertas para escribir código entre muchos, como un ejercicio de trabajo en grupo, programación y entretenimiento. Ellos ya tienen un formato bastante definido para estas sesiones, llamadas Yoseki Coding Dojo en las que se van variando el lenguaje y el entorno.

Kleer Dojo

El martes de esta semana me sumé a esta actividad, me encontré con otro amigo asistiendo, Carlos Peix, y me di el gusto de compartir con él la primera ronda de pair programming.

Esta vez trabajamos con Java/Eclipse. Parece que el próximo Yoseki será en Ruby, y si me dejan haremos uno en Javascript.

El problema que planteó el facilitador de turno, Pablito "Pablitux" Tortorella: escribir un contador de puntos de tenis. A continuación dejo las premisas generales para quien quiera practicar este Code Kata. Recuerden que la idea es realizar el ejercicio utilizando TDD, y puede hacerse como una Kata individual, o en un Dojo con varias personas.

La idea es hacer un contador de puntos de tenis. No soy experto en tenis y no me quedaron a mano los detalles que Pablo iba mostrando como historias de usuarios, pero creo que todos sabemos un poco cómo se cuenta: "15 - 0", "30 - 0", "40 - 0"; después los sets; detalles de convención como "30 iguales", etc.

Les dejo debajo los primeros tests (a propósito no dejo todos por si alguno quiere intentar por su lado). Quienes quieran pueden ver los fuentes completos de los tests y de la implementación.

Primeros tests:

package la.kleer.yoseki.tenis.tests;

import junit.framework.Assert;
import la.kleer.yoseki.tenis.Tablero;

import org.junit.Test;

public class TenisFixture {
   
   @Test
   public void tableroTituloConDosJugadores()
   {
      Tablero t = new Tablero("Martin", "Carlos");
      Assert.assertEquals("Martin vs Carlos", t.getTitulo());
   }

   @Test
   public void tableroTituloConDosJugadoresAlReves()
   {
      Tablero t = new Tablero("Carlos", "Martin");
      Assert.assertEquals("Carlos vs Martin", t.getTitulo());
   }
   
   @Test
   public void tableroPuntajeInicial()
   {
      Tablero t = new Tablero("Carlos", "Martin");
      Assert.assertEquals("0 - 0", t.getPuntaje());
   }
   
   @Test
   public void puntosJ1()
   {
      Tablero t = new Tablero("Carlos", "Martin");
      t.puntoJugador1();
      Assert.assertEquals("15 - 0", t.getPuntaje());
   }
   
   @Test
   public void puntosJ2()
   {
      Tablero t = new Tablero("Carlos", "Martin");
      t.puntoJugador2();
      Assert.assertEquals("0 - 15", t.getPuntaje());
   }

   @Test
   public void puntosJ1_J1()
   {
      Tablero t = new Tablero("Carlos", "Martin");
      t.puntoJugador1();
      t.puntoJugador1();
      Assert.assertEquals("30 - 0", t.getPuntaje());
   }

   @Test
   public void puntosJ1_J2()
   {
      Tablero t = new Tablero("Carlos", "Martin");
      t.puntoJugador1();
      t.puntoJugador2();
      Assert.assertEquals("15 iguales", t.getPuntaje());
   }
   // Aquí van más tests
}

Finalmente, les dejo una foto del grupo en acción:

Yoseki Coding Dojo

 

viernes, 26 de noviembre de 2010

Videos de TDD en acción

Recién descubro esta excelente serie de videos de James Shore, autor del libro "The Art of Agile".

En la serie, James captura 10 o 15 minutos de sesiones de una aplicación que construye utilizando TDD en Java, sobre Eclipse. Los videos están narrados en inglés, pero más allá de la explicación, puede verse cómo va escribiendo el código y son muy ilustrativos, incluso cuando podemos no compartir algunos de los criterios que toma en determinado momento.

Comparto aquí el primer video de la serie, pero no dejen de ver la lista completa, que ya lleva 55 episodios, y últimamente involucra además a algunos invitados con lo que se puede ver no solo el ejercicio de TDD sino también el de programar de a pares.

jueves, 25 de noviembre de 2010

S4: manejando flujos continuos de datos

S4: distributed stream computing platform

S4 es un nuevo proyecto Java abierto generado por los laboratorios de Yahoo!, orientado al procesamiento masivo de información.

Ya están establecidas como práctica corriente para este tipo de escenarios tecnologías como MapReduce o su implementación abierta Hadoop, pero hasta ahora casi todas ellas trabajaban por lotes (en batch), iniciando el procesamiento a raíz de un proceso interactivo (como una búsqueda) o programado con cierta frecuencia.

S4 está diseñado para procesar los datos a medida que van llegando (en forma de stream), sin almacenamiento intermedio. La arquitectura se basa en el modelo de actores, retomando una tendencia impulsada últimamente por AkkaIo y SALSA, e implementada localmente por el ubicuo Angel "Java" López en AjAgents.

Las características principales que busca S4 son proveer un servicio indefinidamente escalable en función a agregar nodos al cluster, descentralizado en la medida en que todos los nodos son iguales, parcialmente tolerante a fallas donde los eventos pueden volver a enrutarse en caso de fallas en cualquier nodo, elástico en la medida en que la carga se distribuye automáticamente a través de los nodos, expansible a través de un API simple y orientada a objetos, donde la comunicación entre nodos se escribe utilizando POJOs (plain Java objects).

Hay un tutorial basado en una aplicación que procesa mensajes de Twitter.

 

 

lunes, 15 de noviembre de 2010

Comparación de TDD entre entornos estáticos y dinámicos

Hernán Wilkinson, uno de los integrantes de 10pines, publicó recientemente en su blog estos interesantes videos (que republicamos) comparando la práctica de TDD en Java y Smalltalk.

Más allá de algunas objeciones que se han hecho a la comparación, como estilos en uno u otro lenguaje, el ejercicio es interesante. En líneas generales se puede coincidir en que los lenguajes dinámicos tienen algunas ventajas a nivel de ejecución para este tipo de prácticas.

De paso, también es un ejemplo interesante para ver un brevísimo ejercicio de TDD y de Smalltalk para quienes no están familiarizados con ellos.

Gracias a Hernán por contribuir a la comunidad con este contenido.

viernes, 12 de noviembre de 2010

Java con problemas, pero siempre relevante

Java

Los problemas en el mundillo institucional de Java continúan.

Después del reciente anuncio de Apple de que descartará el runtime de Java a partir del futuro Mac OS X Lion, dejando la responsabilidad de continuar el soporte y librerías para Mac OS a terceros (la comunidad u Oracle), ahora es nada más ni nada menos que la Apache Software Foundation la que amenaza con retirarse del JCP (Java Community Process) si Oracle no cambia unas cuantas actitudes que han complicado el ambiente desde la compra de Sun.

En esta nota pública, la ASF comienza anunciando que ha sido ratificada en el JCP por tres años más. Pero pronto abunda en detalles de un conflicto alrededor del Java SE TCK (el Testing Kit que se utiliza para validar las implementaciones y librerías de Java) licenciado para poder certificar apropiadamente Apache Harmony, la implementación abierta de Java.

Sobre el final, la fundación amenaza con abandonar el JCP, lo que puede pre-anunciar una escisión definitiva de la comunidad Java, alejándose de Oracle.

Todas estas peleas complican el panorama de Java como lenguaje, mientras la JVM (la máquina virtual de Java) sigue siendo un terreno fértil sobre el que siguen creciendo nuevos lenguajes como Clojure, Scala, Groovy y muchos otros.

A la vez, nada más ni nada menos que Microsoft sigue ampliando soporte para Java en su plataforma. Después de adquirir Teamprise y convertirlo en Microsoft Visual Studio Team Explorer Everywhere 2010 (como ven, extendiendo al menos el título) para dar soporte completo a Eclipse, en el reciente PDC10 se anunció un soporte más amplio para Java (y otros lenguajes) en Windows Azure. Información muy detallada sobre Java en Azure se puede leer en este post de Rob Blackwell.