Respuesta
oct. 13, 2010 - 10:10
Pues mira amigo no sabria decirte muy bien cual es mejor, todo depende de los gustos de cada quien.
Claro que yo prefiero Java ante todo por que se me hace mas potente y amigable que C++ a y ademas Java es , pero para no dejarte a medias te dejo esto:
Sintaxis:
Prácticamente idéntica en C++ y Java
Orientación a objetos:
En C++ se pueden escribir programas orientados a objetos, no
orientados a objetos, o mezcla de ambos (por ejemplo, tener clases
con funciones globales en el mismo programa)
Java es puramente orientado a objetos; cualquier función debe pertenecer
a alguna clase (es un método). Existe la función main, pero es un método,
pero es un método estático de una clase (la clase principal)
Control sobre la plataforma (hardware+S.O.):
C y C++: el programador tiene control del procesador.
Java: el programa se ejecuta sobre un procesador virtual (JVM) que
abstrae al programador de la plataforma concreta
Código de máquina generado:
C y C++: el compilador genera código de máquina para una plataforma
concreta
Java: el compilador genera código de máquina (bytecode) para el
procesador JVM; dicho código debe ser interpretado a posteriori
Liberación de Memoria:
C y C++: a cargo del programador (delete)
Java: automática; los objetos creados son destruidos automáticamente
ente cuando se quedan sin referencias. Un proceso de la JVM llamado
recolector de basura (garbage collector)
Punteros:
C y C++: existen punteros con una aritmética bien definida, y entre otras
cosas, permiten programador explorar la memoria del computador físico
Java: no existe el concepto de puntero; los objetos son accedidos
mediante referencias (una referencia se puede considerar como el propio
propio identificador del objeto); no existe aritmética de referencias.
Paquetes:
C y C++: no existe tal concepto; lo más aproximado son los archivos de
biblioteca (.h)
Java: un paquete es una entidad organizativa que permite agrupar clases,
interfaces y excepciones, así como que sus elementos dispongan de una
determinada visibilidad con respecto a elementos externos al paquete
Conversión implícita de tipos:
C y C++: existe (flexibilidad para el programador)
Java: no existe por considerarse un mecanismo objeto de errores
potenciales
Sobrecarga de funciones y operadores:
C++: existen ambos tipos de sobrecarga
Java: sólo existe la sobrecarga de funciones (métodos); Los
operadores que existen ya vienen sobrecargados por el compilador,
(p.e. + para sumar números o concatenar cadenas).
Herencia múltiple:
C++: existe
Java: no existe por considerarse poco eficiente (esto implicó algunas
críticas a Java desde ciertos sectores)
Interfaces:
C++: no existen este concepto
Java: existe el concepto de interfaz como conjunto de especificaciones
de métodos y de atributos constantes.
Estructuras dinámicas:
C++: Librería STL
Java: paquete java.util. Los nombres y el funcionamiento son distintos.
Compiladores:
C++: Muchos compiladores. Pueden ser bastante distintos.
Java: Un único compilador siempre igual.
Esto lo encontre en:
"http://pintucoperu.wordpress.com/2007/11/23/diferencias-entre-c-y-java/"
Espero que te sirva de algo ;)
Claro que yo prefiero Java ante todo por que se me hace mas potente y amigable que C++ a y ademas Java es , pero para no dejarte a medias te dejo esto:
Sintaxis:
Prácticamente idéntica en C++ y Java
Orientación a objetos:
En C++ se pueden escribir programas orientados a objetos, no
orientados a objetos, o mezcla de ambos (por ejemplo, tener clases
con funciones globales en el mismo programa)
Java es puramente orientado a objetos; cualquier función debe pertenecer
a alguna clase (es un método). Existe la función main, pero es un método,
pero es un método estático de una clase (la clase principal)
Control sobre la plataforma (hardware+S.O.):
C y C++: el programador tiene control del procesador.
Java: el programa se ejecuta sobre un procesador virtual (JVM) que
abstrae al programador de la plataforma concreta
Código de máquina generado:
C y C++: el compilador genera código de máquina para una plataforma
concreta
Java: el compilador genera código de máquina (bytecode) para el
procesador JVM; dicho código debe ser interpretado a posteriori
Liberación de Memoria:
C y C++: a cargo del programador (delete)
Java: automática; los objetos creados son destruidos automáticamente
ente cuando se quedan sin referencias. Un proceso de la JVM llamado
recolector de basura (garbage collector)
Punteros:
C y C++: existen punteros con una aritmética bien definida, y entre otras
cosas, permiten programador explorar la memoria del computador físico
Java: no existe el concepto de puntero; los objetos son accedidos
mediante referencias (una referencia se puede considerar como el propio
propio identificador del objeto); no existe aritmética de referencias.
Paquetes:
C y C++: no existe tal concepto; lo más aproximado son los archivos de
biblioteca (.h)
Java: un paquete es una entidad organizativa que permite agrupar clases,
interfaces y excepciones, así como que sus elementos dispongan de una
determinada visibilidad con respecto a elementos externos al paquete
Conversión implícita de tipos:
C y C++: existe (flexibilidad para el programador)
Java: no existe por considerarse un mecanismo objeto de errores
potenciales
Sobrecarga de funciones y operadores:
C++: existen ambos tipos de sobrecarga
Java: sólo existe la sobrecarga de funciones (métodos); Los
operadores que existen ya vienen sobrecargados por el compilador,
(p.e. + para sumar números o concatenar cadenas).
Herencia múltiple:
C++: existe
Java: no existe por considerarse poco eficiente (esto implicó algunas
críticas a Java desde ciertos sectores)
Interfaces:
C++: no existen este concepto
Java: existe el concepto de interfaz como conjunto de especificaciones
de métodos y de atributos constantes.
Estructuras dinámicas:
C++: Librería STL
Java: paquete java.util. Los nombres y el funcionamiento son distintos.
Compiladores:
C++: Muchos compiladores. Pueden ser bastante distintos.
Java: Un único compilador siempre igual.
Esto lo encontre en:
"http://pintucoperu.wordpress.com/2007/11/23/diferencias-entre-c-y-java/"
Espero que te sirva de algo ;)
Añadir Nuevo Comentario