Comparativa plataformas Java y .NET
vie
27
nov
2009
A continuación les presento una comparación sobre aspectos generales de las plataformas Java y .NET, realizaré un paralelo entre las características consideradas fundamentales. La idea principal del post es mostrar las potencialidades básicas de cada una de estas plataformas, visualizando ventajas y desventajas desde una perspectiva exclusivamente técnica sin generar conclusiones que puedan evidenciar preferencias de algún tipo. Cabe señalar que, este trabajo fue realizado como uno de los tantos entregados para el Máster en Ingeniería Web.
Reseña histórica
Plataforma .NET
La plataforma .NET nace el año 2000 como un proyecto de Microsoft Corp. Con la idea de crear una plataforma de desarrollo de software que permitiera unificar todos los productos Microsoft, desde las herramientas de desarrollo hasta el sistema operativo. La idea central de .NET en términos tecnológicos es generar software independiente de la plataforma de hardware y del sistema operativo, poniendo especial énfasis en el desarrollo de aplicaciones distribuidas sobre redes y la interoperabilidad de lenguajes, cada uno asociado a diferentes dominios de resolución de problemas.
La primera versión estable de .NET (1.0 RTM) fue lanzada el 5 de enero de 2002 y la última versión estable es la 3.5.30729.1 del 11 de Agosto de 2008.
Plataforma Java
La plataforma Java nace en el año 1991 como un proyecto de Sun Microsystem bajo la dirección de James Golsing llamado The Green Project, orientado a ser un lenguaje para ser utilizado en primera instancia en sintonizadores de televisión (set-top-box). El nombre del lenguaje cambió desde Oak a Green y finalmente a Java, esto dado que los nombres anteriores ya eran marcas registradas.
El objetivo principal de la plataforma era lograr la implementación de un entorno de ejecución para diferentes sistemas operativos en donde podría correr un mismo binario, agregando que los programas fueran escritos con una sintaxis similar a la de C++.
El primer lanzamiento público del kit de desarrollo de Java (Java Development Kit 1.0) fue el 23 de Enero de 1996, seguido de 8 versiones hasta la fecha, siendo la más actual la versión 1.6.0_16-b01 liberada el 31 de agosto de 2009.
Características generales
Característica |
Plataforma .NET |
Plataforma Java |
Compañía propietaria |
Microsoft Corp. |
Sun Microsystems |
Versión estable |
3.5.30729.1 (11-Agosto-2008) |
1.6.0_16-b01 (31 de agosto de 2009) |
Lenguajes de programación compatibles |
C#, Visual Basic .NET, ASP.NET, Turbo Delphi for .NET, C++, C, Java, J#, Perl, Pitón, Fortran, Cobol.NET, ADA, APL, Haskell, Javascript, Lisp, Prolog, Smalltalk y muchos otros, que deben cumplir con las reglas de CLS (Common Language Specification) |
Java |
Paradigma de programación |
Orientado a objetos, Declarativo, funcional |
Orientado a objetos de forma no estricta, no permite herencia múltiple ni sobrecarga de operadores |
Premisas de la tecnología |
Disponer de la tecnología apropiada para un problema específico. Distribuir aplicaciones en forma de servicios. Comunicar y combinar aplicaciones independiente del modelo de programación, plataforma y lenguaje. Integrar todos los productos Microsoft, desde herramientas de desarrollo al sistema operativo. |
“Write Once, Run Anyware” Escríbelo una vez, ejecútalo donde sea. Permitir su la ejecución de un mismo programa compilado en múltiples sistemas operativos. Utilizar POO Incluir soporte para trabajo en red. Trabajar de forma segura en sistemas remotos. Desarrollar aplicaciones distribuidas. |
Entorno de ejecución |
.NET Framework (Entorno común de ejecución para lenguajes - Common Language Runtime CLR, Base Class Library BCL, Common Language Specification CLS ) |
Java Runtime Environment - JRE (Máquina virtual de Java – Java Virtual Machine JVM y Biblioteca de clases API) |
Implementaciones de la máquina abstracta |
CLR, MONO, DotGNU Portable .NET, SSCLI |
JVM, KVM |
Formato del código compilado |
Compilador JIT del CLR ejecuta código IL (MSIL) (bytecode) |
Compilador JIT de la JVM ejecuta .class, código intermedio (bytecode) |
Compilador JIT (Just In Time) |
Sí |
Sí |
Kits de desarrollo |
Distribuidos en múltiples lenguajes de programación, permite crear cualquier tipo de aplicación. |
J2SE (aplicaciones de escritorio), J2EE (desarrollo empresarial), J2ME (dispositivos con recursos limitados ) |
Entornos de desarrollo |
Visual Studio .NET |
Eclipse, Netbeans, Visual Studio .NET y muchos otros |
Licenciamiento |
Comercial y Educacional |
GNU |
Implementaciones más relevantes en el API |
|
|
Acceso a características de bajo nivel |
Directamente mediante código no administrado |
Utilizando JNI (Java Native Interface) |
Posee un estándar de desarrollo para componentes |
No, solo ofrece recomendaciones |
Posee un estándar de desarrollo para componentes de acceso a datos y reglas de negocio. |
Tipos de estructuras que es posible crear |
Clases, interfaces, struct y enum |
Clases, interfaces, enum |
Niveles de protección |
Public, private, internal, protected. |
Public, private, protected y package |
Elementos que se pueden definir dentro de una clase |
Atributos, métodos, clases internas, propiedades, eventos y delegates |
Atributos, métodos y clases internas |
Herencia |
No hay herencia múltiple de implementación, solo a través de interfaces. |
No hay herencia múltiple de implementación, solo a través de interfaces. |
Polimorfismo |
Es posible redefinir métodos, excepto cuando se usa la palabra sealed. |
Es posible redefinir métodos, excepto cuando se usa la palabra final. |
Sobrecarga |
Se permite sobrecargar operadores. |
No se permite la sobrecarga de operadores. |
Encapsulamiento de atributos |
Es posible acceder a los atributos a través de propiedades definidas mediante los métodos set y get. |
Se pueden implementar los métodos set y get para el acceso y escritura de los atributos. |
Paquetes y espacios de nombre |
Se utilizan los espacios de nombre namespaces. |
Se utilizan paquetes packages. |
Paso de parámetros a un método |
Se pueden pasar parámetros por valor, referencia y número de parámetros variable. |
Se pueden pasar parámetros solo por valor |
Ventajas y desventajas de cada plataforma
|
Ventajas |
Desventajas |
.NET |
Entorno de desarrollo altamente productivo Posibilidad de utilización de una amplia gama de lenguajes de programación C# es un lenguaje muy completo y con excelentes características |
Entorno de desarrollo no disponible en otras plataformas Implementaciones del .NET framework aun no son totalmente suficientes |
Java |
Tecnología altamente madura Muchos entornos de desarrollo alternativos Existe una implementación de la JRE para casi cualquier plataforma |
Permite solo la utilización de Java como lenguaje de programación No ofrece un entorno de desarrollo altamente productivo |
Documentos consultados
- The Java Language Specification, Second Edition, Addison-Wesley, ISBN 0-201-31008-2
- MSDN Library, Visual Studio 2008
- Presentaciones sobre plataformas POO, Máster en Ingeniería Web
- es.wikipedia.org/wiki/Microsoft_.NET
- es.wikipedia.org/wiki/Plataforma_Java
- es.wikipedia.org/wiki/Java_%28Sun%29
- www.sun.com/software/opensource/java/
- Archivos:


