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. | “Write Once, Run Anyware” |
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 | Entorno de desarrollo no disponible en otras plataformas |
Java | Tecnología altamente madura | Permite solo la utilización de Java como lenguaje de programación |
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/





