A continuación haremos una pequeña redacción de las características del lenguaje, que nosayudarán a ver para que tipo de problemas está pensado Java:
Simple Es un lenguaje sencillo de aprender. Su sintaxis es la de C++ “simplificada”. Los creadores deJava partieron de la sintaxis de C++ y trataron de eliminar de este todo lo que resultasecomplicado o fuente de errores en este lenguaje. La herencia múltiple, la aritmética depunteros, por la gestión de memoria dinámica (que en Java se elimina de modo transparentepara el programador gracias al recogedor basura) son ejemplos de "tareas complicadas" deC++ y en Java se han eliminado poco simplificado.
Orientado a Objetos
Posiblemente sea el lenguaje más orientado a objetos de todos los existentes; en Java todo, aexcepción de los tipos fundamentales de variables (int, char, long...) es un objeto.
Distribuido Java está muy orientado al trabajo en red, soportando protocolos como TCP/IP, UDP, HTTP yFTP. Por otro lado el uso de estos protocolos es bastante sencillo comparandolo con otroslenguajes que los soportan.
Robusto El compilador Java detecta muchos errores que otros compiladores solo detectarían en tiempode ejecución o incluso nunca. A esclarecer así por ejemplo " if(a=b) then ... " o " int i; h=i*2; "son dos ejemplos en los que el compilador Java no nos dejaría compilar este código; sinembargo un compilador C compilaría el código y generaría un ejecutable que ejecutaría estasentencia sin dar ningún tipo de error).
Seguro
Sobre todo un tipo de desarrollo: los Applet. Estos son programas diseñados para serejecutados en una página web. Java garantiza que ningún Applet puede escribir o leer denuestro disco o mandar información del usuario que accede a la página a través de la red(como, por ejemplo, la dirección de correo electrónico). En general no permite realizarcualquier acción que pudiera dañar la máquina o violar la intimidad del que visita la páginaweb.
Portable
En Java no hay aspectos dependientes de la implementación, todas las implementaciones deJava siguen los mismos estándares en cuanto a tamaño y almacenamiento de los datos.Esto no ocurre así en C++, por ejemplo. En éste un entero, por ejemplo, puede tener untamaño de 16, 32 o más bits, siendo lo única limitación que el entero sea mayor que un shorty menor que un long int. Así mismo C++ bajo UNIX almacena los datos en formato littleendian, mientas que bajo Windows lo hace en big endian. Java lo hace siempre en little edianpara evitar confusiones.
Arquitectura Neutral El código generado por el compilador Java es independiente de la arquitectura: podríaejecutarse en un entorno UNIX, Mac o Windows. El motivo de esto es que el que realmenteejecuta el código generado por el compilador no es el procesador del ordenadordirectamente, sino que este se ejecuta mediante una máquina virtual. Esto permite que losApplets de una web pueda ejecutarlos cualquier máquina que se conecte a ellaindependientemente de que sistema operativo emplee (siempre y cuando el ordenador encuestión tenga instalada una máquina virtual de Java).
Rendimiento medio
Actualmente la velocidad de procesado del código Java es semejante a la de C++, hay ciertospruebas estándares de comparación (benchmarks) en las que Java gana a C++ y viceversa.Esto es así gracias al uso de compiladores just in time , compiladores que traduce losbytecodes de Java en código para una determinada CPU, que no precisa de la máquina virtualpara ser ejecutado, y guardan el resultado de dicha conversión, volviéndolo a llamar en caso devolverlo a necesitar, con lo que se evita la sobrecarga de trabajo asociada a la interpretacióndel bytecode. No obstante por norma general el programa Java consume bastante más memoria que elprograma C++, ya que no sólo ha de cargar en memoria los recursos necesario para laejecución del programa, sino que además debe simular un sistema operativo y hardwarevirtuales (la máquina virtual). Por otro lado la programación gráfica empleando las libreríasSwing es más lenta que el uso de componentes nativos en las interfaces de usuario.En general en Java se ha sacrificado el rendimiento para facilitar la programación y sobre todopara conseguir la característica de neutralidad arquitectural, si bien es cierto que los avancesen las máquinas virtuales remedian cada vez más estas decisiones de diseño.
Multithread Soporta de modo nativo los threads, sin necesidad del uso de de librerías específicas (como esel caso de C++). Esto le permite además que cada Thread de una aplicación java pueda correren una CPU distinta, si la aplicación se ejecuta en una máquina que posee varias CPU. Lasaplicaciones de C++ no son capaces de distribuir, de modo transparente para elprogramador, la carga entre varias CPU.
No hay comentarios:
Publicar un comentario