===== Introducción a la plataforma Java =====
{{ java-logo.png?100 }}
==== La plataforma Java ====
{{ java_overview.png?400 }}
La plataforma Java
=== Características principales ===
* Lenguaje de propósito general
* Lenguaje Orienta a Objetos
* Multiplataforma
* Lenguaje interpretado (por su máquina virtual) pero es compilado previamente
* Además del lenguaje, se proporciona toda una plataforma sobre la que se puede desarrollar (incluso con otros lenguajes)
=== Componentes principales ===
* El compilador de Java (javac)
* La máquina virtual de Java (JVM)
==== La máquina virtual (JVM: Java Virtual Machine) ====
Los principales componentes de la Java Virtual Machine son:
* **Java Stack**: Zona de memoria donde se almacenan las llamadas a métodos y las variables locales y referenciadas
* **Java Heap**: Zona de memoria donde se almacenan los objetos creados
* **Garbage collector** (Recolector de basura): Se encarga de liberar aquellos objetos que ya no es necesario mantener en memoria (sin que el programador tenga que hacer nada)
{{ java_stack_heap.jpg?400 }}
Java stack / Java Heap
==== Kit de desarrollo/ Entorno de ejecución ====
=== JDK ===
* Compilador java (javac):
* La JVM y el comando java para ejecutar las aplicaciones
* Utilidad para empaquetar aplicaciones (jar): Biblioteca de clases
* Lo necesita cualquier programador que quiera desarrollar aplicaciones en lenguaje Java
=== JRE ===
* No incluye las herramientas javac y jar
* Lo necesita cualquier usuario que quiera ejecutar aplicaciones Java en su equipo
{{ jdk_jre.png?400 }}
Java stack / Java Heap
=== ¿Qué incluyen JDK y JRE? ===
{{ javase.jpg?600 }}
Java stack / Java Heap
==== Preparación del entorno de desarrollo ====
=== Software necesario ===
* **JDK**: [[ https://adoptium.net | Proyecto Adoptium]]
* **IDE**: [[https://www.jetbrains.com/idea/download|IntelliJ IDEA]] (Suficiente con la versión //Community//)
=== ¿Qué versión de Java debería descargarme? ===
{{ java-version-history.png }}
Java version history (Fuente: http://www.wikipedia.org)