Aprenda sobre Java, qué es y por qué es tan popular

Inside Java ofrece un vistazo detrás de la plataforma Java y las tecnologías relacionadas. En la columna de este mes, le mostraré una descripción general del lenguaje de programación Java.

Java: una isla de Indonesia, un tipo de café y un lenguaje de programación. Tres significados muy diferentes, cada uno en diversos grados de importancia. La mayoría de los programadores, sin embargo, están interesados en el lenguaje de programación Java. En solo unos pocos años (desde fines de 1995), Java ha tomado por asalto a la comunidad de software. Su éxito fenomenal ha convertido a Java en el lenguaje de programación de más rápido crecimiento. Hay mucho bombo sobre Java y lo que puede hacer. Muchos programadores y usuarios finales están confundidos acerca de qué es exactamente y qué ofrece Java.

Java es un lenguaje revolucionario

Las propiedades que hacen que Java sea tan atractivo están presentes en otros lenguajes de programación. Muchos idiomas son ideales para ciertos tipos de aplicaciones, incluso más que Java. Pero Java reúne todas estas propiedades en un solo idioma. Este es un avance revolucionario para la industria del software.

Veamos algunas de las propiedades con más detalle:

Orientado a objetos

Muchos lenguajes antiguos, como C y Pascal, eran lenguajes de procedimiento. Los procedimientos (también llamados funciones) eran bloques de código que formaban parte de un módulo o aplicación. Los procedimientos pasaron los parámetros (tipos de datos primitivos como enteros, caracteres, cadenas y números de coma flotante). El código se trató por separado a los datos. Debes pasar por las estructuras de datos y los procedimientos podrían modificar fácilmente sus contenidos.

Java es un lenguaje orientado a objetos. Un lenguaje orientado a objetos trata con objetos. Los objetos contienen datos (variables miembro) y código (métodos). Cada objeto pertenece a una clase particular, que es un modelo que describe las variables y los métodos de los miembros que ofrece un objeto. En Java, casi todas las variables son objetos de algún tipo u otro, incluso cadenas. La programación orientada a objetos requiere una forma diferente de pensar, pero es una

Portátil

La mayoría de los lenguajes de programación están diseñados para un sistema operativo específico y una arquitectura de procesador. Cuando se compila el código fuente (las instrucciones que componen un programa), se convierte en código de máquina que se puede ejecutar solo en un tipo de máquina. Este proceso produce código nativo, que es extremadamente rápido.

Otro tipo de lenguaje es uno que se interpreta. El código interpretado es leído por una aplicación de software (el intérprete), que realiza las acciones especificadas. El código interpretado a menudo no necesita ser compilado, se traduce mientras se ejecuta. Por este motivo, el código interpretado es bastante lento, pero a menudo es portátil en diferentes sistemas operativos y arquitecturas de procesador.

Java toma lo mejor de ambas técnicas. El código de Java se compila en un código máquina de plataforma neutra, que se denomina bytecode de Java. Un tipo especial de intérprete, conocido como Java Virtual Machine (JVM), lee el bytecode y lo procesa. La Figura Uno muestra un desmontaje de una pequeña aplicación Java. El bytecode, indicado por la flecha, se representa en forma de texto aquí, pero cuando se compila se representa como bytes para conservar el espacio.

Multi-hilo

Si alguna vez ha escrito aplicaciones complejas en C o PERL, probablemente ya se haya encontrado antes con el concepto de procesos múltiples. Una aplicación puede dividirse en copias separadas, que se ejecutan al mismo tiempo. Cada copia replica el código y los datos, lo que resulta en un mayor consumo de memoria. Obtener las copias para hablar juntas puede ser complejo y frustrante. La creación de cada proceso implica una llamada al sistema operativo, que también consume más tiempo de CPU.

Un mejor modelo es usar múltiples hilos de ejecución, conocidos como hilos para abreviar. Los subprocesos pueden compartir datos y códigos, por lo que es más fácil compartir datos entre instancias de subprocesos. También usan menos memoria y sobrecarga de CPU. Algunos lenguajes, como C ++, tienen soporte para hilos, pero son complejos de usar. Java tiene soporte para múltiples hilos de ejecución integrados en el lenguaje. Los hilos requieren una forma diferente de pensar, pero se pueden entender muy rápidamente. El soporte de subprocesos en Java es muy simple de usar, y el uso de subprocesos en aplicaciones y applets es bastante común.

Recolección de basura automática

No, no estamos hablando de sacar la basura (aunque una computadora que literalmente podría hacer eso sería bastante limpia). El término recolección de basura se refiere a la recuperación de espacio de memoria no utilizado. Cuando las aplicaciones crean objetos, la JVM asigna espacio de memoria para su almacenamiento. Cuando el objeto ya no se necesita (no existe ninguna referencia al objeto), el espacio de la memoria se puede reclamar para un uso posterior.

Seguro

La seguridad es un gran problema con Java. Dado que los applets de Java se descargan de forma remota y se ejecutan en un navegador, la seguridad es motivo de gran preocupación. No desearíamos que los applets lean nuestros documentos personales, borren archivos o causen daños. En el nivel de API, existen fuertes restricciones de seguridad en el acceso a archivos y redes para applets, así como soporte para firmas digitales para verificar la integridad del código descargado. En el nivel de bytecode, se realizan comprobaciones para hacks obvios,

Red e "Internet" consciente

Java fue diseñado para ser consciente de "Internet" y para admitir programación en red. La API de Java proporciona una amplia compatibilidad de red, desde sockets y direcciones IP, a URL y HTTP. Es extremadamente fácil escribir aplicaciones de red en Java, y el código es completamente portátil entre plataformas. Java también incluye soporte para programación de red más exótica, como invocación de método remoto (RMI), CORBA y Jini. Estas tecnologías de sistemas distribuidos hacen que Java sea una opción atractiva para grandes sistemas distribuidos.