- Orientado a Objetos.
- Con características de lenguajes orientados a la programación funcional.
- Multiplataforma.
-
Java SE (Standard Edition)
- Base y sintaxis del lenguaje para desarrollar apps de escritorio y consola.
- Filosofía WORA (Write once run anywhere). Lo que aprendas en Java SE puedes llevarlo a Java EE y puede correr en cualquier SO.
-
Java EE (Enterprise Edition)
- Enfocado a apps web en servidores y distribuidas.
También conocido como SDK de Java, se compone de 3 elementos:
- JRE (Java Runtime Environment): VM de Java que permite interpretar el código en distintos SO (filosofía WORA).
- Compilador Java: traduce
Java
aByte Code
que finalmente será interpretado por laJVM
. - API de Desarrollo: base de elementos y clases listas para usar.
Es una colección de programas para ayudar a los programadores a compilar, ejecutar y depurar programas escritos en Java.
- Existen dos versiones LTS:
- Java SE 8 LTS (2014).
- Java SE 11 LTS (2018).
- LTS (Long Term Support) en Java consiste en soporte de hasta 3 años aproximadamente.
- Java SE 11 (JDK 11) es la primera versión en la que se cobra licencia. El JDK 11 de Oracle es gratuito solo en ambientes de desarrollo y testing.
- Desde la versión 6 existe un JDK open-souce (OpenJDK) mantenido por la comunidad.
- La versión 8 es la más utilizada y es la única versión LTS con licencia gratuita (soporte) por parte de Oracle. Este soporte gratuito es hasta fines de 2020 y a apartir de ahí el soporte se adquirirá con licencia pagada como en la versión 11 LTS.
Integración de dependencias:
- Maven
- Gradle
Frameworks Java EE:
- Spring
ORMs:
- Hibernate
- Netbeans
- Eclipse
- IntelliJ IDEA (más usado)
- Replit (online)
- Descargar e instalar IntelliJ IDEA.
- Descargar e instalar las versiones LTS 8 y 11 de OpenJDK.
- Crear un nuevo proyecto y en la opción
Project SDK
seleccionar la versión deseada (ubicada en el directorioC:\Program Files\AdoptOpenJDK
).
- El método
main
es el punto de entrada de nuestra app. Es lo primero que se ejecuta cuando nuestra app corre.
public static void main (String[] args){
// acciones
}
- En
external libraries
podemos ver las librerías con las que estamos trabajando, incluyendo el JDK. - En el directorio
src
es donde creamos nuestros archivos.- Crear una clase:
New
>Java Class
. - Ejecutar la app: dar click derecho y seleccionar la opción
Run MyClass.main()
.
- Crear una clase:
- Escribimos código
.java
. - Cuando ejecutamos
run
se activa el compilador de Javajavac
que traduce el código aByte Code
. EsteByte Code
es almacenado en archivos.class
en el directorioout
. - Finalmente la
JVM
interpreta elByte Code
.
Java es compilado e interpretado.
- Declaración de variables:
int salary;
String name, surname = "Flores";
- No se puede inicializar una variable con un número al comienzo y no pueden tener guión medio
-
. - Constantes se escriben en mayúsculas y pueden contener
_
. - Declaración de una constante:
final double MAX_WIDTH = 45.15;
- Concatenar strings:
String name = "Cristian";
name += " Flores";
- Upper Camel Case: en clases y deben tener el mismo nombre que los archivos.
- Lower Camel Case: en variables y métodos.
Tipo | Rango | Tamaño |
---|---|---|
byte | -128 a 127 | 1 byte |
short | -32.768 a 32.767 | 2 byte |
int | -2.147.483.648 a 2.147.483.647 | 4 bytes |
long | -9.223.372.036.854.775.808 a -9.223.372.036.854.775.807 | 8 bytes |
float | decimal | 4 bytes |
double | decimal | 8 bytes |
- Para especificar tipo de dato
long
se debe poner unaL
al final:
long longNum = 12345678901L;
- Para especificar tipo de dato
float
se debe poner unaF
al final:
double doubleNum = 123.456;
float floatNum = 123.456F;
Tipo | Uso | Tamaño |
---|---|---|
char | 'a' | 2 bytes |
boolean | true / false | 2 bytes |
- Desde Java 10 se puede usar
var
para que este infiera el tipo de variable sin ser especificada.
var intNum = 23455;
Esto permite expandir el rango de los valores positivos.
int intNum = Integer.parseUnsignedInt("4294967295");
long longNum = Long.parseUnsignedLong("18446744073709551615");
Operador | Aplicación | Desglose |
---|---|---|
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
%= | a %= b | a = a % b |
Operador | Ejemplo | Desglose |
---|---|---|
++ | i++ | i = i + 1 |
-- | i-- | i = i - 1 |
Podemos usar estos operadores de forma prefija ++i
o postfija i++
. La diferencia está en qué operación se ejecuta primero:
- En prefijo se incrementa el valor de la variable y luego se accede a ella.
- En postfijo se accede al valor de la variable y luego se incrementa.
int lives = 3;
int gift1 = 100 + lives++; // 103
int gift2 = 100 + ++lives; // 104
Math es una clase de Java que nos ayuda a ejecutar diferentes operaciones matemáticas:
Math.PI // 3.141592653589793
Math.E // 2.718281828459045
Math.ceil(2.1) // 3.0 (redondear hacia arriba)
Math.floor(2.1) // 2.0 (redondear hacia abajo)
Math.pow(2, 3) // 8.0 (número elevado a una potencia)
Math.sqrt(3) // 1.73... (raíz cuadrada)
Math.max(2, 3) // 3.0 (el número más grande)
// área de un círculo (PI * r^2):
Math.PI * Math.pow(r, 2)
// área de una esfera (4 * PI * r^2):
4 * Math.PI * Math.pow(r, 2)
// volumen de una esfera ( (4/3) * PI * r^3):
(4/3) * Math.PI * Math.pow(r, 3)