> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud1-introduccion-a-programacion/introducion-a-java/edicions-e-versions-de-java.md).

# Edicións e versións de Java

Existen varias edicións diferentes da plataforma Java, cada unha deseñada para distintos propósitos e tipos de aplicacións.

**Java SE (Standard Edition)**

* **Propósito**: É a edición estándar de Java, utilizada para desenvolver aplicacións de escritorio e programas que se executan en servidores.
* **Compoñentes**: Inclúe as bibliotecas básicas de Java, como `java.lang`<i class="fa-copy">:copy:</i>, `java.util`<i class="fa-copy">:copy:</i>, `java.io`<i class="fa-copy">:copy:</i>, entre outras.
* **Usos Comúns**: Aplicacións de escritorio, utilidades, programas de consola e bibliotecas de clases.
* **Exemplo**: Aplicacións de escritorio como editores de texto ou xogo simples.

**Java EE (Enterprise Edition)**

* **Propósito**: É unha extensión de Java SE, deseñada para desenvolver aplicacións empresariais a gran escala. Proporciona funcionalidades adicionais para a creación de servizos web, servidores de aplicacións, e sistemas distribuídos.
* **Compoñentes**: Inclúe bibliotecas e APIs específicas, como Servlets, JavaServer Pages (JSP), Enterprise JavaBeans (EJB), Java Persistence API (JPA), entre outras.
* **Usos Comúns**: Aplicacións web, servizos empresariais, sistemas de xestión de contido e aplicacións que requiren alta escalabilidade.
* **Exemplo**: Aplicacións web que xestionan datos de clientes ou sistemas de reservas.

**Java ME (Micro Edition)**

* **Propósito**: É unha versión reducida de Java, deseñada para dispositivos de recursos limitados, como teléfonos móbiles, dispositivos embebidos e sistemas en tempo real.
* **Compoñentes**: Inclúe un subconxunto de bibliotecas de Java SE adaptadas para dispositivos con menor capacidade de memoria e procesamento.
* **Usos Comúns**: Aplicacións móbiles, dispositivos embebidos, e aplicacións que funcionan en ambientes de recursos limitados.
* **Exemplo**: Aplicacións para teléfonos antigos ou dispositivos IoT (Internet das Cousas).

#### 1.1.1. Versións de Java<i class="fa-link">:link:</i> <a href="#id-111-versions-de-java" id="id-111-versions-de-java"></a>

O lanzamento oficial de Java aconteceu en 1995, cando Sun Microsystems lanzou a primeira versión pública, Java 1.0.

<i class="fa-fw">:fw:</i> Versión LTS

Unha **versión LTS (Long-Term Support)** de Java é unha versión que recibe **soporte a longo prazo** por parte de Oracle e outros provedores. Estas versións están deseñadas para ser máis estables e recibir actualizacións de seguridade e correccións de erros durante un período prolongado, xeralmente entre 8 e 11 anos, sen requirir actualizacións constantes a novas versións.

Unha versión **LTS é a elección ideal** para organizacións que buscan estabilidade, soporte prolongado e seguridade sen a necesidade de estar constantemente actualizando o seu software.

Java ten unha longa historia de versións, cada unha traendo melloras, novas funcionalidades e optimizacións. A continuación, faise un **repaso polas principais versións de Java** e as súas características destacadas:

* **Java 1.0 (1996)**
  * **Primeira versión estable** de Java.
  * Introduciu os conceptos básicos de **orientación a obxectos** e a **Máquina Virtual de Java (JVM)**.
  * Contiña funcionalidades básicas como `applets`<i class="fa-copy">:copy:</i> (programas executados en navegadores web), **fíos (*****threads*****)** e **manexo de excepcións**.
* **Java 1.1 (1997)**
  * Introduciu **JavaBeans**, un modelo de compoñentes reutilizables.
  * Soporte para **RMI** (*Remote Method Invocation*), que permite invocar métodos en obxectos remotos.
* **Java 1.2 (1998)**
  * Lanzamento da plataforma **Java 2 Standard Edition (J2SE)**.
  * Introdución do **Swing**, unha nova biblioteca gráfica para interfaces de usuario, mellorando significativamente a experiencia gráfica.
  * Incorporación de **Coleccións** (List, Set, Map).
* **Java 1.3 (2000)**
  * Introdución do **Java Naming and Directory Interface (JNDI)**.
* **Java 1.4 (2002)**
  * Engadiu `assertions`<i class="fa-copy">:copy:</i> para mellorar a depuración.
  * Introdución das **expresións regulares**.
* **Java 5 (2004)**
  * Cambia o nome a **Java 5**, abandonando o esquema numérico de 1.x.
  * **Enum Types** para traballar con conxuntos predefinidos de constantes.
  * **For-each loop** para simplificar o percorrido de *arrays* e coleccións.
* **Java 6 (2006)**
  * Melloras na integración con **Web Services**.
  * Introdución de **JDBC 4.0** para xestionar bases de datos.
* **Java 7 (2011)**
  * Melloras na estrutura `switch`<i class="fa-copy">:copy:</i> con cadeas.
  * **NIO.2** con melloras no sistema de arquivos e na xestión de I/O.
* **Java 8 (2014)**
  * Versión **LTS**.
  * **Lambdas** e **Streams API**, permitiron a programación funcional en Java.
  * **Interface predeterminada (Default Methods)**, permitiu engadir métodos predeterminados en interfaces.
* **Java 9 (2017)**
  * Melloras en **Streams**.
* **Java 10 (2018)**
  * Introduciu a palabra clave **var** para a inferencia de tipos en variables locais.
  * **API Immutable Collections**, mellorou a creación de coleccións inmutables.
* **Java 11 (2018)**
  * Lanzamento **LTS** tras Java 8.
  * Eliminación de funcionalidades obsoletas, como os **applets**.
* **Java 12 (2019)**
  * **Switch Expressions**, mellora na sintaxe do `switch`<i class="fa-copy">:copy:</i>, permitindo usalo como expresión.
* **Java 13 (2019)**
  * **Text Blocks**, que permiten escribir cadeas de texto en varias liñas de maneira máis sinxela.
* **Java 14 (2020)**
  * Introdución de **Records**, unha forma simplificada de definir clases inmutables.
* **Java 15 (2020)**
  * Introdución de **Sealed Classes**, permitindo controlar a herdanza en clases.
  * **Hidden Classes**, usadas principalmente en *frameworks* e bibliotecas para xerar clases en tempo de execución.
* **Java 17 (2021)**
  * Novo lanzamento **LTS** tras Java 11.
* **Java 18 (2022)**
  * Introdución de **Simple Web Server** para facilitar o desenvolvemento e probas de aplicacións web.
* **Java 19 (2022)**
  * Introdución de características experimentais para mellorar a programación paralela e concorrente, como **Project Loom**.
* **Java 20 (2023)**
  * Melloras do proxecto **Panamá OpenJDK** que permite que os programas Java interoperen con código e datos fora do tempo de execución de Java.
* **Java 21 (Setembro de 2023)**
  * **Última versión LTS**. Mínimo terá soporte ata setembro de 2026.
* **Java 22 (Marzo de 2024)**
  * Mellora na API de Streams.
  * Melloras de rendemento.
* **Java 23 (Setembro de 2024)**
  * Introduce unha serie de innovacións a nivel de linguaxe, tempo de execución, bibliotecas e ferramentas.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud1-introduccion-a-programacion/introducion-a-java/edicions-e-versions-de-java.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
