lunes, 3 de septiembre de 2012

comparacion


Comparando Java y C#




Las sintaxis son extremadamente muy parecidas, es por eso que para un programador java, que para un programador C# es muy facil comenzar a desarrollarse en el otro lenguaje que no manejen.

Tienen varias similitudes. Ambos utilizan garbage collector que es el encargado de liberar memoria entre otras similitudes como que ambos son orientados a objetos. Ademas de estas similitudes tambien tienen pequeñas diferencias como que Java utiliza bytecode y C# utiliza unicode para almacenar caracteres en 16 bits.

Para concluir ambos lenguajes son utiles, buenos y parecidos ambos tienen ventajas y facilidades para el programador.

caracteristicas de C#

C#

características de c


C# es un lenguaje de programación orientado a objetos y diseñado para la infraestructura de lenguaje común. 
Contiene 2 categorías generales de tipos de datos integrados: tipos de valor y tipos de referencia. El término tipo de valor indica que esos tipos contienen directamente sus valores.  


Sencillez de uso
 C# elimina muchos elementos añadidos por otros lenguajes y que facilitan su uso y compresión .Es por ello que se dice que C# es autocontenido.

Compatible
Para facilitar la migración de programadores de C++ o Java a C#, nosólo se mantiene una sintaxis muy similar a la de los dos anterioreslenguajes, sino que el CLR también ofrece la posiblidad de acceder acódigo nativo escrito como funciones sueltas no orientadas a objetos,tales como las DLLs de la API de Win32.


Modernidad
 C# un lenguaje de última generación, implementa elementos que se ha demostrado a lo largo del tiempo que son muy útiles para el programador, como tipos decimales o booleanos, un tipo básico string
así como una instrución que permita recorrer colecciones con facilidad. Estos elementos hay que simularlos en otros lenguajes como C++ o Java.


Orientado a objetos
C#  es orientado a objetos. C# no permite la inclusión de funciones ni variables globales que no estén incluidos en una definición de tipos, por lo que la orientación a objetos es más pura y clara que en otros lenguajes. C# soporta todas las características del paradigma de la programación orientada a objetos, como son la encapsulación, laherencia y el polimorfismo

Recolección de basura
 Como ya se comentó, todo lenguaje incluido en la plataforma .NET tienea su disposición el recolector de basura del CLR. Esto implica que no esnecesario incluir instrucciones de destrucción de objetos en el lenguaje.

Extensión de los operadores básicos
 Para hacer mucho mas facil la legibilidad de código y poder que los nuevos tipos de datos que se definan a través de las estructuras estén al mismo nivel que los elementos predefinidos en el lenguaje,a diferencia de Java, C# permite redefinir el significado de la mayoría de los operadores cuando se apliquen adiferentes tipps de objetos.

Seguridad de tipos
 C# incluye formas de control de acceso a tipos de datos, lo que garantiza que no se produzcan errores difíciles de detectar como un acceso a memoria de ningún objeto. Para ello, el lenguaje provee de una serie de normas de sintaxis, como no realizar conversiones entre tipos que no sean compatibles ,no se pueden usar variables no inicializadas previamente, y en el acceso atablas se hace una comprobación de rangos para que no se excedan ninguno de los índices de la misma. 


Instrucciones seguras
Para evitar errores comunes como se producían en otros lenguajes, se  impucieron una serie de restricciones en el uso de instrucciones de control más comunes.

Unificación de tipos
En C# todos los tipos derivan de una superclase común llamada System. Object , por lo que automáticamente heredarán todos los miembros definidos en esta clase. Es decir, son objetos. A diferencia de Java, en C# esta característica también se aplica para los tipos básicos.

Extensión de los operadores básicos
 Para hacer mucho mas facil la legibilidad de código y poder que los nuevos tipos de datos que se definan a través de las estructuras estén al mismo nivel que los elementos predefinidos en el lenguaje,a diferencia de Java, C# permite redefinir el significado de la mayoría de los operadores (incluidos el de la conversión) cuando se apliquen adiferentes tipps de objetos.

Eficiente
En C#, todo el código incluye numerosas restricciones para garantizar su seguridad, no permitiendo el uso de punteros. Existen modificadores para saltarse esta restricción, pudiendo manipular objetos a través de punteros. Para ello basta identificar regiones de código con el identificador unsafe, y podrán usarse en ellas punteros de forma similar a como se hace en C++.

bibliografia:
http://es.scribd.com/doc/7411856/Caracteristicas-de-C

caracteristicas de Java



Java

Características del lenguaje Java


Java es un lenguaje de programación de alto nivel orientado a objetos, desarrollado por James Gosling en 1995

Lenguaje simple

Java tiene una curva de aprendizaje muy rápida.   Java es más sencillo, ya que se han eliminado ciertas características, como los punteros este es muy fácil aprender Java. Los programadores experimentados en C++ tranqilamente pueden comezar a utilizar java , de una forma facil.

Orientado a objetos

Java fue diseñado como un lenguaje de programacion orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas sus datos y las funciones que manipulan esos datos.

Distribuido

Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas.

Interpretado y compilado a la vez

Java es compilado, en la medida en que su código fuente se transforma en una especie de código máquina, los bytecodes, semejantes a las instrucciones de ensamblador.
Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el sistema de ejecución en tiempo real (run-time).

Robusto

Java fue diseñado para crear software altamente fiable, para ello proporciona numerosas comprobaciones en compilación y en tiempo de ejecución. Sus características de memoria liberan a los programadores de muchos errores , ya que se ha prescindido por completo los punteros, y la recolección de basura elimina la necesidad de liberación explícita de memoria.

Seguro 

Dada la naturaleza distribuida de Java, donde las applets se bajan desde cualquier punto de la Red, la seguridad se impuso como una necesidad de vital importancia. ya que nadie quiere que al ejecutar en su ordenador programas con acceso total a su sistema, procedentes de fuentes desconocidas. Así que se implementaron barreras de seguridad en el lenguaje y en el sistema de ejecución en tiempo real.

Indiferente a la arquitectura

Java está diseñado para soportar aplicaciones que serán ejecutadas en los más variados entornos de red, desde Unix a Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas distintas y con sistemas operativos diversos.El compilador de Java genera bytecodes: un formato intermedio indiferente a la arquitectura, diseñado para transportar el código eficientemente a múltiples plataformas hardware y software.
 El resto de problemas los soluciona el intérprete de Java.

Portable

La indiferencia a la arquitectura representa sólo una parte de su portabilidad. Además, Java especifica los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores aritméticos, de manera que los programas son iguales en todas las plataformas. 
Estas dos últimas características se conocen como la Máquina Virtual Java (JVM).


Multihebra

Java soporta sincronización de múltiples hilos de ejecución (multithreading) a nivel de lenguaje, especialmente útiles en la creación de aplicaciones de red distribuidas. 

Dinámico

El lenguaje Java y su sistema de ejecución en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos módulos de código bajo demanda, procedente de fuentes muy variadas, incluso desde la Red.

Produce applets

Java puede ser usado para crear dos tipos de programas: aplicaciones independientes y applets.
Las aplicaciones independientes se comportan como cualquier otro programa escrito en cualquier lenguaje 
,las applets son pequeños programas que aparecen embebidos en las páginas Web, como aparecen los gráficos o el texto, pero con la capacidad de ejecutar acciones muy complejas.