Saltar a contenido

El lenguaje de programación Java

Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. Su creador, James Gosling, lo bautizó como Oak. Sun deseaba disponer de un lenguaje para programar pequeños dispositivos electrónicos (electrodomésticos y otros aparatos electrónicos de consumo). La dificultad de estos dispositivos es que cambian continuamente y para que un programa funcione en el siguiente dispositivo aparecido, hay que reescribir el código. Por eso Sun quería crear un lenguaje independiente del dispositivo.

En 1995, Oak pasa a llamarse Java. El lenguaje Java debe su nombre a un tipo de café. En EEUU se conoce como Java al café, y tomarse una taza de Java es tomarse una taza de café. De ahí que el logotipo oficial de Java es una taza humeante de café.

Evolución logo Java
Evolución logo Java

Desde su lanzamiento en 1995 Java se da a conocer al público y adquiere notoriedad rápidamente. Se comienza a hablar de Java y de sus applets. Un applet es un programa Java que se ejecuta en el contexto de una página web en cualquier ordenador independientemente de su Sistema Operativo y de la arquitectura de su procesador. El entorno de ejecución era relativamente seguro y los principales navegadores web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las páginas web, si bien es cierto que hoy en día ha decaído su uso.

Eslogan de Java

Write Once, Run Anywhere

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 móviles.

Nota

En este curso no veremos nada relacionado con JSP ni Servlets ni EJBs por no usarse en la actualidad más allá del mantenimiento que hace alguna empresa de soluciones pasadas.

En la actualidad existen tres distribuciones principales de Java:

  • Java SE (Java Platform, Standard Edition), anteriormente conocido como J2SE. 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.
  • Jakarta EE (Java Platform, Enterprise Edition), anteriormente conocido como Java EE y J2EE. 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.
  • Java ME (Java Platform, Micro Edition), anteriormente conocido como J2ME. 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 (JVM) o Máquina Virtual Java.

Evolución logo 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) y obtiene el código ejecutable.
Evolución logo Java

La máquina virtual de Java (o JVM) 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.

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

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. 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. Al no haber punteros, 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.

¿Qué necesito para programar en Java?

A la hora de empezar a programar en Java necesitamos:

  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.

    El entorno JDK funciona única y exclusivamente mediante comandos de consola:

    • javac Es el comando compilador de Java. Su sintaxis es: javac ejemplo.java La entrada de este comando ha de ser necesariamente un fichero que contenga código escrito en lenguaje Java y con extensión .java. El comando nos creará un fichero .class por cada clase que contenga el fichero Java.
    • java Es el intérprete de Java. Permite ejecutar aplicaciones que previamente hayan sido compiladas y transformadas en ficheros .class. Su sintaxis es: java ejemplo. No es necesario aquí suministrar la extensión del fichero, ya que siempre ha de ser un fichero .class.
  2. Un IDE (Integrated Development Environment). Los entornos de desarrollo son herramientas software que ayudan al programador el desarrollo de los programas avanzados. 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.
    • Un depurador que sirve para probar y depurar 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.

Actividades

  • AC 101 (RA1 / CE1a / IC1 / 3p) Crea un fichero llamado HolaMundo.java. Guarda el archivo "HolaMundo.java" en una ubicación de tu elección en tu sistema. Abre la terminal o línea de comandos de tu sistema operativo. Navega hasta la ubicación donde guardaste el archivo HolaMundo.java. Compila el fichero desde la consola o terminal usando el compilador de Java.

    Entrega

    Además de los ficheros, responde a las siguientes cuestiones:

    • a) ¿Se ha generado algún fichero extra al realizar el paso de compilación?, Si es así, ¿cómo se llama el fichero compilado?
    • b) ¿Qué incluye dicho fichero?
    • c) Si ahora quisiera ejecutar el programa HolaMundo desde otro sistema operativo ¿qué pasos tendría que realizar?

    Crea capturas de pantalla donde se vea el resultado de ejecutar el programa HolaMundo.

  • AC 102 (RA1 / CE1a / IC1 / 3p) Crea dos archivos Java, uno llamado Calculadora.java y otro MainApp.java, con el siguiente código:

    Calculadora.java
    public class Calculadora {
        public static int sumar(int a, int b){
            return a+b;
        }
        public static int restar (int a, int b){
            return a-b; 
        }
        public static int multiplicar (int a, int b){
            return a*b;
        }
        public static int dividir (int a, int b){
            if(b != 0){ 
                return a/b;
            }else{ 
                System.out.println("Error");
                return 0;
            }
        }
    }
    
    MainApp.java
    public class MainApp {
        public static void main(String[] args) {
            if (args.length != 3) {
                System.out.println("Uso incorrecto. Debes proporcionar dos números y una operación."); 
                System.out.println("Ejemplo: java MainApp 5 + 3");
                return;
            }
    
            int num1 = Integer.parseInt(args[0]); 
            String operacion = args[1];
            int num2 = Integer.parseInt(args[2]);
            int resultado = 0;
    
            switch (operacion) {
                case "+":
                    resultado = Calculadora.sumar(num1, num2); 
                    break;
                case "-":
                    resultado = Calculadora.restar(num1, num2); 
                    break;
                case "*":
                    resultado = Calculadora.multiplicar(num1, num2); 
                    break;
                case "/":
                    resultado = Calculadora.dividir(num1, num2); 
                    break;
                default:
                    System.out.println("Operación no válida. Las operaciones válidas son +, -, *, y /."); 
                    return;
            }
            System.out.println("Resultado: " + resultado); 
        }
    }
    

    Info

    Guarda ambos archivos en la misma ubicación. Abre la terminal o línea de comandos y navega hasta la ubicación donde guardaste los archivos. Compila ambos archivos Java Una vez que la compilación se complete sin errores, puedes ejecutar el programa MainApp con argumentos de línea de comandos.

    Por ejemplo, para sumar 5 y 3, escribe: java MainApp 3 + 5

    Entrega

    • a) Experimenta con diferentes operaciones (+, -, *, /) y números para ver cómo funciona la calculadora simple y realiza capturas de pantalla.
    • b) Mirando el código, ¿qué líneas de código contienen los números que se ejecutan por línea de comandos?
    • c) ¿Qué pasa cuando haces una operación que no existe? Realiza capturas de pantalla.
  • AR 103 (RA1 / CE1a / IC1 / 1p) Genera la clase Programa103.java, este programa ha de devolver un saludo con el nombre que se le pase por parámetro a través del terminal.

  • AR 104 (RA1 / CE1a / IC1 / 1p) Genera la clase Programa104.java, este programa ha de devolver el día que se le pase por parámetro a través del terminal.

  • AP 105 (RA1 / CE1a / IC1 / 3p) Escribe un nuevo programa Programa105.java que muestre el promedio de tres número, por ejemplo, se le pasa por terminal 9, 7 y 5 y ha de mostrar el promedio.

  • AP 106 (RA1 / CE1a / IC1 / 3p) Escribe un nuevo programa Programa106.java el cuadrado del número introducido, por ejemplo, se le pasa por terminal 9, debe devolver 81.