Java sigue los pasos de C#?

Luego de mucho tiempo sin postear quiero tocar un punto que genera debates acalorados y mi intención, valga la aclaración, no es iniciar ese debate aquí, mi intención es exponer mi percepción de la realidad y escuchar sus opiniones. Hace quince años o un poquito más Java era visto como una innovación y permítanme decirle que incluso me tuvo cautivado algunos años, era un lenguaje que emanaba promesas de ejecución multi-plataforma, un lenguaje que nos alejaba de los dolores de cabeza (necesarios en se entonces) de los punteros y que impulsaba la orientación a objetos en un mundo procedural y desordenado.

Hace ocho o diez años, Java era el ejemplo a seguir (y en otros sentidos a evitar) por un nuevo y raro espécimen de C llamado C#, Java lideraba el mercado junto a otros lenguajes que no le hacían sombra o bueno no la sombra suficiente, como ser Delphi (que buenos tiempos), pero después de todo Java era aquello que se tenía que mirar antes de seguir el camino, en esa época me encontraba trabajando en la Empresa Nacional de Telecomunicaciones de mi país y como era previsible se usaba Java y mas específicamente J2EE como plataforma de desarrollo, laburaba en la integración de un portal y SAP/R3, mediante un concepto incipiente en ese entonces, servicios web, en esa época prematura y emergente de la plataforma .NET ocurrió mi transformación y mi mirada definitiva hacia Microsoft, en aquella época donde compañeros de trabajo con mucha más experiencia que yo en Java y en la vida profesional, desmerecían el esfuerzo inicial de Microsoft, época en la que me anime a realizar una afirmación temeraria durante una reunión de colegas, «.NET en diez años tomaría el liderazgo como plataforma de desarrollo».

Hoy a casi diez años de aquella osada frase, puedo afirmar que mi predicción se va cumpliendo, quizá aun no se tenga el liderazgo total como plataforma de desarrollo, pero puedo afirmar con total convicción, que los papeles han empezado a invertirse, hoy por hoy las miradas de «lujuria» no van en un solo sentido sino en ambos, hoy no es solo uno el que anhela lo que el otro tiene, Java ahora sigue o pretende seguir el ejemplo de lo que C# y .NET están apuntalando.

En este punto es necesario mencionar aquellos elementos que generan esos deseos lujuriosos que siente Oracle (nuevo dueño de Java), entre los más notables están:

  • La característica de ejecución multilenguaje en la plataforma .NET, actualmente Java es el lenguaje abanderado de J2EE y aunque existen varios otros lenguajes que se ejecutan sobre la JVM/JRE el objeto de deseo, son los lenguajes dinámicos introducidos recientemente por Microsoft en la plataforma, en este punto Java tiene limitaciones para la implementación del soporte en la modificación dinámica de clases y métodos, base para la construcción de lenguajes dinámicos, esto es una promesa pendiente para la versión 7 de Java.
  • Expresiones Lambda & LINQ, la elegancia y simplicidad de estas características dentro del .Net Framework 3.0 son irreproducibles en Java o J2EE, aunque actualmente existen intentos aislados y desde mi punto de vista, infructuosos, aun estamos un poco lejos de ver algo similar a LINQ en Java, encontramos a un sbql4j, un Quaere, un Guice, pero repito todos ellos intentos aislados e infructuosos, a excepción quizá de un concepto nuevo a ser introducido en la versión 7 de Java, llamado Closures un concepto similar a las expresiones lambda.

En estos dos simples ejemplos vemos como la realidad ha cambiado, pero quizá Uds. se preguntaran: ¿Son esos dos simples puntos, razón suficiente para afirmar que .Net dominara el mercado de desarrollo?, ¿Cual es la razón por la que sostengo mi afirmación inicial de un .Net dominante? Esta viene de leer y conversar con varios programadores de Java  que perciben al igual que yo, la lentitud de reacción, evolución y adaptación que sufre esta plataforma y esta sensación se ha visto acrecentada desde la reciente adquisición de SUN por parte de Oracle, tampoco no es un secreto que existen grandes diferencias entre aquellos que mantienen el lenguaje y aquellos que lo usan e incluso diferencias al interior de la coalición de compañías que usan J2EE y a su vez lo mantienen, esto otorga una ventaja innegable a .NET, que no tiene que satisfacer los deseos contradictorios de varias empresas, pues solo pertenece a Microsoft, lo cual permite que esta ultima sea comparada con una liebre a lado de una tortuga, por los mismos prestigiosos y reconocidos usuarios en el mundo J2EE. 

Quizá esta exposición puede ser criticada de trivial y superficial pero tampoco deseo entrar en una polémica de característica por característica, costo/beneficio, etc. Algunos también opinan que no existe debate o no debería existirlo, luego de comprender correctamente el concepto de inter-operabilidad, a todo esto les dejo algunos links: 

En cualquier sentido habrá que esperar la versión 7 de Java, que trae muchas promesas, pero mientras esta versión es ampliamente aceptada pasara un tiempo, un muy buen tiempo, en el cual seguramente Microsoft seguirá su imparable camino de innovación y mejora, que lo alejara más aun de J2EE y lo acercara cada vez a un estado dentro de mis pronósticos.

Protegiendo tus ojos con Visual Studio y otras cositas mas

Este post complementa uno anterior que hice y que es bastante popular sobre como proteger tus ojos con VS (http://geeks.ms/blogs/eortuno/archive/2008/10/26/protege-tus-ojos-con-temas-de-visual-studio.aspx), hoy curioseando la red encontre un excelente sitio que ademas de tener muchos temas para VS, tambien tiene Wallpapers con una calidad estupenda (http://vs2010wallpapers.com/) se los recomiendo. Estoy pensando armar mi propio tema para windows 7 o alguno sabe si existe ya uno para desarrolladores?

Un abrazo

 

De nuevo a las andanzas

Luego de tiempazo de no escribir, aqui le entro a la carga nuevamente, y bueno este post es para comentarles lo que anduve haciendo desde Mayo, un mes despues de escribir mi ultimo post, fui invitado para liderar el equipo de desarrolladores del proyecto del Padron Electoral Biometrico en mi pais Bolivia, esto me ha tenido sumamente ocupado probablemente mas de lo que deberia, actualmente me encuentro a mitad del proyecto con una riqueza unica de experiencias y con el animo listo a sacar adelante el proyecto. Cuanto no me hubiese gustado que el proyecto se hubiese iniciado al año para poder usar muchas de las nuevas caracteristicas de VS 2010 pero no se podia esperar mas las elecciones aqui son este 7 de Diciembre y mi equipo esta a toda maquina para alcanzar las ajustadas metas que nos impone el organo electoral. En fin creo que seguire contandoles mas a detalle algunas de las caracteristicas (no confidenciales) de este proyeco, mientras tanto nuevamente me tienen aqui.

 

Un abrazo

Flash Memories y Software Gratuito

Me volví adicto al Lupo PenSuite, que es una colección de software portable, de la mas gran variedad, perfectamente organizado y por encima de todo, con una aplicación que se coloca en la barra de tareas y te permite acceder a esos programas, este “launcher” esta basado en otra herramienta llamada ASuite de http://www.salvadorsoftware.com/ que es muy similar al de U3 (http://www.u3.com/default.aspx) con las ventajas de que es posible utilizar ASuite y por ende Lupo PenSuite en cualquier Memory Flash y no solo en las U3 y que realmente es liviano en cuanto a consumo de recursos, además se puede colocar casi cualquier programa portable en su menú cosa que necesita un trabajo especial con la tecnología de U3. Alguno de Uds. conoce algun Launcher tan bueno como este?

http://www.lupopensuite.com/

Hablando de Flash memories , una comparativa exhaustiva de varias de estas memorias en el mercado, esta para no perderse, gracias Andres.

http://arstechnica.com/hardware/news/2009/05/usb-flash-drive-roundup.ars

Otro excelente programa gratuito, que instale recientemente, es Executor, otro launcher, que no esta enfocado solamente en software portable, es un concepto diferente que se enfoca en la abreviación para acceder a otro software, Uds. pueden crear palabras “clave” o índice las cuales podrán usar para acceder al software de sus computadoras.

http://www.executor.dk/

Estuve revisando en el histórico de Geeks.ms y no encontré una referencia a esta nota, por eso la publico, DevExpress libera un CodeRush Express, totalmente gratuito, me fascina sus refactorings, lo pueden descargar de aquí:

http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/

Microsoft & Software Libre – La Presentación

Hace mucho tiempo que he querido escribir esta entrada, mas exactamente desde que tuve el honor de conocer a Richard Stallman y dar una conferencia sobre este tema, después de haber dado la charla la anterior semana, como les comentaba en mi anterior entrada, he aquí la misma, que explica como va todo este asunto de Microsoft y el software libre. La conferencia estuvo precedida de ciertos momentos en los que amigos y conocidos me escribían y me llamaban para decirme: Como es eso de que Microsoft y el software libre en una misma conferencia? Seguro vas a atacar a Linux y al software Libre! Andáte con chaleco antibalas que seguro alguien te pega un balazo! Te vas a hacer odiar….. etc, etc.

Sin importarme mucho de esos pájaros de mal agüero me lance a iniciar la charla, el salón estaba con muy poca gente y yo me dije “maldición seguro están instalando linux”, esto cambio a medida que corría la voz que alguien estaba hablando de Microsoft y el software libre y termine con el salón casi lleno.

Los puntos que plantee fueron claros, simples y muy puntuales.

Que es realmente el software libre (SL)

Inicie la charla mostrando los puntos que Richard Stallman utiliza para definir, lo que es software libre, estos definen que el software libre es aquel software que permite ejercer:

  • Libertad de ejecutar el programa como desee.
  • Libertad de estudiar el código fuente y modificarlo para lo que desee
  • Libertad de crear y redistribuir copias
  • Libertad de publicar versiones modificadas

Aclarando que estos principios, para los que no lo sabían, son fundamentales en la definición de SL y definen un estilo y filosofía de vida del todo o nada es SL.

Lo que Microsoft entiende.

En este punto he aclarado que Microsoft, entiende perfectamente que no debe confundirse Software Libre con Código abierto o lo que es lo mismo Free Software != Open Source y que malintencionadamente muchos y muchas de las empresas, dejan que estos términos se utilicen como sinónimos.

Estoy acostumbrado a escuchar que tal software es software libre cuando realmente no lo es. Porque? Por que no cumple uno o varios de los principios de libertad establecidos por Richard Stallman, a tal punto que se puede decir que muy poco software que dizque es software libre, lo es realmente. Observe a mi auditorio y pude percibir que se preguntaban: Como que como que dijo que? y ahí entendí que logre capturar su atención e iniciamos la polémica.

Iniciando la polémica

Inicio esta nueva parte con una pregunta a mi auditorio y en este caso a vosotros: Cuantas distribuciones de Linux son realmente Software Libre?. El auditorio estaba plagado de murmullos pues aunque veo gente muy conocedora de Linux ninguno acepta el desafío de responder la pregunta, quizá por timidez digo yo. Posteriormente menciono que de acuerdo a la opinión del mentor de la idea de software libre, realmente pocas distribuciones son consideradas realmente software libre, y no es algo que yo me invente o que Microsoft lo diga, lo ha dicho el propio Richard Stallman y no estoy engañando a nadie, entre las distribuciones reconocidas por él como software libre, se encuentran las siguientes:

  • gNewSense (una distribución basada en Debian y Ubuntu)
  • Ututo (una distribución basada en Gentoo, procedente de Argentina)
  • Dynebolic
  • Musix GNU+Linux

En este listado esta demás decir que no se encuentran ni asomadas las mas populares distribuciones con las que todos se llenan y limpian la boca del SL, entre ellas Fedora, Ubuntu, SUSE, etc.

Mas murmullos y ninguna persona levanta la mano. Porque Stallman diría tal cosa de Linux? y es seguramente bien conocido por muchos que Stallman tiene diferencias con Linus Torvalds, por que este ultimo ha introducido en el Kernel de Linux unos elementos que Stallman denomina blobs y que rompen la filosofía del todo o nada del SL, al haber introducido estos blobs que son elementos que no cumplen la filosofía del GPL entonces para Stallman y seguramente debería ser así para todos Linux no es realmente SL, no mientras se tenga esos elementos en el núcleo del sistema operativo. Entre el auditorio a la lejanía puedo percibir malas vibraciones y miradas despectivas, seguramente por que he dicho una verdad que no les gusta escuchar a muchos.

La polémica iniciada la he alimentado con preguntas dirigidas al auditorio, como:

  • Grandes empresas que dizque apoyan al SL, tales como Oracle, Sun (R.I.P.), IBM o Apple realmente lo apoyan?
  • Han visto Uds. mínimamente el código fuente de Oracle, MacOS, etc?
  • Realmente apoyan al SL o se valen de la confusión del termino para sacar productos Open Source y mimetizarlo con el Software Libre?
  • Java hasta hace poco realmente era SL?
  • Realmente se puede seguir el modelo de software libre?
  • Si Linux se permitió el hecho de no ser totalmente software libre por que se critica a otras empresas? por seguir un otro modelo?

A cada una de estas preguntas le vino una respuesta mía y la espera obviamente de una respuesta del auditorio, pero lamentablemente un silencio (con murmullos) es lo único que obtuve como respuesta.

Finalmente quise terminar la polémica con una pregunta por demás importante:

Software libre o Software Abierto?

Si se habla de Software Libre casi casi como un sinónimo de Software Abierto (Open Source) no es que realmente el modelo que todos están siguiendo es este ultimo mas que el modelo de SL? He explicado mi profundo respeto a las convicciones de Stallman a su filosofía y a su modo de vida siguiendo la misma, las personas que lo conozcan, no me dejaran mentir que es un individuo que inspira respeto por la firmeza con que defiende y vive sus convicciones a tal punto que muchos de los “placeres” de esta vida pueden pasarse por alto si van en contra de su pensamiento doctrinal. Repito Richard Stallman merece mi profundo respeto y es por mi breve conversación con el que he querido defender también la filosofía real del SL en esta conferencia y no dejar que unas cuantas personas por sus conveniencias confundan a otras con lo que realmente es el SL.

Finalizando he decidido pasar a hablar y a enfocarme en las iniciativas Open Source que lleva adelante Microsoft.

Microsoft & sus apuestas

No he podido animarme a decir que Microsoft ama el Open Source, como alguien en otros blogs y conferencias lo dijo, pero de que esta camino de una transformación, quizá no total, si lo esta y lo demuestran los siguientes puntos.

Microsoft ha dado, da y dará soporte a muchos proyectos de la comunidad Open Source, algunos de ellos SugarCRM, MySQL, etc.

Microsoft esta liberando, tímidamente para mi gusto, código fuente en alguno de sus productos, entre ellos el Framework .NET

Microsoft ha creado iniciativas y programas de licenciamiento que muestran un cambio de percepción. Entre estas están el programa Microsoft Shared Source que incluye licencias que efectivamente han sido aceptadas por la Free Software Foundation (FSF) y que han sido catalogadas como compatibles con GPL, la mas importante quizá: Microsoft Public License (Ms-PL), murmullos que me obligan a detener la explicación además que me pasan un papelito que dice que tengo 5 minutos mas, maldición no he regalado ninguna remera de las que traje. En contra quizá de lo que David me recomendó me atreví a hablar de otros programas de licenciamiento (aprovechando el pánico), entre ellos Microsoft Enterprise Source Licensing Program y Microsoft Windows Academic Program. Explique rápidamente las ventajas de ser alguien del gobierno y tomar estas licencias por temas de seguridad nacional y querer ver el código fuente, por ejemplo o el de ser una universidad y querer tener todos o bueno la mayoría de los productos MSFT con licencias incluso para docentes y administrativos

Explique brevemente las iniciativas Open Source que se ven en la comunidad Microsoft, en sitios como:

  • Channel 9
  • CodePlex
  • Microsoft Web Platform Installer
  • Microsoft Open Source Sites

Terminando la presentación

Para terminar di un esbozo de lo que es la tendencia del software en el mundo, con temas en los que prima la estandarización y la interoperabilidad mas que los formatos o protocolos propietarios.

La idea del Cloud Computing y el SaaS que esta emergiendo con fuerza y vigor. Un poco de dramatismo quizá introducido por el comentario de la reciente compra de Sun por Oracle (la comunidad MySQL seguramente tiene razones para temer y preocuparse). En todo este escenario planteo una pregunta rápida. Es realmente importante el Software Libre? Richard Stallman se niega a aceptar las ideas sobre el Cloud como validas y prefiere aquello que puede palpar localmente en su computadora que aquello que no sabe donde esta. Personalmente creo que ninguna posición radical prospera, que las ideas sobre el Cloud iran madurando poco a poco y se convertirán en algo cotidiano como el web mail, pero de que el software libre tendrá un impacto a mediano plazo es innegable y como lo dije antes en algún punto de la charla que me olvide mencionar. “El software libre genera una economía mas justa, quizá no beneficiosa o la mas beneficiosa para los que así lo quisieran, pero una economía mas justa al fin de cuentas”

En una siguiente entrada les contare algunas anécdotas, les daré la presentación en PPT, mostrare fotos y quien sabe, hasta me anime a regalar una remera a la distancia.

Saludos.

Microsoft & Software Libre – Preparación

Entre las varias cosas que estuve haciendo en estos días es preparar presentaciones y navegar por internet, una de estas presentaciones es a un evento al que fui invitado y que se lleva a cabo en mi ciudad este evento es el Foro Latinoamericano de Ingeniería de Sistemas e Informática (la pagina deja mucho que desear), donde están invitadas personalidades de diferentes partes de América latina en temas que son:

  • Sistemas Distribuidos.
  • Informática forense.
  • Movilidad y redes inalámbricas
  • Redes y comunicación de datos.
  • Software Libre.

este ultimo no esta demás decirlo, esta arraigado en mi ciudad como una fiebre demencial, que lleva a la perdición, todos por aquí se llenan la boca del software libre por aquí y del software libre por allá y obviamente quien dispara el mejor insulto para Microsoft y sus productos seguramente es el mas ""inteligente”.

Algo cansado de esta situación y aprovechando la invitación plantee un tema urticante, no solo para mi ciudad sino creo que para todo el mundo del software libre y es “Microsoft & Software Libre”, donde daré una posición “casi” oficial de lo que Microsoft opina de este tema, incluso Microsoft me envió unas remeras para regalar, no quiero adelantar mucho por ahora, solo decirles que ya tengo preparada mi presentacion y se que a mas de uno le saldra urticaria y capaz que le surja ganas de matarme, al menos con la mirada. Toda idea que me sirva para sostener mejor la postura de que Microsoft no es el monstruo que todos pintan, es bienvenida, el día de mi participación es el jueves 23. 09:00 AM GMT-4.

Un abrazo y a ver si me mandan sus buenas vibras para ese día…. que estaré rodeado de …….. no se como decirlo 😀

Herramientas para User Story & Product Backlog

Navegando encontré esta excelente lista de herramientas para gestionar historias de usuarios (user story) y los famosos Product Backlog, para los que usamos o pensamos usar alguna vez Scrum, lamentablemente existen muy pocas revisiones, por eso los animo a todos los que hacen uso de este proceso a aportar al sitio, conste no es mío, se que esta lista será la delicia de Bruno y Rodrigo entre otros.

A ver si me dan un feedback de cual seria la mas recomendable, a mi personalmente me gusta SCRINCH, pero demonios que me costo encontrar el mendigo link: http://sourceforge.net/project/showfiles.php?group_id=207353

Y obviamente que me encanta la de Conchango, Scrum for Team System, pero siempre es bueno curiosear alguna mas 🙂

Ya me olvidaba el link de la lista:

http://www.userstories.com/products

Problemas con <%# %> y <%= %>

Los problemas aparecen donde menos lo piensas, hasta en las cosas que parecen mas simples.

Actualmente estoy haciendo un pequeño modulo para DotNetNuke, yo programe en este framework cuando era allaaaa la version 2.x, ahora prácticamente estamos en la versión 5.x, recordar como hacerlo me llevo un poco de tiempo fundamentalmente por que cambiaron algunos temas estructurales, pero reitero, no es mi problema el cambio que sufrió la arquitectura de DNN, mas al contrario lo que me trajo problemas fue una cosilla que no tenia sentido.

Necesitaba crear un link entre dos controles ascx, cosa trivial cuando manejamos paginas, simplemente, la idea en DNN es crear la URL con una función llamada NavigateURL, de la siguiente manera:

DotNetNuke.Common.Globals.NavigateURL(PortalSettings.ActiveTab.TabID, key, "mid=" + ModuleId.ToString());

El parámetro key es el mas importante y esta definido en la definición de módulos, como se muestra en la captura a continuación.

image

Mi idea era crear links mediante un control Hyperlink, desechando inicialmente al buen LinkButton, pensando que la URL seria simple de armar, pero craso error cuando coloque esta linea:

<asp:HyperLink ID="HyperLink1" NavigateUrl='<%# DotNetNuke.Common.Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "NewQuestion", "mid=" +ModuleId.ToString()) %>’ runat="server">Click Here!</asp:HyperLink>

En la pagina que se generaba el href ni siquiera aparecía, entonces me percate que estaba utilizando los el método de binding <%#……%> con el mendigo # (numeral) entonces siguiendo mis instintos utilice <%= %>, en esta ocasión si aparecía el href, pero era como si concatenase la url con lo que se encontraba después del =.

Recurrí a varios foros con una frustración creciente, cuestionando inclusive mi certificación en desarrollo web y en casi todos ellos me hicieron percatar que no existe forma de hacer lo que quería, al menos no de manera declarativa (a no ser que alguien en esta comunidad diga lo contrario) lo que se me recomendó es colocar la asignación a la propiedad en un evento Load, así como lo muestro:

btnPropose.NavigateUrl = NavigateURL(PortalSettings.ActiveTab.TabID, "NewQuestion", "mid=" +ModuleId.ToString())

En fin…..

Capitulo de un libro de ASP.NET MVC gratuito

Cuando leí que Scott Guthrie puso un “libro tutorial” gratuito sobre el prontamente saliente ASP.NET MVC, me dirigí con avidez a descargarlo, pero cual fue mi decepción inicial al encontrarme que en realidad lo que se ofrecía es un capitulo escrito por Scott en un libro que comparte autoría con grandes tales como: Rob Corney, Scott Hanselman y Phil Haack.

Bueno en realidad no fue grande la decepción cuando lei cual era el contenido de ese capitulo, que inmediatamente esta en cola prioritaria para su lectura.

Links:

  1. http://www.amazon.com/gp/product/0470384611?ie=UTF8&tag=scoblo04-20&linkCode=xm2&camp=1789&creativeASIN=0470384611
  2. http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf