Microsoft confía en que C# va a ser el lenguaje de programación que va a destronar a Java (de Sun) en aplicaciones vía internet.
Para lograr que se termine la percepción de entornos propietarios que persigue a MS, están buscando la aprobación de grupos a nivel mundial; ya lograron la venia de ECMA y ahora van por la ISO.
Middleware
Para que se entienda bien; estos lenguajes de programación permiten hacer programas que corran en cualquier computadora; sin importar el sistema operativo que posea.
Esto se logra haciendo que exista un medio donde "correr" esos programas; en Java es el Java Virtual Machine y en C# es el CLI; esto permite que un desarrollador haga programas sin importar el SO que posean las computadoras y no creo que haga falta aclarar que es un riesgo para Microsoft y su Windows.
Y eso es lo que llevó a MS a modificar el JVM de Sun en un momento; terminar en juicio que terminño perdiendo y ahora creando C# como el lenguaje multi-plataforma que es una pieza clave de su estrategia .NET.
Credibilidad
Lo que busca MS con estas certificaciones, es una prueba de credibilidad ante la industria. Demostrarles no solo a los programadores; sino a los Administradores de Sistemas y responsables de las empresas; que este lenguaje va a ser Standar y que sus desarrollos van a correr en todas las plataformas, permitiendoles crear aplicaciones que tengan un mercado mucho más amplio que los de las plataformas propietarias.
Esta credibilidad la buscan a través de ECMA; que es la ex Asociación de Fabricantes Europeos de Computadoras; y pese a no ser hoy la entidad más reconocida a nivel certificaciones es la misma que llevó a MS a juicio contra los Antimonopolios de la Unión Europea.
Ahora buscan la aprobación de ISO, que es mucho más útil y respetada; pero no creo que esto implique una ventaja real para el producto.
Ventajas Verdaderas
La Economía de Redes; indica que se forman círculos virtuosos cuando existen feedback y retroalimentación entre una comunidad de usuarios; a mayor usuarios mayores desarrolladores, que generarán más y mejores programas para cada vez más usuarios.
Hoy en día Java tiene 2,6 millones de desarrolladores certificados y con conocimiento del lenguaje. Está presente en todos los browsers de Internet; haciendo que en Internet sea una especie de Lingua-franca.
Pero Microsoft no lo incluye más en Windows; ahora desde el Service Pack 1 de Windows XP incluye CLI (las librerías necesarias para hacer funcionar C#) y el .NET framwork.
Es la misma estrategia que se usó para dejar de lado al Netscape Navigator y para introducir el Messenger. Pese a ser una estrategia dura (strong-arm tactics) no sería lógico obligarlos a dar productos que no son propios.
Esa y no otra es su principal ventaja; si le sumamos el cash disponible para hacer modificaciones y seguir mejorando el lenguaje; nos damos cuenta que Java va a tener un gran enemigo en poco tiempo y que MS no va a resignar su monopolio de Sistemas Operativos en mucho tiempo.
De la parte financiera/marketinera no puedo decirte nada. Con respecto al entorno de programacion, la idea de C# esta buena, aunque el producto parece un hibrido en beta 1.
Es una mezcla de MFC (que estaba implementado sobre C) con la “facilidad” de VB.
Eso si, detesto que cada vez sea mas facil programar.
Vos pensás que cualquiera se va a poner a programar porque eso sea “más fácil”?
No olvides la facilidad de uso del frontpage/dreamweaver/flash y lo que eso significa para internet a la hora de la práctica.
Con la programación pasa igual. Me imagino utilidades “fáciles” y gente haciendo programas que te inunden la memoria, te cuelguen la máquina, etc.
Lo facil no existe…
Bue, no te enojes.
Solamente pienso en que en 1987 cuando programaba la commodore haciendo “poke 1024,1” sin saber que significaba no existia un wizard que te haga el 30% del codigo.
Hoy en dia con las herramientas de MS basta con hacer click en dos o tres lugares para tener un programa que funcione.
Hoy en dia es mas facil hacer programitas (o no viste como crecieron los programadores VB?) que antes.
Yo quiero si alguno puede, que me aclaren esta duda..
hace poco fui a un seminario sobre tecnologias .net que ofrecio la gente de intel, y un tipo (billy) de microsoft nos explico (vendio) todo lo bueno de .net y xml..
una de las cosas que me sorprendio fue que un programador podia crear aplicaciones para internet en cualquier lenguaje (con la ayuda de xml + herramientas de microsoft)…
Lo que no entiendo es porque primero te ofrecen un producto por el cual podes programar en cualquier lenguaje, sea el que sea…y ahora quieren llevar todo a C#
espero haber sido claro..
Mariano,
Permitime corregirte algunos “bugs” :)
Me parece que estás confundiendo algunos conceptos. En general, cuando te referís al CLI, te estás queriendo referir al .NET Framework (que viene a ser el paralelo a la Java VM), mientras que el CLI es la tecnología que permite que el .NET Framework pueda ejecutar aplicaciones desarrolladas en cualquiera de los lenguajes soportados (C++.NET, VB.NET, C#, J#, F#, Python.NET, Eiffel.NET, etc.)
Dentro de estos lenguajes, C# no es ni mas ni menos, es simplemente un lenguaje más. Sucede, que Microsoft le está dando más empuje a C# (marketing, Tursini) que a los otros lenguajes de la flia.
Por qué? Por un lado, C# suma la versatilidad de Java, la potencia de C++ y la facilidad de aprendizaje de Visual Basic (aunque suene a folleto barato). Por otro lado, C# es uno de los lenguajes que Microsoft usa internamente (junto con C++). De hecho gran parte del Visual Studio.NET está programada en C#. Y por último, porque es uno de los lenguajes más cool que conocí en mi vida! (aunque esto ya es muy personal) :)
Osvaldo,
Microsoft no te dice que tires todo y programes en C#, ellos “recomiendan” programar en C#, pero eso es sólo marketing, no quiere decir PARA NADA que vayan a tirar los demás lenguajes soportados por el Framework. Todo lo contrario, cada día se agregan más lenguajes para que cada uno programe en lo que más le guste.
El único lenguaje MS que promete irse al tacho es FoxPro (ya que está afuera del .NET Framework)
gracias por el dato matias.. :)
Matu,
no te pongas nervioso cada vez que escribo de MS ;)
Yo resumí que es CLI de esta manera:
“Esto se logra haciendo que exista un medio donde “correr” esos programas; en Java es el Java Virtual Machine y en C# es el CLI; esto permite que un desarrollador haga programas sin importar el SO que posean las computadoras y no creo que haga falta aclarar que es un riesgo para Microsoft y su Windows.”
Equiparando CLI a JVM, porque en realidad CLI es la infraestructura de lenguaje que DEFINE los diferentes tipos de lenguaje de programacion y las operaciones soportadas en el runtime engine de .NET
Ahora vos decis:
“Me parece que estás confundiendo algunos conceptos. En general, cuando te referís al CLI, te estás queriendo referir al .NET Framework (que viene a ser el paralelo a la Java VM), mientras que el CLI es la tecnología que permite que el .NET Framework pueda ejecutar aplicaciones desarrolladas en cualquiera de los lenguajes soportados (C++.NET, VB.NET, C#, J#, F#, Python.NET, Eiffel.NET, etc.)”
Como ves, estamos diciendo lo mismo. PERO el problema surge cuando equiparás el .NET Framework como el paralelo a la Java VM.
Desde mi punto de vista, eso es tirar abajo TODO el framework, porque el análogo de JVM es CLI. (Define lenguajes que son soportados en el “aislamiento” logrado por el middleware)
Mientras que .NET Framework es MUCHO más amplio e incluye demasiadas cosas más (qeu seguro vos conocés más).
P.D.: Le agradezco a Fibertel el haberme dejado sin conexión toda la noche.
Un link muy bueno a informacion muy buena sobre CLI (Rotor):
Shared Source CLI Provides Source Code for a FreeBSD Implementation of .NET
Igual el CLI es un runtime, mientras que el framework incluye clases, ASP.NET, ADO.NET y la mar en coche.(Definición técnica de “pfffffff tiene de todo” ;)
Sería genial hacer una especie de categoría explicando .NET que fue uno de los primeros temas de DÜ.
Si se logra… se comen el mundo.. porque no hay quien les pueda competir.
Vamos por partes:
– CLI = Common Language Infrastructure, mientras que el runtime es el CLR = Common Language Runtime. O sea, CLI es el concepto, CLR es la práctica.
Para ver por qué Java VM y el .NET Framework están en un mismo nivel, voy a explicar primero como funciona el .NET Framework (no da para hacer una monografía así que voy a ser lo breve y voy tomarme una licencia poética para no caer en explicar demasiados detalles):
Los compiladores de los lenguajes que soportan la CLI, compilan (valga la redundancia) el código fuente a un lenguaje llamado MSIL (Microsoft Intermediate Language). Por ejemplo, el compilador de C# (csc), genera MSIL a partir del código fuente de C#. El de VB.NET hace lo mismo con el código VB.NET, así como el de COBOL.NET, el de J#, etc etc etc…. Esto no es literalmente así, pero sirve para lo que quiero explicar.
El objeto compilado (o en realidad pre-compilado), se porta a la máquina donde será instalado (puede ser la misma máquina donde fue pre-compilado, u otra máquina). Esta tiene cómo requisito imperativo tener corriendo el .NET Framework.
La primera vez que se ejecute la aplicación, el .NET Framework la terminará de compilar (no olvidemos que estaba pre-compilada) desde el MSIL al código binario que entiende el micro procesador y el sistema operativo en el que está corriendo ahora.
Esto permite que una misma aplicación se pueda programar en cualquier lenguaje que soporte la CLI, ya que todo se pre-compila al mismo código (MSIL) que es el que entiende el CLR.
Mientras que el .NET Framework habilita a estas aplicaciones a correr en cualquier máquina que tenga el .NET Framework instalado. El .NET Framework ya está disponible para Windows 98, Me, NT4, 2000, XP, PocketPC 2002, Tablet PC y SmartPhones. Existe una versión free para Linux hecha por Ximian llamada Mono y hay una versión para FreeBSD. Hay proyectos para Mac (Mac OS X es un OpenBSD “toqueteado”), inclusive para mainframes, y algunos Unix.
Entonces, en qué se parece esto a Java?… Muy simple, el .NET Framework viene a ser el paralelo a la Java VM. Permite que la misma aplicación corra en distinto hardware y OS, ya que está corriendo sobre una capa de abstracción. ¿En qué se diferencian? uf, en mil cosas, pero principalmente, en que Java es 1 sólo lenguaje, mientras que, gracias al CLR, yo puedo escribir aplicaciones .NET en cualquier lenguaje soportado y voy a elegir el que más me plazca (C#, VB.NET, C++, J#, COBOL.NET, etc…).
Se entendió?… cualquier duda, escriban ;)
Se entiende, pero estás reduciendolo, porque no incluís:
-ASP.NET (Web Forms, Services, MIT)
-Windows Forms
-ADO.NET
Ni los base class Libraries o sea, (es medio irónico que yo termine siendo un defensor de MS, pero en este caso el concepto es admirable man) reducís el Framework al nivel de “es la capa de abstracción” que permite que sea multiplataforma.
En realidad si fuese por eso la isolación se logra con el CLR y listo; los pasos anteriores serían simplemente irrelevantes.
jajajaj… es cierto fui muy breve.
Si te interesa el tema, hay un artículo muy bueno comparando J2EE (Java 2 Enterprise Edition) con Microsoft .NET, escrito por Roger Sessions, un ex-IBM que actualmente trabaja como consultor y cuenta entre sus clientes a Sun y Microsoft. Un tipo muy capo técnicamente.
Java 2 Enterprise Edition (J2EE) versus The .NET Platform; Two Visions
Voy a ver si posteo algo al respecto en ThinkingIT, y seguimos el debate en casa :)
Esto es muy simple: no hay que darle bola a las empresas, tanto Java, C++, y C# tienen un lexico y sintaxis similar, por lo tanto no es en vano saber programar bien en los 3, que tienen en comun el pilar de la POO, que en definitiva es lo mas importante, quisiera ver a un especialista en VB6 crear clases derivadas y etc…… o por lo menos crear un tipo de dato, lo cierto es que hay profesionales ‘OOP’ y chamuyeros ‘VB’
MS-BILLDOWS llar’s
Supongo que se aplica en ambos sentidos eso.. o sea, un experto en Java o C++ quizas no puede hacer algo de uno de VB ;)
Igual.. esta bien eso de dejar de lado las empresas y focalizarse en lenguajes.
Por si alguien no sabe foxpro no va a salir, ya que esta en desarrollo un nuevo foxpro.net
lo que si microsoft se lamente y se lamentara toda la vidas es VB script, que me pàrece que a eso si lo van a matar o talvez ya lo mataron
Me da algo de miedo o vergüenza pensar que se este desarrollando el proyecto mono (o como se llame )el proyecto de .net en Linux, ya que si entra micro$oft a la tarima en linux…. tengan miedo porque puede hacer que luego linux pierda terreno y se acabo la esperanza de un mundo con software más libre……
La única forma que en una empresa de verdad se implemente mono es que Bill Win Gates le pague al dueño de la empresa para que lo usen…..
No creo que se necesario que el propio Bill Gates tenga que hacer algo, he trabajado en algunas multinacionales fuertes, y como es lógico tienen sistemas corriendo con Sun Solarix, algunos con Linux, otros con Windows Server, en estos casos JAVA sirve perfectamente de puente entre todos, sin embargo es innegable que las herramientas microsoft tienen un potencial fuerte y claro el proyecto MONO es usado para ejecutar aplicaciones C# en Linux, Unix, sobre todo por la libertad de lenguaje que presta .net framework que no ocurre con JAVA los desarrolladores JAVA solo pueden usar JAVA, los desarrolladores Microsoft pueden usar muchas herramientas.