lunes, 3 de septiembre de 2012

Diferencias entre Java y C#


INTRODUCCIÓN
Desde los inicios de sus tiempos, siempre ha habido una fuerte discusión acerca de cuál de este par de lenguajes es mejor.
C# es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft, mientras que Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems, son las 2 caras de la moneda, aunque Java nació 6 años antes que C#, por allá en 1995, mientras que C# nació en el 2001, la sintaxis de los dos es bastante parecida, razón por la cual muchos dicen que C# es simplemente una copia de nuestro gran hermano Microsoft.
De cualquiera manera los dos son muy buenos lenguajes de programación, aunque Java tiene una pequeña ventaja ya que es multiplataforma, mientras que C# es únicamente para Windows.
Sintaxis
Ambas lenguas son consideradas "llave de" lenguas en la C / C + + familia. En general las sintaxis de las lenguas son muy similares. La sintaxis de la instrucción y el nivel de expresión es casi idéntica a la inspiración obvia de la C / C + + tradición. En el nivel de definición de tipo (clases e interfaces) existen algunas pequeñas diferencias. Java es explícito acerca de cómo extender las clases y la implementación de interfaces, mientras que C # infiere de la clase de tipos con una nueva interfaz de clase / deriva.
C # admite más características que Java, que hasta cierto punto se manifiesta también en la sintaxis que especifica palabras más y más reglas gramaticales que Java.
Sistema de Tipo
Los lenguajes que utilizan sistemas de tipos muy similares. Ambas lenguas son tipos estáticos con orientación a objetos basado en clases.
Las enumeraciones
Java
C #
Definición
En Java, tanto el tipo de enumeración y (opcionalmente) los valores de la enumeración individuales son clases de Java. Los únicos valores válidos son los que aparecen en la enumeración. El tipo de enumeración podrá declarar o reemplazar miembros (por ejemplo, una dedicada toString() método) que será heredado por los valores individuales enumerados. Los valores individuales enumerados pueden a su vez miembros de la anulación o incluso definir nuevos miembros sólo válidos para ese valor específico.
Las enumeraciones en C # se derivan implícitamente de la Enum de nuevo tipo que es un derivado de tipo de valor. El valor establecido de una enumeración de C # se define por el tipo subyacente que puede ser un tipo entero con o sin signo de los bits 8, 16, 32 o 64. La definición de enumeración define nombres para los valores enteros seleccionados. Por defecto, el nombre se le asigna el valor 0 (cero) y los siguientes nombres se asignan en incrementos de 1.Cualquier valor del tipo primitivo subyacente es un valor válido del tipo de enumeración, aunque una conversión explícita puede ser necesaria para asignarlo.
Combinando
Conjunto Java enumeración y colecciones de mapas proporcionan una funcionalidad de combinar varios valores de enumeración con un valor combinado. Estas colecciones especiales permite compilador de optimización para minimizar la sobrecarga producida por el uso de colecciones como el mecanismo de combinación.
C # admite mapas de bits enumeraciones donde un valor real puede ser una combinación bit a bit de los valores enumerados OR'ed juntos. Los métodos de formato y análisis implícitamente definidos por el tipo intentará utilizar estos valores.  

¿Qué tiene que C # Java no?
·         Los cierres;
·         Genéricos en tiempo de ejecución;
·         Genéricos de tipos primitivos (benchmarks de esta clasificación de una lista de un millón de enteros frente a un millón de objetos Integer han revelado un factor de 3 mejora);
·         Delegados;
·         Eventos;
·         LINQ;
·         Los métodos de extensión;
·         Propiedades de primera clase;
·         La sobrecarga de operadores;
·         Los indizadores;
·         Los tipos anónimos;
·         Los árboles de expresión;
·         Using bloques;
·         No comprueba excepciones. ¡Hurra!
·         Tipo Decimal;
·         En C #: el dynamic tipo, que es básicamente duck typing .

Y Java cuenta con:
·         Mucho, mucho mejor enumeraciones. C # enumeraciones son enteros con una raya pintada en el costado. Java enums tratar como objetos con comportamiento es muy superior (en mi humilde opinión);
·         Sé que esto va a ser polémico: IDEs mejor, sobre todo en el ámbito de la refactorización de código donde Visual Studio (sin ReSharper) todavía muy por detrás de IntelliJ, Eclipse y Netbeans, posiblemente, incluso;
·         Se ejecuta en Linux. Mono no obstante, Windows es, con mucho, la mayor red talón de Aquiles (en mi humilde opinión).;
·         Es gratis. Java 6 + Glassfish + Eclipse + Linux te cuesta ... nada. Ahora haga lo mismo con Net + IIS + VS + # + R de Windows Server. ...;
·         El paquete Java 5 utils concurrencia es todavía superior a cualquier otro tipo de herramientas de concurrencia que he visto en C # hasta la fecha, y
·         Proyectos de código abierto, pero significativamente mayor que el plomo está siendo rápidamente reducido. 

EN MI OPINIÓN PERSONAL, AL OBSERVAR LAS DISTINTAS CARACTERÍSTICAS QUE JAVA PRESENTE FRENTE A C#, PUEDO CONCLUIR QUE JAVA ES UN LENGUAJE DE PROGRAMACIÓN MUCHO MÁS COMPLEJO Y VERSÁTIL CON DIVERSAS FUNCIONES Y CARATERÍSTICAS. ESTO NO SIGNIFICA QUE C# SEA MALO O NO TENGA UN BUEN RENDIMIENTO. SIN EMBARGO, JAVA PRESENTA MEJORES PROPUESTAS QUE C#.

BIBLIOGRAFÍA:


http://translate.googleusercontent.com/translate_c?

10 comentarios:

  1. qué me recomiendas enseñar a un principiante de cero en programación?... zeap73@hotmail.com

    ResponderEliminar
  2. el hecho es que un amigo me comentó que ya dejara el VB.NET y migrara a otro lenguaje más usado hoy día, me recomendó Java pero no consigo material en español para trabajarlo: un editor y un buen libro. Saludos

    ResponderEliminar
    Respuestas
    1. hola para java uno de los mejores libros es: Como programar en Java - 7ma Edicion - P. J. Deitel.pdf, Deitel and deitel es un libro de los mas completos te expican a detalle y profundizando en ejercicios mas completos, si no es que es de los mejores y unicos para java. yo lo descarge en linea gratis en pdf

      Eliminar
  3. python, es muy facil de entender zeap73

    ResponderEliminar
  4. Hey! La traducción tiene serios problemas...

    ResponderEliminar
  5. El hecho de que Java tenga algunas cosas que C# no, no lo hace mejor, como tu mismo indicas C# tiene cosas que Java no. Y ya que c# permite tener un mejor rendimiento en Windows, siempre es una opción a tener en cuenta en Windows. Si quieres multiplataforma, ahí si Java es la opción.

    ResponderEliminar
  6. Este articulo es de 2012. Muchas cosas han cambiado desde entonces

    ResponderEliminar