Java es el nombre general del lenguaje de programación orientado a objetos Java y de la plataforma Java lanzado por Sun Microsystems en mayo de 1995. Fue desarrollado conjuntamente por James Gosling y sus colegas y lanzado oficialmente en 1995.
Java se divide en tres sistemas:
En junio de 2005, se celebró la conferencia JavaOne y SUN lanzó Java SE 6. En ese momento, se había cambiado el nombre de varias versiones de Java para eliminar el número "2": J2EE pasó a llamarse Java EE, J2SE pasó a llamarse Java SE y J2ME pasó a llamarse Java ME.
En 2009, Sun fue adquirida por Oracle.
En 2018, la organización de código abierto Eclipse Foundation anunció que JavaEE (Enterprise Edition) pasaría a llamarse JakartaEE (Yakarta).
La sintaxis del lenguaje Java es muy similar a la del lenguaje C y al lenguaje C++, lo que facilita su aprendizaje y uso para la mayoría de los programadores. Por otro lado, Java descarta aquellas características de C++ que rara vez se utilizan, son difíciles de entender y confusas, como la sobrecarga de operadores, la herencia múltiple y las conversiones automáticas. En particular, el lenguaje Java no utiliza punteros, sino referencias. También proporciona un mecanismo de gestión de reciclaje automático de memoria para que los programadores no tengan que preocuparse por la gestión de la memoria.
El lenguaje Java proporciona primitivas como clases, interfaces y herencia. En aras de la simplicidad, solo admite herencia única entre clases, pero admite herencia múltiple entre interfaces y admite mecanismos de implementación entre clases e interfaces (la palabra clave es implementar). El lenguaje Java es totalmente compatible con el enlace dinámico, mientras que el lenguaje C++ solo utiliza el enlace dinámico para funciones virtuales. En resumen, el lenguaje Java es un lenguaje de programación puramente orientado a objetos.
El lenguaje Java admite el desarrollo de aplicaciones de Internet. Entre las interfaces de programación de aplicaciones Java básicas, existe una interfaz de programación de aplicaciones de red (java net), que proporciona bibliotecas de clases para la programación de aplicaciones de red, incluidas URL, URLConnection, Socket, ServerSocket, etc. El mecanismo RMI (activación de método remoto) de Java también es un medio importante para desarrollar aplicaciones distribuidas.
El sólido mecanismo de escritura de Java, el manejo de excepciones, la recolección automática de basura, etc. son garantías importantes para la solidez de los programas Java. Descartar punteros es una opción inteligente para Java. El mecanismo de verificación de seguridad de Java hace que Java sea más robusto.
Java se utiliza habitualmente en entornos de red. Por este motivo, Java proporciona un mecanismo de seguridad para evitar ataques de códigos maliciosos. Además de las muchas características de seguridad del lenguaje Java, Java tiene un mecanismo de prevención de seguridad (clase ClassLoader) para las clases descargadas a través de la red, como la asignación de diferentes espacios de nombres para evitar el reemplazo de clases locales con el mismo nombre, inspección de código de bytes, y proporcionar un mecanismo de gestión de seguridad (clase SecurityManager) permite a las aplicaciones Java configurar centinelas de seguridad.
Los programas Java (archivos con el sufijo java) se compilan en un formato de código de bytes de arquitectura neutral (archivos con el sufijo clase) en la plataforma Java y luego se pueden ejecutar en cualquier sistema que implemente esta plataforma Java. Este enfoque es adecuado para entornos de red heterogéneos y distribución de software.
Esta portabilidad proviene de la neutralidad de la arquitectura. Además, Java también regula estrictamente la longitud de cada tipo de datos básico. El sistema Java en sí también es muy portátil. El compilador de Java está implementado en Java y el entorno de ejecución de Java está implementado en ANSI C.
Como se mencionó anteriormente, los programas Java se compilan en formato de código de bytes en la plataforma Java y luego se pueden ejecutar en cualquier sistema que implemente esta plataforma Java. En tiempo de ejecución, el intérprete de Java en la plataforma Java interpreta y ejecuta estos códigos de bytes, y las clases requeridas durante la ejecución se cargan en el entorno de ejecución durante la fase de conexión.
En comparación con los lenguajes de secuencias de comandos interpretados de alto nivel, Java es realmente de alto rendimiento. De hecho, la velocidad de ejecución de Java se acerca cada vez más a la de C++ con el desarrollo de la tecnología de compilación JIT (Just-In-Time).
En el lenguaje Java, un hilo es un objeto especial que debe ser creado por la clase Thread o sus descendientes (nietos). Generalmente hay dos formas de crear un hilo: primero, usar el constructor de tipo Thread(Runnable) para envolver un objeto que implementa la interfaz Runnable en un hilo; segundo, derivar una subclase de la clase Thread y anular el método run, el objeto; creado usando esta subclase es un hilo. Vale la pena señalar que la clase Thread ha implementado la interfaz Runnable, por lo que cualquier hilo tiene su método de ejecución, y el método de ejecución contiene el código que ejecutará el hilo. La actividad de un hilo está controlada por un conjunto de métodos. El lenguaje Java admite la ejecución simultánea de múltiples subprocesos y proporciona un mecanismo de sincronización entre múltiples subprocesos (la palabra clave está sincronizada).
Uno de los objetivos de diseño del lenguaje Java es adaptarse a entornos que cambian dinámicamente. Las clases requeridas por los programas Java se pueden cargar dinámicamente en el entorno de ejecución o las clases requeridas se pueden cargar a través de la red. Esto también facilita las actualizaciones de software. Además, las clases en Java tienen una representación en tiempo de ejecución y pueden realizar comprobaciones de tipos en tiempo de ejecución.
El lenguaje Java intenta garantizar que la memoria del sistema esté por encima de 1G. Otras herramientas son las siguientes:
Después de instalar las herramientas anteriores, podemos generar el primer programa de Java "¡Hola mundo!"
public class MyFirstJavaProgram { public static void main(String []args) { System.out.println("Hello World"); } }
En el próximo capítulo presentaremos cómo configurar el entorno de desarrollo de Java.