Introducción a la plataforma .NET y Mono

.NET vs Java

Por último, para terminar con esta introducción a la plataforma .NET, una comparación recurrente cuando se habla de .NET, ya sea hablando de la implementación de Microsoft, o de Mono. Muchos desarrolladores preguntan la necesidad de definir una nueva tecnología o incluso un nuevo lenguaje, cuando en definitiva Java realiza cosas similares.

A continuación se intenta explicar estas diferencias pero partiendo de la base de que ambas tecnologías son compatibles. .NET es una tecnología más en el mundo de desarrollo, que ofrece nuevas posibilidades a los desarrolladores, pero cuyo objetivo no es eliminar a Java, lo cual por otra parte, sería imposible debido a la gran cantidad de código escrito para esta plataforma.

Es importante tener en cuenta que .NET no es algo 100% novedoso, es básicamente una reunión de tecnologías muy interesantes, e integradas de forma eficaz, eficiente y elegante. La mayoría de estas tecnologías existían ya, al igual que también existían desde hacía mucho tiempo las tecnologías implementadas en Java.

Plataformas

Java .NET
Java funciona sobre un gran número de plataformas .NET funciona en Windows con la implementación de .NET de Microsoft y en Linux, FreeBSD y Windows con la implementación de Mono, aunque se prevé dar soporte a más plataformas
J2EE J2EE y .NET ofrecen básicamente las mismas funcionalidades, aunque de diferente forma.
Java no permite la interoperabilidad de múltiples lenguajes. Es posible compilar a bytecode desde múltiples lenguajes, pero no es posible alcanzar el nivel de interacción que se da en .NET .NET permite desarrollar en diferentes lenguajes y que el código generado sea completamente utilizable desde otras aplicaciones en otros lenguajes.
Java no permite la intercomunicación entre aplicaciones de una forma tan sencilla como en .NET .NET utiliza SOAP (XML+http) para comunicar aplicaciones. Esto permite comunicar aplicaciones hechas en cualquier tecnología o plataforma con otras.

C# vs Java

En lo que respecta a las diferencias entre estos lenguajes, hay que decir que prácticamente todo lo que se puede hacer en C# se puede hacer en Java. C# ofrece un conjunto de construcciones que permiten facilitar la vida al desarrollador, aunque estos constructores se pueden simular también en Java. Sin embargo la forma de hacer este tipo de cosas es más consistente y sencillo en C#, aunque con el «incoveniente» de tener que tener que conocer un número mayor de contructores que en Java.

Java utiliza una filosofía, de si algo se puede hacer con clases, no es necesario crear un constructor específico. Java mejoró en muchos aspectos C++, como por ejemplo con la eliminación de punteros, archivos header, o la existencia de una clase base común. Una característica de estas simplificaciones es que hacen el desarrollo más sencillo, pero el no utilizar algunos de los constructores que se ven a continuación, puede provocar que el desarrollo sea más complejo y el código menos claro.

Java 1.4 C# 1.0
Java no dispone de un constructor de propiedades. Los atributos de las clases se modifican mediante métodos set* y get*, aunque el lenguaje no obliga e ello. C# dispone de propiedades, un patrón muy utilizado sobretodo en entornos RAD.
Java no dispone de Indexers En C# se permite el manejo de una clase como si fuera un array.
Java no dispone de delegados Un delegado en .NET se puede ver como una manera segura de utilizar punteros a funciones. Un delegado puede contener también llamadas a más de un método, de forma que es muy sencillo implementar el patrón observer, el cual se utiliza con profusión en la programación basada en eventos por ejemplo.
Java no soporta eventos C# da soporte al uso directo de eventos. Aunque la utilización de eventos en la programación actual es algo muy habitual, no se ha realizado demasiado esfuerzo en simplificar su manejo. C# utiliza delegados y la palabra clave event para ofrecer un modo sencillo de gestionar eventos.
Java no soporta enumerados. Para ello se utilizan clases con constantes numéricas (final static). Esto puede ser una fuente de problemas en el sentido en que no se garantiza del todo la seguridad de tipos. C# soporta enumerados. Los enumerados permiten especificar grupos de elementos de una forma sencilla y segura, por ejemplo, los días de la semana.
Java no contempla el constructor foreach para recorrer colecciones. C# permite la utilización del constructor foreach para recorrer todas aquellas colecciones de elementos que cumplan un determinado interfaz.
Por defecto en Java todos los métodos son virtuales. En C# hay que indicar qué métodos se desea que sean virtuales con la palabra reservada virtual, e indicar los métodos sobrecargados con la palabra override.
Java tiene información de los datos en el código, pero a un nivel muy inferior al de C#. Utiliza /** */ y @tag para incluir información sobre el código, aunque esta información no se pasa al bytecode. C# utiliza atributos para cualificar métodos, atributos, clases… con el fin de pasar información al runtime y que esté disponible en tiempo de ejecución. Hay un conjunto de atributos disponibles, aunque se pueden crear específicos. Podemos utilizar atributos para especificar cómo se debe serializar una clase en XML, o qué evento de un componente es al que una herramienta RAD debería asociar una acción por defecto, al hacer el usuario doble clic en el componente.
En Java una aplicación se divide en paquetes, cuya estructura jerárquica debe coincidir con la estructura de carpetas que forman el proyecto. En C# el código se organiza en archivos, namespaces y assemblies. Los namespaces permiten agrupar clases de forma que se eviten conflictos de nombres. Los assemblies son los .dll o .exe que se generan al compilar un conjunto de archivos. Un assembly puede contener un número indeterminado de namespaces, y un namespace puede estar repartido entre varios assemblies. Los archivos que forman un assembly o un namespace, no tienen ninguna limitación en cuanto a su ubicación en carpetas, ya que los namespaces en un concepto únicamente lógico.
Java no permite trabajar con punteros C# permite trabajar con punteros. Para ello es necesario marcar la zona dónde se manejan dentro de una construcción unsafe, y compilar el código con el flag unsafe.

Páginas: 1 2 3 4 5 6

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

60 Respuestas para “Introducción a la plataforma .NET y Mono”

  1. hola Patxi sabes me piden que haga un trabajo todos sobre mono ventajas, y modos de intalarse en diversas plataformas kisiera saber si tienes algunos documentos ke me puedan ayudar a realizarlo poara poder hacer un tutorial te lo agradeceria muchisimo saludos desde tabasco.

  2. Hola:
    me parece muy interesante el articulo. Yo tambien estoy iniciandome en este mundo y como deben saber tengo muchas dudas, por el momento quisiera que trataran de ayudarme con esta:

    si voy a migrar un sitio donde los .aspx estan en una carpeta y los .ascx estan en otra y asi, como resolver los problemas que da mod_mono con los caminos ?

    les agradeceria mucho que alguien me ayudara o me diera alguna idea.Cualquier comentario es valido.
    Si no es mucha molestia quisiera que me escribieran a bricelno@gmail.com

    Muchas gracias a todos

  3. Hola.. to2
    Muy interesante articulo ademas de completo.. me acabo de solucionar dudas de concepto que tenia..

    Una pregunta: La plataforma .net es solo para redes ?.. es decir soy programador y estoy buscando alternativas a VisualBasic, Vfox, las tipicas de siempre.. me encontre son SharpDevelop. que dice que permite programa en C# pero quiero hacer aplicativos normales ,, esta herramienta de programacion me sirve o la orientacion es diferente…

  4. Hola Jose, en efecto, con .NET puedes desarrollar cualquier tipo de aplicativo, desde aplicaciones de escritorio hasta aplicaciones web empresariales. Para ello puedes utilizar multitud de entornos de desarrollo, como Visual Studio, SharpDevelop, o incluso simplemente el editor de notas y el compilador del SDK. Además también puedes programar en diferentes lenguajes, como C#, Visual Basic, Delphi, etc…

  5. Hola Mi Nombre es Rafael.

    He leido algo sobre el proyecto mono y pienso que el proyecto es muy interesante, y precisamente por esto quiero ver si puedo migrar una aplicacion web desarrollada en VB .net a CENTOS 5, mi aplicacion consta con web services y conexiones a bases de datos SQL Server 2005, ya baje los programas de instalacion de MONO para Windows y tambien para CENTOS 5, pero el problema esque no se como instalar la parte de CENTOS 5, si alguien me puediese decir que tan bueno es el proyecto en este momento para intenetar migrar mi aplicacion para que funcione sobre Linux se los agradeceria.

    Aparte no se si alguien tenga documentacion acerca de como instalar mono sobre CENTOS 5 paso a paso y como probar mi aplicacion, se los agradeceria infinitamente.

    Saludos y felicidades por esta pagina.

  6. Disculpa, pero podrias ayudarme para instalar mono sobre fedra core 8?, recien estoy empezando con el desarrollo sobre linux, porque antes utilice SharpDevelop pero para windows y ahora quiero intentarlo con linux, porfaa

  7. Hola compañeros de eslomas.com:
    Quisiera saber dentro de la plataforma .net, refiriéndome no solo a .net Framework sino también a el paquete de Visual Studio.net y todo lo que compone la tecnología .net.,por donde inicio mi capacitación para comprenderla mejor y poder aplicarla adecuadamente.

    Gracias

  8. ay no c que es eso ocupo q me digan es d tarea tengo examen porfas alludenme plis jejje bye

  9. hola quisiera saber si MONO es un framewor o es una plataforma

Trackbacks/Pingbacks

  1. Links Interesantes (IV) : alfredo hernández - 09. Oct, 2008

    […] Mono 2.0: No es un standar nuevo, para aquellos que no tienen idea de que es mono, es una implementacion del Framework .NET desarrollada por Miguel de Icaza y unos cuantos mas, si quieres mas informacion en este enlace lo obtendrás. […]