Java
Qué es Java
En esta materia aprenderemos a aplicar patrones de diseño mediante el uso del lenguaje de programación Java, por lo cual haremos una breve explicación del funcionaiento del mismo.
Características
Para comenzar podemos decir que Java es un lenguaje de programación de propósito general, orientado a objetos, de tipado estático, robusto y seguro.
Propósito general
Esto significa que Java puede ser utilizado para desarrollar una gran variedad de software, en diferentes áreas de aplicación.
Orientado a objetos
Java es un lenguaje de programación que soporta el paradigma de programación orientada a objetos. Esto implica que Java permite la definición ciertas estructuras y comportamientos, los cuales pueden ser utilizados para modelar entidades del mundo real y sus interacciones de una manera más natural.
Tipado estático
En un lenguaje de tipado estático, el tipo de cada variable debe ser declarado explícitamente en el código fuente, lo cual permite detectar errores en tiempo de compilación.
Robusto
Un lenguaje de programación es considerado robusto cuando permite la detección y manejo de errores de manera eficiente.
Seguro
Java es un lenguaje de programación seguro, ya que proporciona un entorno de ejecución seguro, el cual protege al sistema de posibles amenazas. Por supuesto, se encuentra en constante evolución para garantizar la seguridad de los usuarios mediante constantes actualizaciones.
Funcionamiento de Java
Por otro lado, Java es un lenguaje de programación híbrido y portable.
Cuando tenemos en cuenta su forma de ejecución, Java puede ser considerado como un lenguaje de programación híbrido, debido a que cuenta con características de lenguajes de programación compilados e interpretados.
Compilado
Un lenguaje de programación compilado es aquel que requiere de un compilador para traducir el código fuente a un lenguaje de bajo nivel, el cual puede ser ejecutado por la computadora.
Interpretado
Un lenguaje de programación interpretado es aquel que emplea un intérprete para ejecutar el código fuente directamente, sin necesidad de traducirlo a un lenguaje de bajo nivel previamente.
En el caso de Java, el código fuente es traducido a un lenguaje intermedio llamado bytecode, un lenguaje independiente de la plataforma en la que se ejecuta, similar a un lenguaje ensamblador. Este bytecode es ejecutado por una máquina virtual Java o Java Virtual Machine (JVM).
En cuanto al aspecto de portabilidad, podemos decir que Java es un lenguaje de programación portable, ya que los programas escritos en Java pueden ser ejecutados en diferentes plataformas sin necesidad de realizar modificaciones en el código fuente, siempre y cuando se cuente con una JVM instalada.
Figura 1: Una visión general del desarrollo de software en Java
La razón por la cual se realiza este paso intermedio, la traducción de código a bytecode, es para garantizar la portabilidad del software desarrollado en las diferentes plataformas existentes.
De esta manera, el bytecode puede ser ejecutado en cualquier plataforma que cuente con una JVM instalada.
Figura 2: Ejecución de Java en diferentes plataformas
Por esta razón, para poder desarrollar en Java es necesario contar con un compilador y una JVM. En la mayoría de los casos, el compilador y la JVM se encuentran incluidos en un mismo paquete, conocido como JDK (Java Development Kit).
La plataforma de Java
Una plataforma es un entorno de hardware y/o software en el cual se ejecuta un programa, entre las cuales podemos mencionar a Microsoft Windows, Linux, MacOS, Android, etc. Así, la mayoría de las plataformas pueden describirse como una combinación de un sistema operativo y un hardware específico. Por ejemplo, una plataforma puede ser un sistema operativo Windows que se ejecuta en un procesador Intel x64, otra puede ser un sistema operativo Linux que se ejecuta en un procesador ARM, etc.
La plataforma de Java cuenta con dos componentes principales:
- La JVM (Java Virtual Machine), la cual describimos anteriormente.
- La API de Java (Application Programming Interface), la cual es un conjunto de clases y métodos que proporcionan una interfaz de programación para el desarrollo de aplicaciones en Java.
Bajo este contexto, podemos definir gráficamente la plataforma de Java de la siguiente manera:
Figura 3: Plataforma de Java
Como se puede observar en la figura anterior, la API y la JVM aislan el programa del hardware subyacente, lo cual permite que el programa sea independiente de la plataforma en la que se ejecuta.
Sin embargo, es importante tener en cuenta que emplear este modelo de plataforma conlleva a un costo en términos de rendimiento, ya que emplear dicha plataforma será siempre más lento que ejecutar el programa directamente en el hardware subyacente.
En este sentido, podemos decir que la plataforma de Java nos proporciona portabilidad, seguridad y robustez, a cambio de un menor rendimiento. Por supuesto, la pl
API de la plataforma Java
La API (Application Programming Interface) en la plataforma Java es un conjunto de clases, interfaces, paquetes y herramientas preescritas que nos brindan una amplia gama de funcionalidades listas para ser utilizadas. Estas API están diseñadas para facilitar el desarrollo de aplicaciones, proporcionando bloques de construcción reutilizables y estandarizados.
Las API de Java se organizan en paquetes que agrupan clases e interfaces relacionadas. Cada clase es una colección de campos (variables) y métodos (funciones) que encapsulan una funcionalidad específica. Las interfaces definen un conjunto de métodos que deben ser implementados por las clases que las implementan. En el futuro veremos el diseño e implementación de interfaces.
Algunas de las API más importantes en la plataforma Java son:
- java.lang: Contiene clases fundamentales como String, Math, Object, Thread, entre otras.
- java.util: Proporciona colecciones (como ArrayList, HashMap), clases de utilidad para fechas, internacionalización, entre otras.
- java.io: Ofrece clases para la entrada/salida de datos, manejo de archivos y flujos de datos.
- java.net: Proporciona clases para programación de red, como sockets y URLs.
- java.sql: Permite la interacción con bases de datos relacionales a través de JDBC.
- javax.swing: Contiene clases para construir interfaces gráficas de usuario (GUI).