domingo, 2 de septiembre de 2012

Java y C#


JAVA.


Es un lenguaje desarrollado por Sun microsystems con una sintaxis basada en C++.

La principal novedad que Java aporta es que no se compila habitualmente en código nativo sino en bytecode. La compilación en código nativo no se realiza hasta la ejecución de la aplicación a través de la máquina virtual. Es un camino a medias entre la interpretación y la compilación.

La estrategia de no compilar en código nativo hasta la ejecución de la aplicación tiene el objetivo principal de mejorar la portabilidad de las aplicaciones desarrolladas en Java.
De hecho el lema de Java es:
Write once run everywhere
(Escríbelo una vez y ejecútalo donde quieras)
Java en sus comienzos tenía una fama de lenguaje lento. Actualmente su rendimiento ha mejorado considerablemente, debido a la mejora de los compiladores JIT (Just in Time) que "compilan" en la memoria el código al cargar partes de él.
 



C#

Es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes.

Aunque C# forma parte de la plataforma .NET, ésta es una API, mientras que C# es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma. 





Java VS. C#



Java VS. C#

  • En C# podes desarrollar apliacciones de escritorio con WindowsForms (al menos que estes usando proyecto Mono con los QTSharp y GTKSharp creo que es asi...) y desarrollo web solamente con ASP .NET

    En el caso de Java podes dearrollar aplicaciones de escritorio con AWT, Swing, Ecliopse SWT, JSeamless, QTJava) y podes desarrollar paginas Web o sitios web con simplemente Servlets, JSP, Struts, Webwork, Java Server Faces, Velocity, Spring Web y Spring MVC, Tapestry, Stripes, Wicket, GWT, y demas.

 



  • Suele preferirse Java también por  razones políticas que por razones técnicas. En primer lugar Java es gratuito, y no hay que pagar la licencia para ".NET", por que se entiende que no existen las herramientas para desarrollar en cada uno de sus componentes por separado (VB, C#, etc...). Dicen que esta razón es muy simplista pero estamos hablando de cientos de dólares. Y aparte C# (se puede decir que todo ".NET") es simplemente una copia de Java que Microsoft hizo con plenas intenciones monopólicas.


    C# visto desde un programador de Java

    Ambos lenguajes son de nueva generación; ambos incluyen características avanzadas, como recolección de basura, que facilitan las tareas de programación. Además, ambos son muy parecidos sintácticamente.
    En estos lenguajes se realiza una compilación a un lenguaje intermedio: Java a bytecode, y C# a MSIL (Microsoft Intermediate Language). En ambos casos, ese lenguaje intermedio puede ser ejecutado en una máquina virtual apropiada.
    Las similitudes de C# con Java son tan grandes que las diferencias se pueden detallar en un breve espacio de tiempo.
    A diferencia de Java, en C# incluso los tipos básicos (int y compañía) son objetos, lo que le hace un lenguaje aún más orientado a objetos. Además, permite la sobrecarga de operadores y tiene espacios de nombres, que terminan siendo muy parecidos a los paquetes en Java.
    Se permiten las clases anidadas y existen los destructores, que son invocados de forma automática por el recolector de basura. Las funciones puede recibir listas de parámetros de longitud no conocida y en C# existe el concepto de propiedades, concepto muy habitual en los objetos de GLib, y hay nuevas reglas de visibilidad "internal" y "protected internal" que hacen referencia a la visibilidad de proyecto.
    Los eventos siguen un esquema similar al modelo de subscripción que nos encontramos en GLib o Swing. 
     




    Opiniones acerca de Java:
    Java es un lenguaje de programación que presenta muchas ventajas, pero también tiene desventajas:
    • Un mismo código corre en varias plataformas, llamese Windows, Linux, Mac...
    • Es relativamente sencillo de usar, aunque por supuesto hay que tener conocimientos de programación.
    • Elimina las grandes desventajas del C++ como pueden ser los punteros.
    • Es el lenguaje más usado para crear paginas en internet (parte de ellas)
    • Es el lenguaje usado para aparatos inteligentes (aun no presentes en España)
    A parte de esto la gran desventaja es que al ser un lenguaje interpretado requiere de mucha máquina para ir bien, aunque en los últimos tiempos, la tecnología esta muy avanzada así que esto dejará de ser un problema dentro de algún tiempo.