Introducción al lenguaje Java

En este tema se intenta dar una visión general del lenguaje de programación java. Empezamos con un poco de historia y seguimos con sus características más importantes.



1. EL LENGUAJE DE PROGRAMACIÓN JAVA

El origen del lenguaje de programación Java se sitúa en el año 1991. 
 
Un grupo de ingenieros liderados por James Gosling trabajaban en un proyecto para la empresa Sun Microsystems. Este grupo de ingenieros era conocido como el Green Team y al proyecto lo llamaron The Green Project.
 
El propósito de este proyecto era desarrollar software para programar pequeños dispositivos electrónicos: electrodomésticos y otros aparatos electrónicos de consumo.

Cada uno de estos dispositivos tenía un software específico incompatible entre ellos. 

 
El objetivo del proyecto de Gosling era crear un único software que se pudiera aplicar a cualquier dispositivo compatible sin necesidad de modificar y recompilar el código para cada uno de ellos.  
 
El objetivo de Sun era crear un lenguaje independiente del dispositivo.
 

Los lenguajes de programación existentes como C ó C++ no servían para ese propósito. En estos lenguajes los programas son dependientes del dispositivo. Esto quiere decir que solo pueden ejecutarse en un tipo de dispositivo concreto y deben ser modificados y compilados de nuevo para que se puedan ejecutar en dispositivos diferentes.

Por este motivo Gosling y su equipo crearon un nuevo lenguaje con las características básicas de C/C++ pero que fuera capaz de crear aplicaciones independientes de la arquitectura en la que se ejecutaran.
 
Inicialmente este nuevo lenguaje se llamó Oak (Roble) pero tuvieron que cambiarle el nombre porque Oak ya era una marca registrada y pasó a llamarse Green.
 
A pesar de lo innovador del proyecto, este nuevo lenguaje para pequeños dispositivos no tuvo demasiado éxito probablemente porque los equipos en los que se tenía que implementar no eran lo suficientemente potentes para poder utilizarlo así que Sun decidió aparcar el proyecto.
 
Este fracaso coindició en el tiempo con algo que hizo que Internet, que hasta el momento no estaba muy extendida, diera un salto de gigante.
 
Hasta ese momento la navegación por internet se hacía mediante navegadores como el WordWideWeb llamado después Nexus para evitar confuciones y no llamarlo igual que como era conocida internet en ese momento. Este navegador permitía visitar sitios web en modo texto.
 

Pero en abril de 1993 se crea el
navegador gráfico Mosaic.

Este navegador gráfico se podía utilizar en sistemas Unix, Windows y Mac y revolucionó la forma de navegación entre los hiperenlaces que en ese momento formaban Internet y esto hizo que la web se popularizara. Fue el primer navegador parecido a los navegadores que conocemos ahora.


Ante el auge que estaba experimentando internet, donde cada vez más usuarios hacían uso de ella gracias al navegador Mosaic, los desarrolladores de Sun se dieron cuenta de que todo el trabajo que habían realizado en el proyecto para desarrollar un lenguaje que se pudiera implementar en pequeños dispositivos se podía adaptar y dirigir ahora a desarrollar un lenguaje para ser ejecutado en cualquier ordenador de Internet.

Básicamente Internet es una gran red mundial que conecta ordenadores con distintos sistemas operativos y distintas arquitecturas.

De esta forma, aunque inicialmente no estaba pensado para aplicaciones en Internet, el equipo de Gosling continuó con el desarrollo del nuevo lenguaje pero ahora orientado a conseguir un lenguaje que permitiera crear aplicaciones que se pudieran ejecutar en cualquier ordenador de Internet sin importar su sistema operativo ni su arquitectura.

Nuevo Objetivo: Crear un lenguaje multiplataforma que se pudiera ejecutar en cualquier ordenador independientemente de su arquitectura o sistema operativo.
 
En 1995 el lenguaje pasa a llamarse Java.




Dice la leyenda que Java debe su nombre a la cantidad de tazas de café que consumieron sus creadores durante el proceso.

Java revolucionó Internet cuando creó un nuevo tipo de programa en red llamado Applet.

Un applet es un programa que se ejecuta dentro de un navegador web. A diferencia de un programa normal, un applet no puede ejecutarse de forma independiente. Cuando el navegador carga la página que contiene un applet, éste se descarga y comienza a ejecutarse. Esto permite crear programas que cualquier usuario puede ejecutar independientemente de la arquitectura y sistema operativo del ordenador donde se ejecute. Los applets se utilizan para mostrar datos proporcionados por el servidor, manejar los datos de entrada del usuario, proporcionar aplicaciones simples como una calculadora, etc.

Ese mismo año, 1995, Gosling y su equipo lanzan el navegador HotJava.

HotJava era un clon de Mosaic pero con una gran diferencia: soportaba applets de Java.

Este nevegador fue la plataforma que utilizó Sun para demostrar todo el potencial de la nueva tecnología y ayudó a que Java se popularizara.

Pronto muchos programadores se interesaron por el nuevo lenguaje y empezaron a desarrollar applets Java.

 

En 1996 Sun Microsystems creó
JavaSoft, un grupo empresarial dedicado exclusivamente al desarrollo del lenguaje Java.

En 1997 Netscape anunció que la versión 2.0 de su navegador Netscape Navigator soportaría applets de Java.  Este fue el impulso final que hizo que grandes compañías como IBM o SGI se interesaran por Java.
 

El eslogan que Sun popularizó sobre el lenguaje Java fue:

Write Once, Run Anywhere

También conocido con sus iniciales WORA. Esto quiere decir que un programa Java se escribe una vez y se puede ejecutar en cualquier plataforma sin tener que ser modificado ni recompilado.

Java logró convertirse en un lenguaje multiplataforma.

En 2010 Oracle compró Sun Microsystems por 7.400 millones de dólares.

Java ha continuado su evolución añadiendo nuevas características para la programación web como los JSP y Servlets, los EJBs para el desarrollo de aplicaciones empresariales e introdujo además las clases necesarias para la programación de dispositivos móviles.

En la actualidad existen tres distribuciones principales de Java:

  • J2SE (Java Platform Standard Edition). Es la versión estándar de Java y es la base de las otras distribuciones. Contiene todos los fundamentos básicos del lenguaje. Está orientada al desarrollo de aplicaciones de escritorio.
  • J2EE (Java Platform Enterprise Edition). Utiliza muchos de los componentes de J2SE y añade nuevas funcionalidades. Está orientada al desarrollo de servicios web, networking, aplicaciones en el lado del servidor y aplicaciones basadas en la web. Es uno de los estándares para el desarrollo de aplicaciones web.
  • J2ME (Java Platform Micro Edition). Esta distribución de Java está orientada a la programación de dispositivos móviles, dispositivos inalámbricos y pequeños dispositivos.

La máquina virtual de Java

La gran innovación que introdujo Java respecto a los demás lenguajes de programación existentes que hizo posible que un programa funcionara en cualquier plataforma, fue la creación de la Java Virtual Machine o Máquina Virtual Java.

Normalmente un programa escrito en un lenguaje de programación (código fuente) se debe traducir a un lenguaje entendible por la máquina (código máquina o ejecutable).

La traducción la realiza un programa traductor, generalmente un compilador.
 



 
Este código máquina o código ejecutable es distinto para cada arquitectura.
 
Ordenadores con sistemas operativos y/o hardware distintos tienen distinto código máquina.
 

Si cambia el código fuente hay que realizar una compilación para cada tipo de arquitectura donde ese vaya a ejecutar el programa. 

Para eliminar la dependencia de la máquina:

  • En Java un programa no se traduce directamente a código ejecutable.  
  • Un programa Java se compila y se obtiene un código intermedio llamado bytecode
  • El bytecode lo interpreta la Máquina Virtual de Java (JVM Java Virtual Machine) y obtiene el código ejecutable.
 

La máquina virtual de Java se distribuye gratuitamente para prácticamente todos los sistemas operativos.
 
Un archivo .class (bytecode) se puede ejecutar en cualquier ordenador que tenga instalada la máquina virtual java.


El programa Java se compila una única vez y el fichero bytecode que se obtiene se procesa por la máquina virtual de Java instalada en cualquier plataforma (Windows, Linux, MacOS, etc).

 

De esa forma Java logra ser un lenguaje que no depende de una arquitectura específica.

La JVM forma parte del JRE (Java Runtime Environment) o entorno de ejecución de Java.

2. CARACTERÍSTICAS DEL LENGUAJE JAVA

SIMPLE
 
El estilo de programación es simple y el código es fácil de entender. La sintaxis es similar a la de C++ y a la de otros lenguajes como C, C#, PHP… , por lo que si se conoce alguno de estos lenguajes se facilita su aprendizaje. Además, cuando sabemos Java se puede aprender uno de estos lenguajes con mayor facilidad.
 
Aunque la sintaxis sea similar a C++ elimina algunas de las características más conflictivas de este lenguaje:
  • No hay punteros.
  • No hay sobrecarga operadores.
  • No permite la herencia múltiple.
  • No hay necesidad de liberar memoria manualmente. La gestión de memoria dinámica se hace automáticamente (recolector de basura).
COMPILADO E INTERPRETADO
 
Normalmente un lenguaje es compilado o interpretado. Java es ambas cosas. El código fuente se compila para obtener los bytecodes y posteriormente la máquina virtual interpreta esos bytecodes y los convierte en código máquina.
 
MULTIPLATAFORMA

Java es independiente de la plataforma y puede ejecutarse en cualquier máquina que tenga instalada la máquina virtual de java.
 
ORIENTADO A OBJETOS

Es un lenguaje orientado a objetos por lo que facilitará el diseño y mantenimiento de programas grandes.

ROBUSTO

Es capaz de manejar errores en tiempo de ejecución mediante el controlador de excepciones.

Utiliza un recolector de basura para eliminar de la memoria todos los objetos que ya no se usan quitando esa responsabilidad al programador.

Java es un lenguaje fuertemente tipado. Cuando se declara una variable hay que indicar de qué tipo es y este tipo ya no podrá cambiar durante la ejecución del programa. Además realiza la comprobación de tipos en cualquier operación avisando si intervienen tipos incompatibles lo que hace que se eviten errores de cálculo.

No hay punteros por lo que no se puede acceder de forma directa a la memoria del ordenador
.
 
MULTITAREA

Permite crear programas con varios hilos (threads) de ejecución. Esto quiere decir que puede ejecutar diferentes líneas de código al mismo tiempo lo que permite aprovechar las características de los procesadores con múltiples núcleos. Los hilos son importantes en programación multimedia, aplicaciones web, etc.

 
3. HISTORIAL DE VERSIONES JAVA

La primera versión de Java, llamada JDK 1.0, se lanzó en enero de 1996.

Desde la primera versión Java ha experimentado numerosos cambios, así como un enorme incremento en el número de clases y paquetes que componen la biblioteca estándar.

En diciembre de 1998 se lanza la versión J2SE 1.2 bajo el nombre de Java 2.

A partir de la versión 1.6 se deja de utilizar J2SE para llamarse Java SE 6, Java SE 7... 

Cada versión tiene varias revisiones, por ejemplo la versión 1.6.7 del JDK hace referencia a la revisión 7 de la versión 6. 

A partir de Java 9 (2017) aparece una nueva versión de java cada 6 meses.

Puedes consultar todo el historial de versiones en este enlace: Historial de versiones Java

A pesar de la aparición de versiones más nuevas, Java 8 sigue siendo la más utilizada en la actualidad (60% de uso en 2023), la siguiente versión Java más utilizada es Java 11 y por último Java 17.

A partir de Java 11 además se produce un cambio radical en la licencia de uso. Antes de Java 11 se podía descargar el JDK, programar y poner las aplicaciones en producción sin tener que pagar nada. A partir de Java 11 hay que pagar una licencia mensual a Oracle si queremos utilizarlo para poner aplicaciones en producción.
Esto no afecta a versiones anteriores. Las versiones 8, 9 o 10 sigue siendo gratuitas.  
 

 
4.  ¿Qué necesito para programar en Java?

Básicamente necesitamos dos cosas:

1. El JDK (Java Development Kit o Kit de Desarrollo en Java). Es el software que nos permite crear aplicaciones Java de distintos tipos. Es lo primero que debemos tener instalado en nuestro ordenador. El JDK incluye:
  • El JRE (Java Runtime Environment). Es la máquina virtual de Java que traduce el bytecode a código ejecutable.
  • El compilador de Java. Es el encargado de convertir nuestro código fuente a bytecode.
  • API de Java (Application Programming Interface). Contiene todos los paquetes, clases e interfaces del lenguaje Java. Es el código que proporciona Java para que el programador desarrolle sus propias aplicaciones.
Puedes descargar el JDK desde la página de Oracle: Descarga JDK
 
2. Un IDE (Integrated Development Environment) también conocido como entorno de desarrollo. 
 
Aunque podemos programar con un editor de texto plano tipo bloc de notas o similar, los entornos de desarrollo son herramientas software que facilitan al programador el desarrollo de los programas.

Entre otras muchas funciones, un entorno de desarrollo contiene distintas herramientas en una sola interfaz gráfica. Generalmente contiene:
  • Un editor de texto que ayuda a escribir el código resaltando la sintaxis con indicaciones visuales, autocompletado de instrucciones, comprobación de errores de sintaxis mientras se escribe el código, etc.
  • Un depurador que sirve para probar un programa y buscar la ubicación de errores en el código.
  • Herramientas para compilar y ejecutar el programa.
Mediante un IDE el desarrollador de aplicaciones puede escribir, compilar y ejecutar programas de forma sencilla.

Algunos de los IDEs más utilizados para programar en Java son: Eclipse, NetBeans e IntelliJ Idea.
 
5. DOCUMENTACIÓN: API DE JAVA

En http://www.oracle.com/technetwork/java/index.html se encuentra la documentación oficial de Java.
La más interesante es la documentación del API de Java.

Se puede descargar la documentación en un archivo zip. De esta forma no dependeremos de la conexión a Internet para consultar la documentación oficial. Esto se puede realizar de la página de descarga

6. ENTORNOS DE DESARROLLO PARA JAVA

El kit de desarrollo básico proporcionado por Oracle es lo mínimo que se necesita para desarrollar un programa en Java. Es útil si se necesita compilar aplicaciones Java de manera esporádica

Sin embargo, la escritura y compilación de programas hecha de esta forma es un poco incomoda. Por ello numerosas empresas fabrican sus propios entornos de edición, algunos incluyen el compilador y otras utilizan el propio JDK de Oracle.

Algunas ventajas que ofrecen son:

- Facilidades para escribir código.
- Facilidades de depuración.
- Facilidad de configuración del sistema.
- Facilidades para organizar los archivos de código.
- Facilidad para exportar e importar proyectos

Los entornos de desarrollo para Java más populares en la actualidad son:

NETBEANS

Uno de los IDE Java más populares. Es un entorno gratuito de código abierto para la generación de código en diversos lenguajes.
Contiene prácticamente todo lo que se suele pedir a un entorno de desarrollo, editor avanzado de código, depurador, diversos lenguajes, extensiones de todo tipo, etc.
Incluye además un servidor de aplicaciones Tomcat para probar aplicaciones de servidor.
Consume bastantes recursos. Tiene una arquitectura extensible con módulos específicos para desarrollo web, aplicaciones móviles, diseño UML, etc.
Puede obtenerse gratuitamente de https://netbeans.apache.org/



ECLIPSE

Junto a NetBeans, el entorno de desarrollo Java gratuito más utilizado Es un entorno completo de código abierto.
También permite el desarrollo en C++ y otros lenguajes de programación.
Puede descargarse en http://www.eclipse.org/

IntelliJ IDEA

Entorno de desarrollo completo creado por JetBrains para la creación de software y está disponible en dos versiones, una versión para la comunidad y otra versión comercial. 
https://www.jetbrains.com/idea/



5 comentarios:

  1. Iniciándome con Java y este blog es muy sencillo y fácil de entender, gracias!!

    ResponderEliminar
  2. ¡Gracias! Estoy aprendiendo apenas a programar en un curso, primero nos dieron Python y si bien ayuda a la introducción pero siento que es muy desordenado. Me he enamorado de Java y, buscando ejercicios, me he topado con tu blog. Excelente.
    Reitero mis agradecimientos, me ayudará muchísimo en mi formación.

    ResponderEliminar