Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].

Javaes un high- nivel, independiente de la plataforma, orientado a objetos, lenguaje de programación funcionaly entorno de tiempo de ejecución.

El lenguaje Java deriva gran parte de su sintaxis de C y C ++, pero su modelo de objetos es más simple que el de este último y tiene menos facilidades de bajo nivel. Las aplicaciones Java generalmente se compilan en bytecode(llamado archivos de clase) que pueden ser ejecutados por una JVM (Java Virtual Machine), independiente de la arquitectura de la computadora. La JVM a menudo compila aún más el código en el código de máquina nativo para optimizar el rendimiento.

La JVM gestiona la memoria con la ayuda de un recolector de basura (consulte garbage-collection) para manejar la eliminación de objetos de la memoria cuando los objetos ya no están en uso. La disciplina de escriturade Java es estática, fuerte, segura, nominativa y manifiesta. Java admite características como reflexióny la interfaz con C y C ++ a través de JNI (Java Native Interface).

Java está diseñado para tener la menor cantidad posible de dependencias de implementación, con la intención de permitir a los desarrolladores de aplicaciones escribir una vez, ejecutar en cualquier lugar, o a veces escriba una vez, ejecute en todas partes(el código que se ejecuta en una plataforma no necesita ser recompilado para ejecutarse en otra ) Java fue desarrollado originalmente por James Goslingen Sun Microsystems (que se fusionó completamente con Oracle Corporation el 27 de enero de 2010) y fue lanzado en 1995 como componente central de la plataforma Java de Sun Microsystems. Java comenzó como un proyecto llamado "Oak" por James Gosling en junio de 1991.

La plataforma Javaes el nombre dado por Sun (ahora Oracle) a los sistemas informáticos que han instalado herramientas para desarrollar y ejecutar Programas Java La plataforma presenta una amplia variedad de herramientas que pueden ayudar a los desarrolladores a trabajar eficientemente con el lenguaje de programación Java.

Para comenzar, descarga un Java Development Kit (JDK), que te permite desarrollar y ejecutar aplicaciones Java.

Fondo

La implementación de referencia principal de Java es de código abierto (OpenJDK) y está respaldada por las principales empresas, incluidas Oracle, Apple, SAP e IBM.

Muy pocas computadoras pueden ejecutar programas Java directamente. El software de Java a menudo se ejecuta en servidores. Las aplicaciones Java destinadas a ejecutarse directamente en los equipos cliente deben enviarse con sus propios instaladores. (Nota: antes de java9, pedías a los usuarios finales que instalaran un llamado JRE; sin embargo, este concepto ha quedado obsoleto).

Java se compila en bytecode, que luego la JVM compila en el código de máquina nativo. La compilación se realiza justo a tiempo(JIT). Inicialmente, esto se vio como un éxito en el rendimiento, pero las mejoras de compilación JVM y JIT han hecho que esto sea menos preocupante. En algunos casos, la JVM puede ser incluso más rápida que el código nativo compilado para apuntar a una versión anterior de un procesador por razones de compatibilidad con versiones anteriores. Desde Java 9, se puede compilar antes de tiempo(AOT).

Versiones

Las versiones notables de Java, los nombres de código (entre corchetes []) y las fechas de lanzamiento (entre paréntesis) incluyen:

Java SE 15        [JSR 390]    (September 15, 2020)
Java SE 14        [JSR 389]    (March 17, 2020)
Java SE 13        [JSR 388]    (September 17, 2019)
Java SE 12        [JSR 386]    (March 19, 2019)
Java SE 11        [JSR 384]    (September 25, 2018)
Java SE 10        [JSR 383]    (March 20, 2018)
Java SE 9         [JSR 376]    (September 21, 2017)
Java SE 8 (1.8)   [JSR 337]    (March 18, 2014)
Java SE 7 (1.7)   [Dolphin]    (July 28, 2011)
Java SE 6 (1.6)   [Mustang]    (December 11, 2006)
J2SE 5.0 (1.5)    [Tiger]      (September 29, 2004)
J2SE 1.4          [Merlin]     (February 13, 2002)
J2SE 1.3          [Kestrel]    (May 8, 2000)
J2SE 1.2          [Playground] (December 4, 1998)
JDK 1.1                        (February 19, 1997)
JDK 1.0                        (January 23, 1996)
JDK Beta                       (1995)

Desde Java SE 10, se lanzarán nuevas versiones cada seis meses.

Últimas versiones estables:

Java Standard Edition 15 (15.0.1) - (October 20, 2020)
Java Standard Edition 14 (14.0.2) - (July 14, 2020)
Java Standard Edition 13 (13.0.2) - (January 14, 2020)
Java Standard Edition 12 (12.0.2) - (July 16, 2019)
Java Standard Edition 11 (11.0.9) - (October 20, 2020)
Java Standard Edition 10 (10.0.2) - (July 17, 2018)
Java Standard Edition 9 (9.0.4) - (January 16, 2018)
Java Standard Edition 8 Update 271 (1.8.0_271) - (October 20, 2020)
Java Standard Edition 7 Update 80 (1.7.0_80) - (April 14, 2015)

Para obtener más nombres de código y fechas de lanzamiento, visite Nombres de código de Java SE. Para ver las notas de la versión de cada versión del JDK, visite el artículo de Wikipediasobre el historial de versiones de Java.

Para obtener un JDK de Java y poder desarrollar (o ejecutar) código Java en su máquina, necesita un proveedor de paquetes de instalación de Java. Java es de código abierto, pero un proveedor se encargará de compilar el código fuente de Java en un binario, incluirlo en un instalador y mantener esta versión en su máquina (por ejemplo, con actualizaciones de seguridad).

Java viene en versiones LTS (Long-Term-Support) y no LTS. Cada proveedor elige cómo tratar con las versiones LTS. Algunos (Oracle OpenJDK) tienen la misma ventana de soporte breve para todas las versiones, LTS o no. Algunos (Amazon Coretto) no se molestan en lanzar versiones que no sean LTS. La mayoría de los proveedores lanzan todas las versiones y serán compatibles con las versiones LTS durante mucho más tiempo.

Las versiones de LTS son: Java 8, 11 y 17.

Los principales proveedores son:

  • AdoptOpenJDK, también conocido como Adoptium - free, versiones LTS y versiones no LTS, las versiones LTS son compatibles durante mucho tiempo. Recomendado.
  • Oracle OpenJDK 15: tenga en cuenta que solo se admiten durante 6 meses, incluso las denominadas versiones LTS (Long Term Support). Deberá actualizar como actualizaciones de Java.
  • Oracle JavaSE: con licencia para quienes deseen soporte comercial. Versiones LTS y no LTS, las versiones LTS son compatibles durante mucho tiempo. Está disponible una versión de prueba gratuita pero con licencia muy restringida.
  • Amazon Coretto: gratuito, mantenido por Amazon, optimizado solo para AWS, versiones LTS.
  • Muchas más ofertas comerciales.

Las fechas Fin de las actualizaciones públicas(anteriormente llamadas Fin de la vida y también denominadas EoPU) para Las distribuciones disponibles gratuitamente de Oracle son:

Java SE 15 -  March 2020 for OpenJDK
Java SE 14 -  September 2020 for OpenJDK
Java SE 13 -  March 2020 for OpenJDK
Java SE 12 -  September 2019 for OpenJDK
Java SE 11 -  At least September 2022 for AdoptOpenJDK
Java SE 10 -  September 2018
Java SE 9  -  March 2018
Java SE 8  -  January 2019 (commercial user) | December 2020 (personal user)
Java SE 7  -  Apr 2015
Java SE 6  -  Feb 2013
J2SE 5.0   -  Oct 2009
J2SE 1.4   -  Oct 2008

Ayuda inicial

¿Eres nuevo en Java o necesitas ayuda para ejecutar tu primer programa Java? Consulte la sección Tutoriales de Oracle Java en Primeros pasos.

Antes de hacer una pregunta, busque para ver si se ha hecho antes (tenemos muchos duplicados, algunos se enumeran a continuación en Preguntas frecuentes) y lea Escribiendo la pregunta perfectapara aprender cómo hacer que Jon Skeet responda a su pregunta.

Convenciones de nombres

Los programas Java deben cumplir con las siguientes convenciones de nomenclaturapara aumentar la legibilidad y disminuir posibilidades de errores accidentales. Al seguir estas convenciones de nomenclatura, facilitará que otros entiendan su código y lo ayuden.

  • Los nombres de tipo (clases, interfaces, enumeraciones, etc.) deben comenzar con una letra mayúscula y poner en mayúscula la primera letra de cada palabra subsiguiente. Los ejemplos incluyen: String, ThreadLocal y NullPointerException. Esto a veces se conoce como PascalCase.
  • Los nombres de método y campo deben ser camelCased; es decir, deben comenzar con una letra minúscula y poner en mayúscula la primera letra de cada palabra subsiguiente. Ejemplos: indexOf, printStackTrace, interrupt.
  • Los nombres de expresiones constantes (static final objetos inmutables) deben escribirse en ALL_CAPS_SNAKE_CASE, con guiones bajos que separen cada palabra. Ejemplos: YELLOW, DO_NOTHING_ON_CLOSE. Esto también se aplica a los valores de una clase Enum. Sin embargo, las referencias static final a objetos no inmutables deben ser camelCased.

Hello World - Tu primer programa

Código de un programa típico de Hello World:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Compilación e invocación del programa Hello World:

javac -d . HelloWorld.java
java -cp . HelloWorld

El código fuente de Java se compila en una forma intermedia (instrucciones de código de bytes para la Java Virtual Machine) que se puede ejecutar con la {{ X0}} comando más adelante.

Más información:

IDEs útiles para Java

Recursos para principiantes

Compiladores en línea

Recursos actualizados día a día

Recursos avanzados

Java frameworks, bibliotecas y software

Libros y recursos de programación Java

Preguntas frecuentes

La gente a menudo pregunta sobre los siguientes temas de Java:

General:

Classpath:

String, StringBuilder y toString:

equals y hashCode:

API de Java Platform SE:

Genéricos:

Clases y objetos:

Aritmética y conversiones:

Depuración

Thread y subprocesos múltiples:

Interactuando con el sistema operativo:

(Editores, solo enumere las preguntas que realmente se hacen con frecuencia).

Salas de chat