miércoles, 22 de diciembre de 2010

Google dona GWT a Eclipse

Google dona sus proyectos WindowBuilder Pro y CodePro AnalitiX al proyecto Eclipse.
Actualmente Google desarrollaba estos proyectos integrados sobre la plataforma Eclipse, pero en la actualidad será posible encontrarlos como proyectos de la comunidad Eclipse, aunque todavía puede descargarse el generador de interfaces gráficos desde el sitio de Google.

Con esto suponemos que se dará carpetazo al proyecto Visual Editor de Eclipse, que no terminaba de cuajar debido a problemas e incompatibilidades con versiones, y a una extrema dejadez del mismo.

Algo que se le podía achacar a Eclipse era no disponer de un entorno para generar interfaces Swing o SWT integrado al estilo de otros IDEs y siempre tratar de instalar plugins de terceros que fueran compatibles con las versiones actuales del IDE (como por ejemplo VisualSwing4Eclipse, o Abeille) y ahora con este nuevo proyecto dispondrá de un editor visual drag&drop que permitirá distintos tipos de interfaces gráficos.

Fuente: InfoQ

jueves, 4 de noviembre de 2010

Oracle compra ATG




Con ansia voraz, el gigante del software Oracle anunció el día 2 de Noviembre la compra de la empresa de software especializada en comercio electrónico ATG.

Mundo java, servidores de aplicaciones, hardware, bases de datos ¿qué le queda por comprar? Todavía queda algunas cosas para su plantilla como publicidad y marketing online, y el mercado de los móviles. ¿Serán esos sus siguientes pasos? ¿Se estará preparando para ser un digno rival de Google en aplicaciones de Internet? ¿Hacia dónde se dirige? De momento todo está en manos de que se apruebe el acuerdo, pero todo apunta a que así sea.

Información de la compra en la página de oracle.

viernes, 15 de octubre de 2010

Experto y master en comercio electronico








Nos encontramos metidos de lleno actualmente en el desarrollo e impartición de clases en el experto y máster en comercio electrónico de la Universidad de Salamanca (http://master-ecom.usal.es/), y en el máster en comercio y negocio electrónico para PYMES (http://mastercomercioelectronico.net), que es gratuito para trabajadores en activo.

De entre todos los temas que se imparten en el máster, los temas que abordaremos son muy interesantes y corresponden a:

  • Comercio y negocio electrónico.
  • Marketing online.
  • Gestión de tiendas y catálogos online.
  • Estadísticas y medición de éxito.
  • Teletrabajo.
  • E-learning.
  • Actitudes de compra en Internet.
  • Logística.
  • Liderazgo, coaching y actitud emprendedora.
También hay planificado otro curso muy interesante sobre gestión y creación de contenidos digitales: http://www.certificacioncontenidosdigitales.net/ también con matrícula gratuita.

viernes, 30 de julio de 2010

Grails, me he vuelto a enamorar



Cuando comencé con Java allá por el siglo XX, vi claramente que era mi lenguaje de programación de aplicaciones y abandoné rápidamente coqueteos de adolescente con lenguajes como C, C++ o Perl.

No todo el romance fue miel sobre hojuelas, ya que me costó inicialmente pensar en objetos, pero hecho el cambio, todo fue como la seda, y mi pasión por Java hizo que se abriera un mundo de posibilidades, hice una apuesta y fue ganadora. Casi podría decir que crecimos juntos.

He visto como se desarrollaba el lenguaje, las aplicaciones, las especificaciones, los servicios, y como la criatura iba creciendo, haciéndose más madura, estable y sensata, y como poco a poco fue conquistando el corazón de admiradores y detractores. Atrás quedan muchos comentarios nefastos de gente ajena a los cambios, cruciales por otra parte para hacer que la plataforma creciera en madurez.

Se podría afirmar sin muchas pretensiones que la infraestructura Java es la más demandada hoy en día en el entorno empresarial. La que mediante sus especificaciones ha sido estandarte de buenas prácticas de desarrollo y ha sido copiada en sus fueros y en sus formas, ha sabido adaptarse a lo que pedía el mercado en cada momento. Y tengo que decir, que a mí me ha dado muchas satisfacciones y muchos dolores de cabeza también.

La niña creció y se hizo muy compleja (que no de complejos), es tan grande su alcance que no es posible saber de toda su plataforma al detalle, y menos cuando los cambios se producen constantemente. A la complejidad de su plataforma se añade la complejidad de las formas. Para saber desarrollar una aplicación en Java no basta con saber orientación a objetos, es necesario conocer además, buenas prácticas de desarrollo, la sintaxis correcta del lenguaje, una correcta metodología de programación, notaciones y metalenguajes, patrones que con el tiempo se vuelven antipatrones, frameworks que dificultan más que facilitan el desarrollo, factorías y más factorías. Así como tecnologías externas a java, pero que son imprescindibles pues sin ellas, los proyectos se quedan cojos. A todo esto hay que unirle, las pruebas unitarias, TDD, BDD, mocks, stubs, y conocer herramientas de integración continua, ant, maven, ivy, y servidores de integración continua. En fin, un perfil de los de antes, cuando para hacer una aplicación de escritorio se pedía ser MOU.

Ahora nos encontramos en los tiempos de las arquitecturas MVC, donde afortunadamente la capa del dominio se ha ido simplificando, no gracias a Sun Microsystems, aka Oracle, si no a terceros que vieron la oportunidad, pero claro hay que conocer sus frameworks de persistencia (sí más frameworks, con más factorías), las capas de control y vista también se incluyen en frameworks (cargados de factorías claro) y todo esto para hacer que las aplicaciones sean más reutilizables y escalables. Y es que si uno hace un proyecto en Java, su proyecto debe tener al menos uno de estos patrones: Facade, singleton, factoría (abstracta o concreta), y a partir de ahí si quiere que le llamen "experto" poner alguno más de los que están en esta lista: memento, observer, decorator, proxy, prototipo, y para ser un MOU hay que aplicar los mismos patrones pero con nombres rimbombantes J2EE tales como, Front controller, business delegate, visitor, value object, publish-subscribe, etc. Y es que si no se plasma eso en una buena charla con cervezas, tu proyecto no es de calidad. Y a todo esto, ¿al cliente qué le importa?

El resultado es obvio, crear un buen perfil de auténtico "machaca" de la plataforma Java, lleva muchos años, y no es de extrañar, que empresas y programadores noveles hayan optado por otras plataformas, que han surgido a la zaga de todo esto, como php o Ruby, donde el desarrollo es más ligero y rápido, y en muchos casos peor en cuanto a buenas prácticas, de hecho, el mundo php ha tenido que ponerse las pilas imitando al mundo Java y el ejemplo más claro es Zend Framework, o php orientado a objetos. Tampoco es de extrañar que aparezcan lenguajes más ligeros basados en las buenas prácticas de Java, e incluso basados en java, como scala o groovy, que pretenden lo mejor de ambos mundos, rapidez y potencia, así como "pescar" programadores que vengan del mundo java y del mundo perl, php o ruby.

Con todo esto, pasé un tiempo aburrido de la plataforma Java, cierto es que parece que estuvo un poco estancada, pero a partir de la versión 1.5 dieron un empuje hacia la mejora, como las anotaciones, los tipos parametrizados, mejoras en bucles, boxing y unboxing, enumeraciones y mejoras en las colecciones. Era un paso, y fue bien acogido en la comunidad aunque se les pedía más mejoras similares a otros lenguajes que aparecían en el mercado. Pero seguía habiendo factorías y más factorías. El escenario típico para realizar una consulta en una base de datos era pasar al menos por cuatro factorías y un par de facades antes de poder conocer lo que tenía la tabla. En fin muy aburrido.

Había que renovar el amor, y conocí la inversión de control y la inyección de dependencias, tras probar pequeños manjares me quedé con springframework. Su curva de aprendizaje no era sencilla, pero todo valía la pena por seguir con la bella Java, aunque ya por aquel entonces tenía bien claro que la tecnología no lo es todo y lo que manda es el mercado, me resistía a dejar escapar un romance de tantos años. Fue una agradable sorpresa, spring hizo que renaciera el amor, menos relación entre el código y más programación declarativa, más plug&play, en fin, lo mismo pero con otros ojos, porque por debajo hay más y más factorías, pero no las toco si no quiero, y simplemente integro servicios, además con las últimas versiones puedo elegir si la configuración es mediante xml o anotaciones. Algo divertido.

Hice entonces una nueva apuesta y aposté por spring, aunque en el mercado aparecían nuevos frameworks, como EJB 3, JBoss Seam, creo que la apuesta fue buena, se me volvió a abrir un nuevo mundo de posibilidades y satisfacciones, y el tiempo y los clientes me han dado la razón (a ver si voy a ser el Rapel de la tecnología).

Spring estaba bien, pero se hace demasiado pesado a la larga, sin embargo aporta mucha potencia, y tras la euforia inicial, noté que echaba de menos algo, parecía una relación romántica pero estancada, también conocí JPA y me gustó, fue un buen complemento y nuevamente el mercado me dio la razón, en este caso Google con su application server, la verdad es que hibernate me tenía muy cansado.

Tratando de recuperar la emoción, a veces hay que cambiar de contexto, y probar cosas nuevas, el mundo RIA es un buen sitio, interesante y divertido, silverlight, JavaFX, Adobe AIR, pasar a JSF, también interesante. El mundo estaba cambiando, se podía notar en el aire, se podía apreciar la necesidad y las ganas de hacer las cosas bien, rápidas y divertidas. Legan a mis oídos nuevos lenguajes como Groovy, Scala o Roo, bien son similares, pero diferentes, y basados en Java, probemos alguno.

Y llegó el amor, Grails. Basado en Groovy y Springframework, joven, con potencia, divertido y fácil. Los conocimientos anteriores son asumidos de inmediato, se deja querer y facilita mucho las cosas, permite integrar programadores de distintos entornos y realizar labores complejas en java, aquí son tremendamente sencillas, GORM es impresionante, hace tremendamente sencillo trabajar con hibernate. Las únicas pegas que puedo ponerle son precisamente su juventud, le falta algo de madurez, pero tiene mucho conocimiento anterior almacenado, no reinventa la rueda, simplemente la hace más sencilla. Otro punto en contra quizá, es que hay muchas maneras de implementar la misma solución lo que puede resultar un poco frustrante a veces, pero una vez acostumbrado los tiempos de desarrollo se reducen. Creo que es el comienzo de una buena amistad.

Cuando alguien me dice que quiere aprender a desarrollar en Java, o empresas que quieren migrar sus proyectos a Java, antes tenía el corazón partido, sabía que le podía dar muchas satisfacciones, pero también muchos quebraderos de cabeza, ahora simplemente les animo a que aprendan algo de Java y den el paso a Grails. Si mi intuición funciona una vez más, desarrollar proyectos con Grails es una apuesta segura.


Esto será el comienzo de una serie de post dedicada a Groovy y Grails.

lunes, 19 de julio de 2010

Los cuatro pasos para la optimizacion de aplicaciones para moviles

Crear aplicaciones web para dispositivos móviles requiere algo más de detalle a tener en cuenta que para navegadores de escritorio, ya que estos dispositivos son más pequeños, su pantalla por lo tanto también lo es y sus requisitos de rendimiento también son menores. Es por lo tanto necesario y vital realizar unas buenas prácticas sobre optimización de sitios web para móviles en tan sólo cuatro pasos:

  1. Declara el tamaño del viewport
  2. Utiliza CSS Sprites
  3. Usa IDs fragmentados
  4. Activa las cabeceras HTTP de caché

1.- Declara el tamaño del viewport


Algunos navegadores realizan efectos de zoom para redimensionar las páginas para adaptarlas al tamaño de la pantalla, esto puede tener un efecto adverso en páginas que ya han sido diseñadas para pantallas pequeñas. Simplemente hay que poner un meta-dato en la cabecera del documento de esta forma:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

2.- Utiliza CSS Sprites


Las aplicaciones web contienen un número diverso de imágenes estáticas, repetidas y separadas se sirven con distintas peticiones http. La técnica consiste en unirlas y servirlas bajo demanda mediante el uso de CSS tal y como se explica en otro post "CSS Sprites, optimizando la web"

3.- Usa IDs Fragmentados


Las páginas grandes en las aplicaciones web pueden mostrar y ocultar contenido, pero puede darse ciertas ocasiones en las que la navegación se vea perjudicada, ya que el botón retroceso del navegador no funcionará adecuadamente. En este caso la técnica a usar pasa por añadir un identificador único al final de la URI.

http://myapp.example.org/myapp#view



4.- Activa las cabeceras HTTP de control de caché



Los recursos dinámicos que cambiar ocasionalmente pueden ser también cacheados a través de una URI que contenga un hash del contenido del recurso. Usando esta técnica el navegador no tendrá que consultar constantemente las cabeceras de control de la caché, por ejemplo:


<img src="http://www.example.com/userimages/joeblogs-67f90da089da">


Para realizarlo primero hay que poner la política de caché a "Never expires" en la cabecera http "Expires" y después añadir el hash a las URIs.

Otra posible función de esta técnica es "cachear" el contenido AJAX para móviles al igual que se hace con el contenido primario, reduciendo de esta manera la cantidad de peticiones necesarias al servidor, esto se puede hacer normalmente con las configuraciones de las cabeceras "Expires" y "Cache-control".

jueves, 27 de mayo de 2010

Exadel Cloud Computing







La empresa Exadel presenta "Cloud in a Box" una AMI (Amazon Machine Instance) preparada y lista para desarrollar y desplegar proyectos basados en seam y JSF.

La AMI puede ejecutarse en Cloud (Amazon) o dentro de nuestro propio hardware y el sistema viene configurado con:

SO Fedora Core 8
Database Ingres
Application server JBoss 5.1.0.GA
IDE Eclipse 3.4 SR2 with JBoss Tools 3.0.2.GA and RichFaces 3
Webserver Apache 2.2.9
Ejemplos Demo incluida de RichFaces: photoalbum

Es necesario disponer de un usuario de EC2 de Amazon para poder descargar los ficheros, además Exadel dispone de un completo manual de configuración del entorno.

Una buena alternativa de ejemplo cloud para no depender de configuraciones y actualizaciones.

viernes, 7 de mayo de 2010

El nuevo estandar para el project management


La nueva norma ISO 21500 surge como el nuevo estandar para la gestión de proyectos.

Se trata de un compendio de normas y buenas prácticas que se unen en esta norma como fruto de la investigación durante años para conformar este estandar.

La norma ISO 21500 no están todavía operativa y todo apunta a que la final release será para el 2012, aunque actualmente puede obtenerse el draft de la ISO 21500.

Visto en: http://www.projecttimes.com

miércoles, 5 de mayo de 2010

Como soportar CSS3 en Internet Explorer

Si quieres soportar las nuevas caracerísticas de CSS3 en el navegador Internet Explorer 6,7 u 8 sólo hay que instalar una extensión que hace que se soporte esta tecnología.

La extensión puede encontrarse aquí: http://fetchak.com/ie-css3/

Articulos relacionados