miércoles, 19 de diciembre de 2012

Ofertas de navidad en cursos online

Antes de que acabe el año sacamos unas ofertas en cursos en últimas tecnologías en el sitio www.crazycrhristmasdays.com con descuentos importantes.

Hemos oído las sugerencias y hemos creado nuestro portal de formación online con vídeos de alta calidad y tutoriales adaptados a vuestras necesidades.

Estas ofertas navideñas sólo están disponibles para el 2012 y sale una cada día, así que date prisa ya que duran solamente 24 horas.

Los contenidos son variados: Responsive Web Design, Desarrollo para móviles, Diseño de webs para móviles, Springframework, SpringMVC, Twitter Bootstrap, y muchas cosas más, pero recuerda que cada oferta sólo está dispnible durante 24horas .

Si necesitas otros tipos de cursos, estamos creando un área para webmasters donde puedes aprender  a diseñar para móviles, crear landing pages, analítica web, comercio electrónico, Responsive Web Design, temas para Wordpress, Magento, Prestashop y Moodle.

Mejor pásate por www.aulawebmaster.com y mira todo lo que tenemos preparado.

lunes, 26 de diciembre de 2011

Oracle y el fin de Java

El fin del mundo Java conocido.

Puede parecer alarmista, pero creo que el mundo java está llegando a su fin, por lo menos tal y como lo conocemos. El desarrollo de aplicaciones en Java ha ido cambiando y poco a poco han ido apareciendo nuevos lenguajes y formas de acometer proyectos.

La complejidad propia del desarrollo con este lenguaje y la complejidad sometida por metodologías de desarrollo orientadas a procesos ha hecho que muchas empresas empiecen a mirar otras alternativas como por ejemplo metodologías ágiles.

Pero en este caso, el artículo no habla de las complejidades propias del desarrollo con lenguaje java, ni de las metodologías asociadas a estos proyectos, si no de la propia Oracle, propietaria de esta plataforma de desarrollo desde que compró a Sun Microsystems.

Mucho se ha rumoreado y mucho se sigue especulando sobre el futuro del desarrollo de aplicaciones en Java. Desde luego la filosofía de Oracle nada tiene que ver con la filosofía de apertura de Sun. A este último siempre se le achacó el que no abriera la plataforma de desarrollo de Java al exterior y conservara las patentes, pero por lo menos aunque conservando las patentes, dejó que otras empresas colaboraran en la definición de está normas y prácticas de desarrollo, así como definiciones que acabaron siendo parte de las nuevas APIs y formas de J2SE y sobretodo de J2EE. Algo que hizo estandarizar los proyectos en los servidores de aplicaciones fueran del proveedor que fueran.

Decía que la filosofía de Oracle desde luego no es para nada igual a la de Sun Microsystems. Oracle es un gigante que quiere maximizar sus beneficios y ha realizado numerosas compras de empresas líderes en sus sectores. De un plumazo se ha hecho los servidores de aplicaciones más relevantes del sector: Weblogic, SunOne y OAS, comprando a Sun se ha hecho también con la base de datos gratuita más implantada en proyectos, MySql. Dispone a su vez de una de las herramientas de desarrollo para Java más usadas en este sector como NetBeans, se quedó también con toda la familia de productos de Sun y su galería de servidores Solaris.

Además de otros sectores, el fin de Java no viene por estas compras, si no por los movimientos que está realizando Oracle en este mundo. De momento canceló el proyecto OpenSolaris, ha puesto demandas a Google por uso del JDK en los dispositivos Android, hecho por el cual Google contrató al ingeniero que desarrolló el jdk y ha creado una versión de jdk adaptada a sus necesidades libre de cargas para con Oracle.

Por otra parte, también modificó la licencia de uso del servidor de integración continua Hudson, creado por ingenieros de Sun y de libre distribución, de tal modo que los creadores de Hudson han abandonado el proyecto creando un gemelo llamado Jenkins.

Java se ha convertido en el lenguaje rey para aplicaciones empresariales, nacido inicialmente como respuesta a la afronta de Microsoft y que permitió el agrupamiento de grandes empresas rivales a trabajar de alguna manera aunando esfuerzos, y resulta que el enemigo estaba en casa.

Entiendo los motivos de negocio que pueden llevar a Oracle a tomar este tipo de decisiones, pero creo que en general es una equivocación para el mundo del desarrollo de aplicaciones basadas en Java. Pese a las dificultades del desarrollo de este tipo de aplicaciones, las empresas preferían este modelo, porque estaba basado en buenas prácticas y por lo menos casi estándares. Pero este movimiento monopolístico sólo hará que las cosas cambien más deprisa.

La pregunta es clara, ¿cuánto tardará Oracle en dar el golpe de estado? ¿Cuánto tardará en decir que Java le pertenece y todo aquel que quiera desarrollar aplicaciones debe pagar royalties? De manera directa o indirecta con sus servidores o aplicaciones.

Me imagino que IBM debe de estar ya buscando alternativas. No es un movimiento sencillo, y yo calculo que al ritmo que se mueven las aplicaciones de Internet, 5 años será el tiempo suficiente para el cambio, y si contamos el ritmo de las aplicaciones empresariales, no más de 10 años.

Ahora bien, ¿Cuál será el soporte candidato al relevo? Esa es una buena pregunta, cada vez hay más movimientos en este sentido. En el caso del lenguajes Python y Ruby parecen una buena alternativa, aunque estar trabajando a nivel de fichero creo que es un atraso. Por otro lado Groovy y Scala pueden ser dos buenas alternativas a los desarrolladores Java y sobretodo con los datos que tenemos hoy día, creo que Springframework es una alternativa a tener en cuenta. Lástima que esté completamente basado en Java, pero se puede ver como VMWare está realizando movimientos creando una infraestructura basada en cloud y lenguajes como Groovy, Scala y Ruby  y mezclando con Spring, dando resultados como Grails.

El mundo Java está cambiando, Oracle devora todo lo que contiene este mundillo y sólo le falta atacar el mundo de las aplicaciones móviles, Google lo ha visto venir, incluso crea sus propios lenguajes y herramientas de desarrollo, algo normal para no depender de nadie, pero puede ser infructuoso a largo plazo aislarse tal y como hizo Nokia, mientras otros como IBM con capacidad de hacer fuerza y capacidad de decisión  y hacerse oir, se dedican a hablar del mundo del futuro y su único interés es vender hierro, y no ven la realidad que se acerca.

Tiempos de cambios, hay que ser visionario, las oportunidades saldrán para aquellos que estén preparados.

miércoles, 21 de diciembre de 2011

Botones Css3 adiós photoshop

Corren nuevos tiempos para los diseñadores.

No cabe duda que Css3 ha venido a quedarse, algunas de sus propiedades son realmente impresionantes y ha sido gracias a muchas voces relacionadas con el diseño gráfico para Internet las que se han tenido en cuenta.

Revisando unos materiales online sobre diseño de widgets para la web desde UIParade, me topé con un vídeo, donde explicaba  cómo hacer un botón con un buen diseño en photoshop (en concreto este vídeo tutorial), así que me propuse hacer lo mismo mediante CSS3 y básicamente este es el resultado:




El efecto es mejorable y cabría añadir el icono del tick dentro del botón, pero el resultado, aún con esquinas redondeadas, se parece bastante y es totalmente funcional, con rollover y todo.

Para poder ver el resultado debes disponer de un navegador con soporte a CSS3 y que soporte gradientes y sombras. Hasta la fecha los navegadores que mejor soporte dan a CSS3 son Firefox y los basados en Webkit, como Safari y Google Chrome. Opera no da un buen resultado y si has venido hasta aquí con Internet Explorer, lo siento pero no podrás ver mucho.

Sí que he encontrado algunas diferencias sobretodo en Chrome a la hora de interpretar el fondo, no lo realiza del todo uniforme. Pero no es una mala solución, ya que no se ha manejado ninguna imagen.

Las conclusiones pueden ser muchas, pero a grandes rasgos en el vídeo necesitamos adquirir una licencia de photoshop y un buen conocimiento del mismo programa, mientras que con CSS3 solamente un bloc de notas sería suficiente y otra conclusión es que no hay sobrecarga de imágenes, no hay múltiples peticiones de las mismas, ni conexiones concurrentes desde nuestro navegador (algo que por otra parte se puede resolver usando CSS Sprites), también el contenido es indexable y al ser texto descarga muy rapidamente.

La desventaja es que a día de hoy el soporte a CSS3 no es completo por todos los navegadores, aunque en el caso de Internet Explorer se puede aplicar un parche para entienda CSS3.

CSS3 viene empujando fuerte y cada vez se ve mejor su potencial, sobretodo en el desarrollo de aplicaciones móviles y tablets. Por otro lado, los diseñadores deberán empezar a conocer este tipo de herramientas y tecnología para los nuevos diseños web.

A continuación dejo el código usado para crear el botón:


<style type="text/css">
#contenedor {
  background-image: -moz-repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  background-image: -webkit-repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  background-image: repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  height: 100px;
  width: 150px;
  padding-top: 10px;
  padding-right: 10px;
  padding-bottom: 10px;
  padding-left: 10px;
}
#btnEnviar {
  color: rgb(6, 21, 50);
  left: 20%;
  position: relative;
  top: 20%;
  background-image: -moz-linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: -webkit-linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: -webkit-gradient(linear, center top, center bottom, color-stop(0, rgb(94, 172, 202)), color-stop(1, rgb(70, 128, 150)));
  border-top-width: 1px;
  border-right-width: 1px;
  border-bottom-width: 1px;
  border-left-width: 1px;
  border-top-style: solid;
  border-right-style: solid;
  border-bottom-style: solid;
  border-left-style: solid;
  border-right-width: 1px;
  border-right-style: solid;
  border-right-color: rgb(51, 51, 255);
  border-bottom-width: 1px;
  border-bottom-style: solid;
  border-bottom-color: rgba(51, 51, 255, 0.25);
  -webkit-border-radius: 5px 5px 5px 5px;
  border-radius: 5px 5px 5px 5px;
  -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
  text-shadow: 0px -1px 0px rgb(0, 0, 102), 1px 1px 1px rgba(255, 255, 255, 0.5);
  padding-top: 10px;
  padding-right: 20px;
  padding-bottom: 10px;
  padding-left: 20px;
  font-weight: bold;
  vertical-align: middle;
}
#btnEnviar:hover {
  color: rgb(255, 102, 0);
  text-shadow: -1px -1px 1px rgba(255, 204, 51, 0.5), 1px 1px 1px rgba(255, 204, 0, 0.5);
}
#btnEnviar:active {
   border-top-color: #1b435e;
   background: #1b435e;
   }
</style>
 

El código html es simple, un div y un button:


<div id="contenedor">

<button id="btnEnviar" name="enviar" type="submit" value="Enviar">Enviar</button>
</div>

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.

Articulos relacionados