You are on page 1of 2

Olvera Prez Javier

2NV21

Sintaxis:
Prcticamente idntica en C++ y Java
Orientacin 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 funcin debe pertenecer
a alguna clase (es un mtodo). Existe la funcin main, pero es un mtodo,
pero es un mtodo esttico 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
Cdigo de mquina generado:
C y C++: el compilador genera cdigo de mquina para una plataforma
concreta
Java: el compilador genera cdigo de mquina (bytecode) para el
procesador JVM; dicho cdigo debe ser interpretado a posteriori
Liberacin de Memoria:
C y C++: a cargo del programador (delete)
Java: automtica; los objetos creados son destruidos automticamente
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 aritmtica bien definida, y entre otras
cosas, permiten programador explorar la memoria del computador fsico
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 aritmtica de referencias.
Paquetes:
C y C++: no existe tal concepto; lo ms 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
Conversin implcita 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: slo existe la sobrecarga de funciones (mtodos); Los
operadores que existen ya vienen sobrecargados por el compilador,
(p.e. + para sumar nmeros o concatenar cadenas).
Herencia mltiple:
C++: existe
Java: no existe por considerarse poco eficiente (esto implic algunas

Ing. en Informtica

Olvera Prez Javier

2NV21

Ing. en Informtica

crticas a Java desde ciertos sectores)


Interfaces:
C++: no existen este concepto
Java: existe el concepto de interfaz como conjunto de especificaciones
de mtodos y de atributos constantes.
Estructuras dinmicas:
C++: Librera 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.
Objetos:
C++: Ningn ancestro comn.
Java: Todos los objetos heredan automticamente de la clase Object.
En Java, los tipos primitivos no son orientados a objetos y tampoco comparten ancestros con tipos de
referencia. Los tipos de referencia de Java provienen de un tipo raz comn.
En C#, hay un sistema unificado de tipos en el que todos los tipos derivan de un tipo de raz comn.
Por esto, los mtodos de extensin del tipo objeto son aplicables a todos los tipos.
En Java, solo se pueden definir mtodos para los tipos de referencia. En C#, no es necesario que sean
de referencia.
A los tipos integrados que se copian y pasan por valor y no por referencia son denominados primitivos
en Java, y Simples en C#. Este ltimo posee ms tipos primitivos que Java
La sintaxis para acceder a la matriz es igual en ambas pero C# ha agregado ms para declarar y
manipular matrices multidimensionales.
A diferencia de Java, C# si permite el uso de punteros, los cuales son inseguros por su capacidad de
eludir reglas de acceso a objetos. Por esto, exige marcar a mtodos y bloques de cdigo que los
contengan con la palabra clave unsafe para indicar el riesgo. Los que contengan ese cdigo necesitarn
permiso para ser compilados o ejecutados.

You might also like