Introducció

Java 9 va introduir una sèrie de novetats i millores significatives que han continuat evolucionant en les versions posteriors. Aquest tema cobreix les característiques clau de Java 9 i les millores que s'han anat afegint en les versions següents fins a l'actualitat.

Continguts

  1. Sistema de Mòduls de Java (Project Jigsaw)
  2. Millores en l'API de Fluxos (Streams)
  3. Interfície de Mètodes Privats
  4. Millores en la Consola JShell
  5. API de Processos
  6. Millores en la Gestió de Memòria
  7. Característiques de Java 10 i Més Enllà
  8. Exercicis Pràctics

  1. Sistema de Mòduls de Java (Project Jigsaw)

Explicació

El sistema de mòduls de Java, introduït en Java 9, permet dividir el codi en mòduls que poden ser gestionats de manera independent. Això millora la mantenibilitat i la seguretat del codi.

Exemples Pràctics

Definició d'un Mòdul

// module-info.java
module com.example.myapp {
    requires java.base;
    exports com.example.myapp;
}

Ús d'un Mòdul

// com/example/myapp/Main.java
package com.example.myapp;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, Java 9 Modules!");
    }
}

Exercici

  1. Crea un mòdul anomenat com.example.helloworld que contingui una classe HelloWorld amb un mètode main que imprimeixi "Hello, World!".

  1. Millores en l'API de Fluxos (Streams)

Explicació

Java 9 va introduir noves operacions a l'API de fluxos, com takeWhile, dropWhile i ofNullable.

Exemples Pràctics

takeWhile i dropWhile

import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9);
        
        List<Integer> taken = numbers.stream()
                                     .takeWhile(n -> n < 5)
                                     .collect(Collectors.toList());
        System.out.println(taken); // Output: [1, 2, 3, 4]

        List<Integer> dropped = numbers.stream()
                                       .dropWhile(n -> n < 5)
                                       .collect(Collectors.toList());
        System.out.println(dropped); // Output: [5, 6, 7, 8, 9]
    }
}

Exercici

  1. Utilitza takeWhile i dropWhile per processar una llista de números i filtrar els elements segons una condició.

  1. Interfície de Mètodes Privats

Explicació

Java 9 permet definir mètodes privats dins d'interfícies, millorant la reutilització de codi dins de les interfícies.

Exemples Pràctics

public interface MyInterface {
    default void defaultMethod() {
        privateMethod();
    }

    private void privateMethod() {
        System.out.println("This is a private method in an interface.");
    }
}

Exercici

  1. Crea una interfície amb un mètode privat i un mètode per defecte que cridi al mètode privat.

  1. Millores en la Consola JShell

Explicació

JShell és una eina interactiva de línia de comandes per a Java, introduïda en Java 9, que permet provar codi de manera ràpida.

Exemples Pràctics

Inici de JShell

jshell

Executar Codi en JShell

jshell> int x = 10;
x ==> 10

jshell> System.out.println(x * 2);
20

Exercici

  1. Inicia JShell i prova diferents fragments de codi per familiaritzar-te amb l'eina.

  1. API de Processos

Explicació

Java 9 va millorar l'API de processos, permetent una millor gestió i control dels processos del sistema operatiu.

Exemples Pràctics

import java.io.IOException;

public class ProcessExample {
    public static void main(String[] args) throws IOException {
        ProcessBuilder processBuilder = new ProcessBuilder("notepad.exe");
        Process process = processBuilder.start();
        System.out.println("Process ID: " + process.pid());
    }
}

Exercici

  1. Utilitza l'API de processos per iniciar una aplicació del sistema operatiu i obtenir el seu ID de procés.

  1. Millores en la Gestió de Memòria

Explicació

Java 9 va introduir millores en la gestió de memòria, com el Garbage Collector G1 per defecte i l'optimització de l'ús de memòria.

Exemples Pràctics

Configuració del Garbage Collector

java -XX:+UseG1GC -jar myapp.jar

Exercici

  1. Investiga les opcions de configuració del Garbage Collector i prova diferents configuracions en una aplicació Java.

  1. Característiques de Java 10 i Més Enllà

Explicació

Les versions posteriors a Java 9 han continuat afegint noves característiques i millores. Algunes de les més destacades són:

  • Java 10: var per inferència de tipus local.
  • Java 11: API HTTP Client, millores en la gestió de cadenes.
  • Java 12: Millores en el Garbage Collector, switch expressions (preview).
  • Java 13: Blocs de text (preview).
  • Java 14: switch expressions, records (preview).
  • Java 15: sealed classes (preview).
  • Java 16: records, pattern matching per a l'operador instanceof.
  • Java 17: sealed classes, millores en el Garbage Collector.

Exemples Pràctics

var en Java 10

var message = "Hello, var!";
System.out.println(message);

switch Expressions en Java 14

public class SwitchExample {
    public static void main(String[] args) {
        int day = 3;
        String dayName = switch (day) {
            case 1 -> "Monday";
            case 2 -> "Tuesday";
            case 3 -> "Wednesday";
            case 4 -> "Thursday";
            case 5 -> "Friday";
            case 6 -> "Saturday";
            case 7 -> "Sunday";
            default -> "Invalid day";
        };
        System.out.println(dayName);
    }
}

Exercici

  1. Utilitza var per declarar variables en un programa Java.
  2. Implementa una expressió switch en un programa Java.

  1. Exercicis Pràctics

Exercici 1: Crear un Mòdul

  1. Crea un projecte modular amb un mòdul anomenat com.example.module.
  2. Defineix una classe ModuleExample dins del mòdul que imprimeixi un missatge.

Exercici 2: Utilitzar takeWhile i dropWhile

  1. Crea una llista de números i utilitza takeWhile per obtenir els números menors que 10.
  2. Utilitza dropWhile per obtenir els números majors o iguals a 10.

Exercici 3: Interfície amb Mètode Privat

  1. Defineix una interfície amb un mètode privat i un mètode per defecte que cridi al mètode privat.
  2. Implementa la interfície en una classe i crida al mètode per defecte.

Exercici 4: JShell

  1. Inicia JShell i prova diferents fragments de codi, com declaracions de variables, expressions i crides a mètodes.

Exercici 5: API de Processos

  1. Utilitza l'API de processos per iniciar una aplicació del sistema operatiu i obtenir el seu ID de procés.

Conclusió

Java 9 va introduir moltes millores significatives que han continuat evolucionant en les versions posteriors. Comprendre aquestes novetats i saber com utilitzar-les és essencial per mantenir-se al dia amb les millors pràctiques de programació en Java. Els exercicis pràctics proporcionats t'ajudaran a consolidar els coneixements adquirits i a aplicar-los en projectes reals.

Curs de Programació en Java

Mòdul 1: Introducció a Java

Mòdul 2: Flux de Control

Mòdul 3: Programació Orientada a Objectes

Mòdul 4: Programació Orientada a Objectes Avançada

Mòdul 5: Estructures de Dades i Col·leccions

Mòdul 6: Gestió d'Excepcions

Mòdul 7: Entrada/Sortida de Fitxers

Mòdul 8: Multithreading i Concurrència

Mòdul 9: Xarxes

Mòdul 10: Temes Avançats

Mòdul 11: Frameworks i Llibreries de Java

Mòdul 12: Construcció d'Aplicacions del Món Real

© Copyright 2024. Tots els drets reservats