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:
qué me recomiendas enseñar a un principiante de cero en programación?... zeap73@hotmail.com
ResponderEliminarjava
Eliminarel 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
ResponderEliminarhola 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
Eliminarpython, es muy facil de entender zeap73
ResponderEliminarHey! La traducción tiene serios problemas...
ResponderEliminarVS es gratis tambien
ResponderEliminarEl 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.
ResponderEliminarEste articulo es de 2012. Muchas cosas han cambiado desde entonces
ResponderEliminarC# ya es multiplataforma con .NET Core
ResponderEliminar