Diferencias de Java contra otros lenguajes.

Hoy les quiero platicar un poco sobre complicaciones que me han surgido en el camino, al momento de desarrollar en java, no solo cuando el ambiente o aplicación es web.

Existen ciertas diferencias no tan obvias (a mi punto de vista), con las que nos podemos topar, principalmente los programadores que hemos usado otros lenguajes, e incluso podemos llegar a tener grandes problemas por no profundizar en el tema, asumiendo que las cosas son como pretendemos que sean.

Las que he encontrado y me han dado uno que otro dolor de cabeza son:

  1. El tipo de dato char en java es de 2 bytes (para caracteres en codificación Unicode, que utiliza 2 bytes). A diferencia de C++ por ejemplo, el cual equivale a 1 solo byte. Por esta razón al castear un char a byte, java nos da el warning “possible lost of precision”.
  2. No existen los tipos de datos unsigned para los numéricos, con lo cual necesitamos utilizar el siguiente dato más grande.
  3. String no es una cadena de caracteres, como sucede en otros lenguajes. El dato primitivo string no existe (que vendría a ser un arrego de char como en C o C++), en su lugar se usa la clase String.
  4. Los datos primitivos (int, double, byte, char, etc) cuando son pasados como parámetros, únicamente pasan por valor (es decir, una copia), si queremos pasarlos por referencia (puntero), debemos usar las clases Wrapper para esos datos (Integer->int, Double->double, Byte->byte, Character->char, Boolean->boolean, etc). Nótese la inicial mayúscula para las clases, mientras que el dato primitivo es en minúsculas.
  5. Relacionado con lo anterior, todos los objetos en java pasan por referencia (es decir un puntero).
  6. Los valores String no se comparan con “=” o “==” como en otros lenguajes, se utilizan métodos como “equals()“, pero al hacerlo con “==” no hay error de sintaxis, pero lo que se está comparando es el objeto completo, y no la cadena de caracteres. Es común equivocarse de esa forma y no detectar los problemas fácilmente.
  7. No existen las variables globales, y todos los programas deben ser clases, y las funciones o procedimientos son métodos. Es un lenguaje de objetos.

Teniendo estos datos a la mano, nos evitaremos algunas complejidades al momento de codificar o encontrar bugs a nuestros programas.

Un saludo !

No TweetBacks yet. (Be the first to Tweet this post)

Entradas relacionadas

  1. #1 by Pablo on 27/Oct/2009

    Interesantes detalles, gracias!

    • #2 by mariodlg on 28/Oct/2009

      Por nada, espero te ahorren un poco de horas de investigación cuando te topes con algún problema derivado de estas características.

      Saludos.

  2. #3 by aerialss88 on 5/Nov/2009

    Desconocia lo del tamaño del char en Java.Pensaba que era efectivamente de 1 byte.

    Por lo que he leido tiene bastantes cosas interesantes aunque claro , los cambios entre lenguajes de programacion…vuelven a uno loco perdido.

    Algun dia me reencontrare con Java :D . Saludos y buen post.

    • #4 by mariodlg on 5/Nov/2009

      Vale la pena, Java es un lenguaje muy extenso y poderoso.

      Muchas gracias por tu comentario, que bien que te haya servido.

      Saludos.

(no será publicado)

  1. No hay trackbacks.