Introducción al Lenguaje Java
Tags: java, lenguajes, programacion
Published: 2021-08-28 22:14:16

En algunas ocasiones habremos visto o escuchado la palabra "Java", tal vez a la hora de visitar un sitio web, o quizá al momento de instalar un juego o abrir un determinado programa, este nos pide como requisito tener instalado Java en nuestra computadora para proceder con su instalación y/o ejecución, pues como alguna vez dijo mi profesor, "Java está en todas partes".

Así pues, en este tema, vamos a hablar de lo que es Java, para qué sirve y cuáles son los componentes que la conforman.

¡Comencemos!

**¿Qué es Java?**

Java es un lenguaje de programación de alto nivel y una plataforma informática con el cual se pueden escribir programas de cualquier tipo como, por ejemplo: applets, los cuales eran programas Java que se ejecutaban incrustados en un navegador web, aplicaciones de escritorio que son programas Java que se ejecutan en nuestra computadora independientemente de la plataforma o sistema operativo que estemos usando. Por otro lado, con Java también podemos crear aplicaciones empresariales, aplicaciones web, juegos, aplicaciones para dispositivos móviles, entre otros.

Java es un lenguaje de programación de alto nivel, porque se asemeja más al lenguaje humano a diferencia de los lenguajes de bajo nivel que se asemejan más al lenguaje de las computadoras o también conocido como lenguaje máquina. Por lo tanto, los programas escritos en Java no pueden ser ejecutados de forma directa por el procesador de la computadora, por ese motivo, estos programas tienen que pasar por un proceso intermedio de traducción para que puedan ser entendidos por el procesador.


**¿Qué contiene Java?**

De manera resumida:

- Java contiene una `JVM` (Java Virtual Machine), o en español Máquina Virtual de Java, que es la encargada de ejecutar o leer el programa.
- Contiene el `JDK` (Java Development Kit), o en español Herramientas de Desarrollo de Java, que vendrían a ser las librerías de programación utilizadas por los desarrolladores en el momento de la creación de un programa.
- Contiene un `compilador` que va a traducir el código escrito por el programador (código fuente) a lenguaje máquina (código de bytes) para que pueda ser entendido por el procesador al momento de ser ejecutado.

En la Figura 1 se puede ver a grandes rasgos, las partes que conforman el lenguaje de programación Java.

**Figura 1**

***Contenido del Lenguaje Java***
 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fqkd6qjsnaf5ufvg7hno.png)

**Etapa de Desarrollo de un Programa Java**

Los programas escritos en java pasan por tres etapas diferentes.

**Edición**

En esta etapa se escriben las líneas de código que contienen las instrucciones del programa. Para ello, se puede recurrir a cualquier editor de texto, inclusive, hasta se podría utilizar el bloc de notas. Sin embargo, existen Entornos de Desarrollo profesionales para dicho fin.

En la Figura 2 se puede observar un programa escrito en Java llamado “Saludo.java”. A este archivo se le conoce como código fuente.

**Figura 2**

***Edición de un Programa Java.***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s9qokmim28xpiimxnrt3.png)

**Compilación**

Una vez que ya tenemos nuestro programa (“Saludo.java”) creado, debemos de compilarlo. Recordemos que los programas escritos en Java no son comprensibles de forma directa por el procesador, por lo que requieren de cierto paso intermedio de traducción. Para este paso, vamos a utilizar el programa “javac” que viene incluido cuando se instala Java en nuestra computadora. Este programa, vendría a ser el compilador encargado de traducir el código fuente para que pueda ser leído por el procesador. 

En la Figura 3 se puede observar el programa escrito anteriormente (“Saludo.java”) siendo compilado mediante línea de comando. Este programa creará un nuevo archivo llamado “Saludo.class”. Este archivo contiene un nuevo código llamado “código de bytes” que sí es entendible por el procesador de la máquina.

**Figura 3**

***Compilación de un Programa Java.***
 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oy1hu1n2xun9pnhqj88z.png)

**Ejecución**

En esta última etapa se ejecuta el código de bytes que es el lenguaje de la JVM (máquina virtual de java). Existe una JVM para cada plataforma (Windows. Linux, Mac). Esto permite que los programas Java sean portables ya que existe una JVM para la mayoría de los sistemas operativos.

En la Figura 4 se puede observar la ejecución mediante línea de comandos de un programa Java,

**Figura 4**

***Ejecución de un Programa Java.***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4o8tmjcoygfemlklvxsw.png)
 
Por último, en la Figura 5 se puede observar las tres etapas juntas.

**Figura 5**

***Edición, Compilación y Ejecución de un Programa Java.***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iwjiogyak12edmx4uaz0.png)

**Tipos de Programas en Java**

Como habíamos mencionado líneas atrás, Java es un lenguaje de programación y plataforma informática con el cual se pueden crear programas de cualquier tipo. Desde pequeños chips para tarjetas inteligente, pasando por dispositivos móviles, PDAs, electrodomésticos, vehículos, videojuegos, aplicaciones de escritorio, aplicaciones empresariales, aplicaciones web, servicios web, servidores, hasta en el satélite, ya que es un lenguaje de propósito muy general y puede ser utilizado para muchas cosas. 

En la actualidad se enseña muchísimo en las universidades ya que es uno de los lenguajes de programación más populares y utilizado en todo el mundo. 

En la Figura 6 se puede observar una lista de los lenguajes de programación más utilizados para finales del año 2021 según la web de TIOBE.

**Figura 6**

***Lenguajes de Programación más usado del año 2021***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pye24dm2pwfuic77mkng.png)

######Nota: El índice de la comunidad de programación TIOBE es un indicador de la popularidad de los lenguajes de programación. El índice se actualiza una vez al mes. Captura de pantalla de Gráfico de TIOBE Programming Community Index, de TIOBE, 2021 (https://www.tiobe.com/tiobe-index/). ######

**Plataformas Java**

El universo de Java es un vasto conjunto de tecnologías, que comprende tres plataformas principales que se crearon para segmentos de aplicaciones específicos:

- Java SE (Java Platform, Standard Edition). Es la base de la plataforma. Incluye el entorno de ejecución y las bibliotecas comunes.
- Java EE (Java Platform, Enterprise Edition). La edición se centró en el desarrollo de aplicaciones corporativas e Internet.
- Java ME (Java Platform, Micro Edition). La edición para el desarrollo de aplicaciones para dispositivos móviles e integrados.

Además, se pueden destacar dos plataformas Java más específicas:

- Java Card. Dirigido a dispositivos integrados con limitaciones de procesamiento y almacenamiento, como tarjetas inteligentes y Java Ring.
- JavaFX. Plataforma para el desarrollo de aplicaciones multimedia en escritorio / web (JavaFX Script) y dispositivos móviles (JavaFX Mobile).

**Applets**

Los applets son programas Java que se transmiten por internet y que se ejecutan incrustados dentro de una página web.

En la Figura 7 se puede observar cuatro applets que muestran un reloj con la hora en formato MIT, UTC y INRIA.

**Figura 7**

***Applet que muestra la hora en diferentes formatos*** 

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bj15v0gpzj13f32amgzn.png)
 
######Nota: Reproducida de Java applets test, de w3. 2021 (https://www.w3.org/People/mimasa/test/object/java/).

En la Figura 8 se puede observar un applet que calcula el importe de la compra, el importe de descuento, el importe a pagar y el obsequio por la cantidad de docenas adquiridas de un producto.

**Figura 8**

***Applet que calcula el monto a pagar por la compra de cierta cantidad de docenas adquiridas de un producto***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84ugz0r70cfs2w3s6os3.png)

En la Figura 9 se puede observar un applet que calcula el área y volumen de un cilindro en base a la altura y el radio de este.

**Figura 9**

***Applet que calcula el área y el volumen de un cilindro***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2db7tg3bsma74tojvqd.png)

>Desde el año 2014 en adelante los diferentes navegadores como por ejemplo Google Chrome y Firefox han ido quitando el soporte al plugin de NPAPI, que es la tecnología requerida para ejecutar los applets de Java y otros plug-ins similares basados en la NPAPI, Lo que ha generado un gran impacto ya que muchas páginas, empresas, usuarios y desarrolladores que han usado esta tecnología por mucho tiempo lleven a migrar sus proyectos a una solución diferente y dejando atrás el uso de los applets en las aplicaciones web. Si bien es cierto los applets permitían acceder a las funcionalidades del sistema operativo, existen otras alternativas como Apis y Frameworks. 

>En Internet Explorer aún es posible ejecutar los applets siempre y cuando se le dé el permiso desde el panel de control de Java y el otro modo de ejecutarlos seria utilizando una versión desactualizada de un navegador y de Java (de la versión 1.7 para abajo). Es un consejo para las personas que no quieren perder sus programas hechos en applets y desean todavía hacer uso de ellas,

>En resumen, con los pasos de los años el éxito de esta tecnología se fue reduciendo debido a diversos factores, quizá la más importante el tamaño limitado de los applets que se incrustaban en el navegador y la aparición posterior de las aplicaciones web dinámicas de servidor que relego el uso de estas minis aplicaciones. Si bien es cierto que existen otras tecnologías que también se incrustaban en el navegador, como ActiveX de Microsoft, Flash, Java Web Start, etc. Los applets Java fueron los primeros.

**Aplicaciones de Escritorio**

Las aplicaciones son programas Java que son independientes de un navegador web, poseen ventana propia a diferencia de los applets pero que también necesitan de una versión de la JVM para poder ser ejecutados en el sistema operativo.

En la Figura 10 se puede observar una aplicación de ventas realizado en Java.

**Figura 10**

***Sistema de ventas Kardex***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/abec7yuq2arv4y3lqr4x.png)

En la Figura 11 se puede observar una aplicación de bloc de notas realizado en Java.

**Figura 11**

**Aplicación Bloc de Notas**
 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bgi3zpwyc19kzn2h58lz.png)
 
En la Figura 12 se puede observar una aplicación Java que guarda los contactos de una persona en una agenda.

**Figura 12**

***Aplicación Agenda***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/esljqyid5q01ot7118ck.png)
 
**Aplicaciones Web**

Se denomina aplicación web a aquellas herramientas que los usuarios pueden utilizar accediendo a un servidor web a través de internet o de una intranet mediante un navegador. En Java son los servlets que permiten esto. Un servlet es un componente web que está soportada para trabajar con el paradigma request-response y a diferencias de los applets son programas Java que se ejecutan en el lado del servidor mediante el desarrollo de aplicaciones web que interactúan con los clientes.

En este campo existen muchas tecnologías para desarrollar una aplicación web, que son marcos de trabajo (frameworks) que nos van a facilitar un amplio conjunto de potentes librerías para poder construir una aplicación web. Podremos desarrollar aplicaciones web Java utilizando Servlets y JSPs, aplicaciones web Java utilizado Struts y MyBatis, aplicaciones web Java usando JSF y JPA, aplicaciones web Java usando Spring, Ibatis, JSF y PrimeFaces, aplicaciones web Java usando Spring Boot, etc., ya que hoy en día existen una gran cantidad de tecnologías tanto a nivel de persistencia (base de datos) como a nivel de vista (frontend) y controlador (backend) para el desarrollo de aplicaciones web.

En la Figura 13 se puede observar una sencilla aplicación web Java que realiza un mantenimiento de productos.

**Figura 13**

***Sistema Web de Mantenimiento de Productos***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pjul0hgzo8yuhrc243wa.png)

En la Figura 14 se puede observar una aplicación web Java de reservas de canchas de futbol.

**Figura 14**

***Sistema Web de Reservas de Cancha de Fútbol***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uphufazca6aes9ipmodf.png)

En la Figura 15 se puede observar una aplicación web Java de reserva de matrículas.

**Figura 15**

***Sistema Web de Reserva de Matriculas***

######Nota: Recuperada de internet

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/op1m21rdjo6leg34ingb.png)

######Nota: Recuperada de internet

>Es importarte saber que no debemos confundir un `sitio web` (web site) con una `aplicación web` (web aplication). Una página web es estática, es decir que no hay interacción con el usuario o cliente más que el intercambio de información. Tampoco se necesita de un lenguaje de programación más que el html, css y javascript, como por ejemplo el sitio web de una empresa donde podemos ver la historia de la empresa y los servicio que ofrece. En cambio, una aplicación web se comporta como una aplicación de escritorio, es dinámica su contenido cambia constantemente, requiere de html, css, javascript, base de datos y lenguajes de programación, como por ejemplo las aplicaciones web que acabas de ver en las imágenes.

**Aplicaciones para Dispositivos Móviles, PDAs, Electrodomésticos**

Son aplicaciones Java destinadas a ejecutarse en pequeños dispositivos con memoria, visualización y potencia limitadas.

En la Figura 16 se muestra un ejemplo de una aplicación Android de una tienda online.

**Figura 16**

***Aplicación Móvil de Carrito de Compras***

 ![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgxjo4e7j023jwifeshe.png)

######Nota: Recuperada de internet 

En la Figura 17 se muestra un ejemplo de una aplicación Android de un centro médico.

**Figura 17**

***Aplicación Móvil para Citas Médicas Online***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6jotqhtwr80e9wh8n82s.png)
 
En la Figura 18 se muestra un ejemplo de una aplicación JavaFX de registro de clientes.

**Figura 18**

***Aplicación Móvil Java FX de Registro de Clientes***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6m2dw0eordtvvc7ayo7.png)

######Nota: Recuperada de internet

**Aplicaciones Java Card**

Son pequeñas aplicaciones Java (applets) seguras destinadas a ejecutarse dentro de tarjetas inteligentes y similares dispositivos empotrados como, por ejemplo: chips de celulares, monederos electrónicos, identificación o firma digitales, sistema de prepago, control de acceso y asistencia, entre otros.

**Figura 19**

***Tarjeta Java Card***

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ck1j41wrtm5f58gqvohi.png)

######Nota: Recuperada de internet 

En Java podemos desarrollar una gran variedad de aplicaciones, desde los más sencillos y prácticos hasta los más sofisticados y complejos. ¡Genial verdad! Pero para llegar a este nivel, debemos de pasar por muchas etapas, ya que Java es inmenso, es un lenguaje de programación “complejo de aprender” pues tiene muchas cosas, abarca muchas áreas de nivel general y con sus más de 20 años en el mercado sigue siendo un lenguaje de futuro. Java no es solo un lenguaje de programación, sino que es una plataforma que abarca muchos servicios, componentes, librerías e infinidades de cosas más.

 **Para Recordar**

Les dejo algunos puntos claves de este capítulo:

- Un lenguaje de programación es un lenguaje formal (artificial, con reglas gramaticales bien definidas), que le proporciona al programador la capacidad de poder escribir el código fuente de un programa (programar).
- Un lenguaje de programación de alto nivel es un lenguaje que se asemeja más al lenguaje humano.
- Un lenguaje de programación de bajo nivel es un lenguaje que se asemeja más al lenguaje máquina.
- Java es un lenguaje de programación de alto nivel con el cual se pueden escribir programas de cualquier tipo.
- El universo Java contas de 3 plataformas principales: Java SE, Java EE, Java ME. Y dos específicas: Java Card y Java FX.
- Con Java podemos crear applets, aplicaciones de escritorios, aplicaciones empresariales, aplicaciones web, servicios web, servidores, aplicaciones para dispositivos móviles, videojuegos, PDAs, electrodomésticos, tarjetas inteligentes, etc.

Espero que este post haya sido de su agrado. Conmigo será hasta una próxima oportunidad. Saludos y que tenga un buen día.

Para complementar lo aprendido, puede visitar los siguientes enlaces:

Lenguaje de Programación: https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n
Lenguaje de Alto Nivel: https://es.wikipedia.org/wiki/Lenguaje_de_alto_nivel
Lenguaje de Bajo Nivel: https://es.wikipedia.org/wiki/Lenguaje_de_bajo_nivel
Lenguaje de Programación Java: https://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)
Java SE: https://es.wikipedia.org/wiki/Java_SE
Java EE: https://es.wikipedia.org/wiki/Java_EE
Java ME: https://es.wikipedia.org/wiki/Java_Micro_Edition
Applets: https://es.wikipedia.org/wiki/Applet_Java
Aplicaciones Web: https://es.wikipedia.org/wiki/Aplicaci%C3%B3n_web