Temas Propuestos

Diferencias
entre Java y C#

En este post, estableceremos algunas de las diferencias que podemos encontrar en los lenguajes de programación de Java y C#.
Empezaremos con los Sistema de Tipos:


Sistema de Tipos:
-En C# existen los tipos básicos, objetos, estructuras (inmutables), y a partir de la versión de la segunda versión, los ''Nullable'' que permiten tener valores nulos o desconocidos, que son repetidos en bases de datos. 
-En Java solo existen los tipos básicos y objetos

Declaración de arrays:
En Java se puede aceptar dos formas una con la notación; C/C++, y la otra qué es comúnmente aceptada. En cambio, en C# solo se puede aceptar ese tipo de declaración.

String:
Tanto en Java como en C# son inalterables, pero en C# no es necesario llamar al método ''equals'' para compararlas, ya que se puede utilizar == y !=, sin que compare las referencias.


Declaración de Constantes
-En java se utiliza ''final'' para declarar constantes, ya sea que el valor esté en tiempo de ejecución o en tiempo de compilación.
-En C# se utliza ''const'' para asignar constantes en tiempos de compilación y ''readonl'' para declaraciones en tiempo de ejecución.


En las instrucciones de control, también podemos notar ciertas diferencias:

Bucle for-each
En el lenguaje C# se utliza la palabra reservada ''foreach'' e ''in'' que repite una colección de objetos sin la necesidad de formar un índice de estos en forma explícita.
- En Java, no existía una función similar, hasta que se agregó en la versión 1.5 ''for'' que sirve de una manera casi igual.


Switch
-En Java sólo se admiten enteros, caracteres, y booleanos como condiciones en cada case.
-En C# pueden contar además con cadenas y números.


También se establece diferencias en las clases de objetos que cad uno contiene:

Clases de objetos:


Propiedades
Una propiedad es un campo especial que permite al programador controlar el acceso al mismo tanto en lectura como en escritura.
-C# implementa las propiedas como parte de la ''sintaxis de su lenguaje''.

- Java para tener la misma funcionalidad, recurre a patrones o convenciones de nombres.

Parámetros
En C# existen los parámetros out y ref que permiten modificar los valores de los argumentos proporcionados en una llamada a un método. También se puede hacer uso del parámetro ''params'', que recibe un número de argumentos que pueden modificarse.

Objetos
-En C# los tipos pueden pertenecer a alguna de las siguientes categorías: estructuras, clases de objetos,estructuras enumeradas y tipos delegados. 
-En Java, por otro lado, hay una clase padre llamada Object de la que heredan el resto, pero también existen los tipos básicos, que no son objetos y por tanto no cumplen esta propiedad.

Indizadores
-En C# se pueden crear los indizadores , lo que nos permite crear rápidamente clases a los objetos que se encuentran en un índice.
-En Java, simplemente no es posible realizar esta acción.

Eventos y delegados
Un evento es cualquier acontecimiento en la vida de un objeto que puede ser de interés para otros y un delegado es el tipo de un evento. 
-En Java no hay mecanismo general para manejar estos eventos pero se utilizan patrones de diseño para ciertas clases y por el cual el programador se puede beneficiar. Para que un objeto se pueda suscribir a un evento debe implementar cierta interfaz y acabar con la palabra Listener (p.e. MouseListener, KeyListener...). Además cuenta con un método empezado por add o remove y termina con Listener, que se usa para darse ''de baja o registrarse'' en un evento.
-En C# se usa event  para especificar automáticamente que un campo dentro de un suscriptor es un delegado que será usado durante un evento. Sus análogos usados en Java son += y -= , que sirven para suscribirse o viceversa.

Destructores
-En C# los destructores son el método que se ejecuta justo antes de destruir un objeto.
-En Java no existe este concepto, siendo lo más parecido el método finalize() que es llamado cuando se ejecuta el recolector de basura, y usado generalmente para liberar memoria y otros recursos usados por los objetos.

También encontramos diferencias en su extensión de clases, como en su:

Sintáxis de la herencia
-En C# se usa ":" tanto para herencia en clases como para implementar interfaces.
-Java, en cambio, utiliza las palabras reservadas extends e implements.

Herencia múltiple
En Java existe la herencia múltiple mientras que en C# no. 

Polimorfismo
En C# un método no se declara como virtual y es necesario poner ''override'' para sobreescribir un método abstracto.

Modificadores de interfaz
-En Java existe public y sin modificador (por defecto).
-En C# se introducen new, protected, internal y private.


Y por último, también se encuentra diferencias en su Biblioteca:

Clases y archivos
En Java un archivo sólo contiene a una clase, mientras que en C# un archivo puede contener varias clases.

Espacios de nombre
Un espacio de nombre es una manera de agrupar una colección de clases. 
-En Java, un espacio de nombres determina la disposición física de los ficheros fuente en la jerarquía de directorios. 
-En C# solo representa su estructura lógica.

Bibliografía:

http://www.lsi.us.es/docencia/get.php?id=2739
http://ar.answers.yahoo.com/question/index?qid=20100624201250AAGwUAJ
http://geektheplanet.net/5367/comparacion-entre-c-y-java.xhtml
http://zintegra.blogspot.com/2007/07/comparacin-de-java-y-c.html
http://atc.ugr.es/pedro/tutoriales/cursos/csharp/comparacion.htm 
 [también consta en OPINIONES]

No hay comentarios:

Publicar un comentario