Ver Mensaje Individual
  #16 (permalink)  
Antiguo 03/08/2008, 13:52
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Diferencias entre java y C++

Hola,

Bueno, ya hemos visto para que sirve definir por qué se quito la aritmética de punteros .

Cita:
Iniciado por GreenEyed Ver Mensaje
... Y no, la aritmética de punteros no se quitó por eso. Precisamente Java define un procesador virtual en la JVM donde en todas las arquitecturas todos los datos usan el mismo numero de bytes y el orden esta definido. ...
¿ Como se logró que en todas las arquitecturas todos los datos usaran el mismo numero de bytes y el orden estuviera definido ?

Ocultando al programador el acceso directo a memoria y los punteros.

El objetivo inicial de Java era portabilidad, y para eso era necesario eliminar todas las diferencias entres procesadores (incluyendo acceso directo a memoria o punteros).

Cita:
Iniciado por GreenEyed Ver Mensaje
... Y seguramente se puedan hacer virus en la JVM, pero como si no es atacando la JVM, tu codigo no puede atacar a otro por "overflow"....
Como dijiste anteriormente, semántica. Creo, que si pensaron en la seguridad, pero no era el objetivo principal al crearlo.

Saludos,

ps: El ejemplo clásico de mi punto de vista es el procesador Morotola y PowerPC con su "endianess" tipo "big-endian".

ps:

Para comprender realmente este concepto hay que entrar en detalle como funciona el procesador, las instrucciones de código de maquina, y los punteros que existen en lenguaje assembler. Por ejemplo en x86: mov ax,[bx] o en RISC: li $v0,(10) ; y como Java elimina ese problema, creando diferentes VM para cada arquitectura de hardware, que muestren simplemente java.lang.Integer i = 10; sin importar si bx es 16, 32 o 64 bits. (O inclusive $v0 es de 64 bits). Y asegurando que java.lang.Integer va a ser de 32 bits.

Y como está fuera de contexto en el foro de Java. Cada quien saque sus propias conclusiones.

Última edición por HackmanC; 03/08/2008 a las 16:34 Razón: rewrite all & ps2 & correct big-endian x little-endian & end.