Saltearse al contenido

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.

Funcionamiento de Java

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.

Java Multiplataforma

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:

Plataforma de Java

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).