Running JAVA ☕

Caracteristicas

Multiplataforma. Es independiente de la plataforma, ejecutable en cualquier sistema con máquina virtual
Implica que un programa escrito en java debe ser COMPILADO para posteriormente ser INTERPRETADO por la JVM o JRE.

No hay punteros (lo que le hace más seguro y fácil de manejar)
A diferencia de algunos lenguajes de programación como C o C++, no existen punteros en el sentido tradicional que permiten acceder directamente a direcciones de memoria y manipularlas.
En lugar de punteros, Java utiliza referencias de objetos. Cuando trabajas con objetos en Java, estás manipulando referencias a esos objetos, no direcciones de memoria directas.

No es híbrido, sino totalmente orientado a objetos (aunque muchos programadores tienen reservas respecto a esta aseveración).
En una aplicación java solo hay clases; no existen datos sueltos ni procedimientos.

Distribuido
Implementa excepciones (control de errores) de forma nativa

Es un lenguaje interpretado (lo que acelera su ejecución remota, aunque provoca que las aplicaciones Java sean más lentas en la ejecución que las aplicaciones escritas en lenguajes compilados como C++).

Fuertemente tipificado o de tipado estático.
La fuerte tipificación significa que el tipo de una variable es verificado en tiempo de compilación, antes de que el programa se ejecute.
Esto contrasta con lenguajes de tipado débil o dinámico, donde los tipos pueden cambiar en tiempo de ejecución y las conversiones implícitas entre tipos son más flexibles.

Multitarea (admite programación multihilo / multi-hebra). Permite múltiples hilos de ejecución, es decir que se ejecuten varias tareas en paralelo.

Tipos de datos y control de sintaxis más rigurosa que los lenguajes C y C++, lo que facilita la gestión de errores
Diseñado como una mejora de C++
Permite excepciones

Case sensitive. Se deben respetar las mayúsculas y las minúsculas.

Lenguaje 4GL (lenguajes de cuarta generación)

Entorno. Versiones. Libros. Herramientas. JDK. Caracteristicas.

Identificadores. Partes de un programa.

Variables. Constantes. Tipos primitivos. Operadores. Comentarios. Palabras reservadas.

Variables

Los nombres de variables pueden contener letras y números (pero no pueden comenzar con un número) y algún otro símbolo, como el de subrayado, pero no podrán contener otros muchos símbolos, como los de las distintas operaciones matemáticas posibles (+,-,*,/), ni llaves o paréntesis, ni vocales acentuadas (á,é,í,ó…), ni eñes…

Tipos de datos

TIPODESCRIPCIÓNDEFAULTTAMAÑOEJEMPLOS
booleantrue o falseFALSE1 bittrue, false
charcarácter unicode (una letra del alfabeto, dígito
numérico, o simbolo de puntuación)
\u000016 bits‘a’, ‘\u0041’, ‘\101’, ‘\\’
byteentero complemento de dos08 bits100, -50
shortentero complemento de dos (entero corto)016 bits10000,-20000
int (intiger/entero)entero complemento de dos032 bits100000,-2,-1,0,1,2,-200000
longentero complemento de dos064 bits-2L,-1L,0L,1L,2L
floatcoma flotante IEEE 754032 bits1.23e100f, -1.23e-100f, .3ef, 3.14f
doublecoma flotante IEEE 754 (precisión de 14 cifras)064 bits1.2345e300d, -1.2345e-300f, 1e1d

Los tipos de datos primitivos se pueden organizar en 4 grupos:
Numéricos enteros: Son los tipos byte, short, int y long. Los 4 representan números enteros con signo.
Carácter: El tipo char representa un carácter codificado en el sistema unicode.
Numérico decimal: Los tipos float y double representan números decimales en coma flotante.
Lógicos: El tipo boolean es el tipo de dato lógico; los dos únicos posibles valores que puede representar un dato lógico son true y false.

No son datos primitivos en JAVA:
Fecha
Cadena de texto (string)

Operadores

Son signos especiales para hacer acciones específicas.

Tipos de operadores en Java

A continuación, veremos los diferentes tipos de operadores existentes en Java.

Operadores aritméticos

Los operadores aritméticos en Java son símbolos especiales que se utilizan para realizar operaciones matemáticas en variables numéricas.

Estos operadores permiten realizar cálculos como la suma, resta, multiplicación, división, etc.

Operadores de asignación
Los operadores de asignación son fundamentales en Java ya que permiten asignar valores a variables. A través de estos operadores, se puede almacenar información en variables para su posterior uso en el programa.

El operador más comúnmente utilizado es el signo igual (=), que asigna el valor de la derecha a la variable de la izquierda. Por ejemplo, int x = 10; asigna el valor 10 a la variable x. Además del operador de asignación simple, Java proporciona operadores de asignación compuesta, como +=, -=, *=, /=, entre otros.

Estos operadores permiten actualizar el valor de una variable mediante una operación aritmética y asignación en un solo paso. Por ejemplo, x += 5; aumenta el valor de x en 5 unidades.

Operadores de comparación

Los operadores de comparación son esenciales para evaluar condiciones en programas Java. Comparan dos valores y devuelven un resultado booleano, es decir, true si la comparación es verdadera y false si es falsa. Algunos de los operadores de comparación más comunes son == (igual a), != (diferente de), < (menor que), > (mayor que), <= (menor o igual que) y >= (mayor o igual que).

OperadorDescripción
==Igual a (compara si dos valores son iguales).
!=Distinto de (compara si dos valores son diferentes).
>Mayor que (compara si un valor es mayor que otro).
<Menor que (compara si un valor es menor que otro).
>=Mayor o igual que (compara si un valor es mayor o igual que otro).
<=Menor o igual que (compara si un valor es menor o igual que otro).

Estos operadores son fundamentales para construir estructuras de control condicional, como las sentencias if y switch, que permiten que un programa tome decisiones basadas en condiciones.

Operadores lógicos

Los operadores lógicos son herramientas poderosas para combinar o invertir condiciones lógicas en un programa Java. Los operadores lógicos más comunes son && (AND lógico), || (OR lógico) y ! (NOT lógico).

El operador && devuelve true si ambas condiciones son verdaderas, || devuelve true si al menos una condición es verdadera, y ! invierte el valor de una condición, es decir, cambia true a false y viceversa.

Estos operadores son esenciales para construir expresiones condicionales complejas y tomar decisiones basadas en múltiples condiciones lógicas. Se utilizan en conjunto con operadores de comparación para crear lógica condicional robusta en programas Java.

Operadores de incremento y decremento

Los operadores de incremento (++) y decremento (—) son útiles para modificar el valor de una variable en una unidad.

El operador de incremento aumenta el valor de la variable en 1, mientras que el operador de decremento lo disminuye en 1.

Estos operadores son especialmente útiles en bucles y otras situaciones en las que se necesita actualizar una variable de forma repetida. También se pueden utilizar en combinación con operadores de asignación para realizar incrementos o decrementos personalizados, como x += 2; que incrementa x en 2 unidades.

El operador += en Java es un operador de asignación compuesta que combina suma y asignación. Esto significa que toma el valor actual de una variable, le suma un valor y luego asigna el resultado de nuevo a la misma variable.

int a = 5;
a += 3; // es equivalente a a = a + 3;

Operadores ternarios
Los operadores ternarios, también conocidos como operadores condicionales, son una característica concisa y poderosa de Java. Tienen la forma condición ? valor_si_verdadero : valor_si_falso.

Este operador evalúa una condición y devuelve uno de dos valores, dependiendo de si la condición es verdadera o falsa. Es una forma eficiente de expresar lógica condicional en una sola línea de código. Por ejemplo, int resultado = (x > y) ? x : y; asignará el valor de x a resultado si la condición (x > y) es verdadera, de lo contrario, asignará el valor de y.

Los operadores ternarios son útiles para simplificar expresiones condicionales simples y mejorar la legibilidad del código.

Esta es la lista de tipos de operador esenciales en Java, pero cabe destacar que existen otros tipos de operadores que pueden ser útiles en situaciones específicas:

Operadores de bits
Los operadores de bits se utilizan para realizar operaciones a nivel de bits en valores enteros.

Estos operadores permiten manipular datos binarios y realizar operaciones de desplazamiento de bits. Ejemplos de operadores de bits incluyen & (AND a nivel de bits), | (OR a nivel de bits), ^ (XOR a nivel de bits), << (desplazamiento a la izquierda) y >> (desplazamiento a la derecha).

Operadores de igualdad
Además de los operadores de comparación (== y !=), Java también ofrece operadores de igualdad equals() para comparar objetos por igualdad estructural en lugar de igualdad de referencia.

Estos operadores son comunes cuando se trabaja con objetos personalizados.

Operadores de concatenación
En el contexto de cadenas de texto (string), Java proporciona el operador + para la concatenación de cadenas.

Este operador se utiliza para unir dos o más cadenas de texto en una sola cadena.

Operadores de conversión de tipo
Cuando se trabaja con tipos de datos diferentes, es posible que necesites realizar conversiones de tipo.

Java ofrece operadores de conversión explícita, como (tipo) y métodos de conversión de tipo, como Integer.parseInt() y String.valueOf().

Operadores de instancia
El operador instanceof se utiliza para verificar si un objeto es una instancia de una clase o interfaz específica.

Esto es útil en programación orientada a objetos para verificar la relación de herencia.

Operadores de acceso a miembros
Java también tiene operadores de acceso a miembros como el operador de punto . y el operador de acceso a elementos de matriz [].

Estos operadores se utilizan para acceder a los campos (variables) y métodos de una clase o para acceder a elementos de una matriz.

Operadores de asignación ternarios
En situaciones donde se necesita asignar un valor a una variable basado en una condición, puedes utilizar un operador de asignación ternario como variable = (condición) ? valor_si_verdadero : valor_si_falso;.

Esto proporciona una forma compacta de asignar valores condicionalmente.

Palabras reservadas

Estas palabras tienen un significado especial en el lenguaje y no pueden ser usadas como identificadores (nombres de variables, clases, métodos, etc.)

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnshortstaticstrictfpsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

Control de Flujos

if / Else if

Switch

For

Sintaxis:
for(int i = valor inicial; i <= valor final; i = i + paso)
for(i=1 ; i <= 10 ; i ++) {

break, continue

Valor inicialíndice de control, inicialización, valor inicial
Condicióncondición booleana, condición de continuidad del ciclo
incremento/decrementomodificación del índice tras cada bucle

length es una propiedad de arreglos (arrays) que indica el tamaño o la longitud del arreglo. Se utiliza comúnmente en bucles for para iterar sobre todos los elementos de un arreglo. Sin embargo, es importante tener en cuenta que length es una propiedad, no un método, por lo que no lleva paréntesis.

int[] numeros = {1, 2, 3, 4, 5};

// Iterar sobre todos los elementos del arreglo 'numeros'
for (int i = 0; i < numeros.length; i++) {
    System.out.println(numeros[i]); // Imprimir cada elemento del arreglo
}

While

Es un bucle que va a repetir la sentencia más de una vez, mientras la condición sea cierta.

Do-While

Se caracteriza porque ejecuta un conjunto de instrucciones sin realizar previamente la evaluación de la expresión relacional y/o lógica.

for-each

El bucle «for each» (también conocido como «for-in» o «for-of«) es una característica en Java que se utiliza para recorrer (iterar sobre una secuencia de elementos) una colección (como un arreglo o una lista) de manera más sencilla y concisa. Proporciona una forma de iterar sobre cada elemento de una colección sin tener que utilizar un índice para acceder a cada elemento.

Es importante destacar que el bucle for-each no proporciona un índice explícito como lo hace el bucle for tradicional, por lo que no se puede acceder al índice del elemento directamente. Este tipo de bucle es útil cuando solo se necesita acceder a los elementos de una colección sin preocuparse por los índices.

Array (vectores, matrices, arreglos)

Un array es una variable que puede contener varios datos del mismo tipo. Colección de datos del mismo tipo

En Java, todas las matrices se asignan dinámicamente.

Una variable array en Java se declara como otras variables con corchetes [ ] después del tipo de datos.

Las variables en el array están ordenadas y cada una tiene un índice que comienza desde 0.
(Se empieza a numerar desde 0 y se termina en n-1)

El array Java también se puede usar como un campo estático, una variable local o un parámetro de método.
El tamaño de un array debe especificarse mediante un valor int y no, long o short.
La superclase directa de un tipo de array es Object.
Cada tipo de array implementa las interfaces Cloneable y java.io.Serializable.

El array puede contener tipos de datos primitivos así como también objetos de una clase según la definición del array. En el caso de los tipos de datos primitivos, los valores reales se almacenan en ubicaciones de memoria contigua. En el caso de los objetos de una clase, los objetos reales se almacenan en heap.

Arrays multidimensionales

Aunque en Java se pueden crear arrays de más de dos dimensiones, los arrays bidimensionales son los más utilizados.

Arrays multidimensionales irregulares

Usos:

public class Arrays_bidimensionales {

    public static void main(String[] args) {
        // Declarar y crear un array bidimensional
        int[][] matrix = new int[2][3]; // 2 filas y 3 columnas

        // Inicializar valores
        matrix[0][0] = 1;
        matrix[0][1] = 2;
        matrix[0][2] = 3;
        matrix[1][0] = 4;
        matrix[1][1] = 5;
        matrix[1][2] = 6;

        // Imprimir valores
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }
}

Funciones y métodos

En Java, un método es un bloque de código que realiza una tarea específica, y se invoca por su nombre cuando se necesita ejecutar esa tarea. Los métodos pueden recibir parámetros (entradas) y pueden devolver un valor (salida). Existen diferentes tipos de métodos en Java, y pueden clasificarse en varias categorías según su propósito, implementación, o acceso.

Sintaxis básica de un método

Tipos de métodos en Java

Wrappers

Los Wrappers java son utilizados para convertir cadenas de caracteres (texto) en números.
Normalmente usamos tipos primitivos y no objetos. Sin embargo, existe una manera de que estos datos puedan ser objetos, usando las llamadas clases envoltorio.
Los wrappers son útiles en situaciones en las que se necesita tratar a los tipos primitivos como objetos, por ejemplo para utilizarlos en colecciones o para invocar métodos que esperan un objeto como argumento.

Interfaces
Paradigma Funcional
Excepciones. Try / catch / Finally.

Colecciones

API Java

java.langjava.utiljava.iojava.netjava.sqljava.awtjava.swingjavax.swingjavax.servletjavax.xmljava.niojavax.mailjava.mathjavax.mathjava.time
BooleanArrayListBufferedReaderContentHandlerConnectionClaseJButtonJFrameHttpServletDocumentPathSessionBigDecimalBigDecimalChronoField
ByteCalendarBufferedWriterContentHandlerFactoryStatementColorJComboBoxJButtonHttpServletRequestElementFilesMessageBigIntegerBigIntegerChronoUnit
CharacterCollectionsByteArrayInputStreamCookieManagerPreparedStatementGraphicsJDialogJLabelHttpServletResponseNodeBufferedReaderStoreMathContextMathContextClock
Classconcurrent.ExecutorByteArrayOutputStreamCookiePolicyCallableStatementGraphics2DJFrameJTextFieldServletConfigAttrBufferedWriterTransportRoundingModeRoundingModeDateTimeFormatter
DoubleDateDataInputStreamCookieStoreResultSetGraphicsDeviceJLabelJTextAreaServletContextTextFileChannelFolderMutableBigIntegerMutableBigIntegerDayOfWeek
EnumFunctionDataOutputStreamDatagramSocketSQLExceptionGraphicsEnvironmentJListJListServletExceptionCommentByteBufferAddressMutableBigDecimalMutableBigDecimalDuration
FloatHashMapFileHttpClientDatabaseMetaDataRectangleJMenuBarJComboBoxServletOutputStreamProcessingInstructionCharBufferBigRationalInstant
IntegerHashSetFileInputStreamHttpCookieSavepointFontJPanelJMenuPrintWriterTransformerSelectorBigComplexLocalDate
LongIteratorFileOutputStreamHttpRequestImageJProgressBarJMenuBarTransformerFactoryServerSocketChannelComplexLocalDateTime
MathLinkedListFileReaderHttpResponseComponentJScrollPaneJMenuItemSocketChannelLocalTime
NumberListFileWriterHttpServerContainerJSliderJRadioButtonAsynchronousFileChannelMonth
ObjectMapInputStreamReaderHttpURLConnectionFrameJSpinnerJCheckBoxMonthDay
PackagePropertiesIOExceptionInetAddressPanelJSplitPaneJTablePeriod
ProcessBuilder.RedirectRandomObjectInputStreamMulticastSocketButtonJTableJTreeWeek
SecurityManagerScannerObjectOutputStreamMalformedURLExceptionLabelJTextAreaJFileChooserWeekFields
ShortSetOutputStreamWriterProxyTextFieldJTextFieldJColorChooserYear
StringStackPipedInputStreamProxySelectorTextAreaJTreeJOptionPaneYearMonth
StringBufferStreamPipedOutputStreamServerSocketplaf.basicZonedDateTime
StringBuilderTreeMapPrintWriterSocket
SystemVectorPushbackInputStreamURI
ThreadGregorianCalendarReaderURL
ThrowableStringReaderURLConnection
VoidStringWriter
InterruptedExceptionWriter

Rest API
Jdbc (conexión a base de datos). MySQL. TCP IP.

JSP (Java Server Pages)
Servlets
Aplicaciones Web
Streams. Excel.
Lambda / enums

IDEs (Eclipse / IntelliJ / Netbeans)

Los IDEs (Entornos de Desarrollo Integrado) son herramientas indispensables para el desarrollo de software en Java, ya que proporcionan características como edición de código, depuración, compilación y gestión de proyectos, entre otras.

Java Project
Project
Package
Class
Interface
Enum
Annotation
Source Folder
Java Working Set
Folder
File
Untitle Text File
Task
JUnit Test Case
Example
Other

Ctrl+F11Run

AcciónAtajoDescripción
Crear metodo mainEscribir main,pulsar CTRL + ESPACIO y seleccionar main methodImplementa : public static void main (String[] args){ }
Impresion rápida por consolaEscribir syso y pulsar CTRL + ESPACIOImplementa : System.out.println();
Sentencia IFEscribir if,pulsar CTRL + ESPACIO y seleccionar la opción statementImplementa : if (condition) {} o con la opción else
Bucle DESDE (for)Escribir for,pulsar CTRL + ESPACIO y seleccionar la opciónImplementa : for (int i = 0; i < array.length; i++) {} u otras opciones
Bucle MIENTRAS (while)Escribir while,pulsar CTRL + ESPACIO y seleccionar la opciónImplementa : while (condition) {} u otras opciones
Bucle REPETIR HASTA (do..while)Escribir do,pulsar CTRL + ESPACIO y seleccionar la opciónImplementa : do {} while (condition);

Maven (Constructor y Gestor de Proyectos)

Apache Maven is a software project management and comprehension tool.
Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
herramienta open-source que se creó con el objetivo de simplificar los procesos de build (compilar y generar ejecutables a partir del código fuente).
Nos permite compilar cualquier tipo de proyecto, librándonos de todas las dificultades que hay por detrás
(ej: configurar el proceso de build, analizar que partes del codigo se deben compilar, que librerias utiliza el codigo, donde incluirlas, que dependencias de compilación hay en un proyecto).
Maven es una herramienta capaz de gestionar un proyecto software completo
desde la etapa en la que se comprueba que el código es correcto, hasta que se despliega la aplicación, pasando por la ejecución de pruebas y generación de informes y documentación.

– Validación (validate): Validar que el proyecto es correcto.
– Compilación (compile).
– Test (test): Probar el código fuente usando un framework de pruebas unitarias.
– Empaquetar (package): Empaquetar el código compilado y transformarlo en algún formato tipo .jar o .war.
– Pruebas de integración (integration-test): Procesar y desplegar el código en algún entorno donde se puedan ejecutar las pruebas de integración.
– Verificar que el código empaquetado es válido y cumple los criterios de calidad (verify).
– Instalar el código empaquetado en el repositorio local de Maven, para usarlo como dependencia de otros proyectos (install).
– Desplegar el código a un entorno (deploy).

Tomcat

https://tomcat.apache.org/
Tomcat 9.0.50 Released

Es un contenedor de servlets y un servidor de aplicaciones Web

Tomcat proporciona un entorno de ejecución para aplicaciones Web que cumplen con los estándares Java Servlet y JavaServer Pages. Esto significa que puedes desarrollar aplicaciones Web utilizando estos estándares y ejecutarlas en Tomcat sin tener que preocuparte por el servidor Web subyacente.

Spring. Spring Boot. Hibernate.

Testing Automatico (JUnit)

Microservicios
Patrones de Diseño

Libros

Francisco Blasco – Programación Orientada a Objetos en JAVA-RA-MA Editorial (2021)
Programación Orientada a Objetos en JAVA (Bermudez) MIW.JEE.POOJ
Introducción a la programación (Vanegas Mendoza) – Introducción Java Parte 1
Programación básica en lenguaje JAVA (Sánchez Asenjo)
Programación Orientada a Objetos en JAVA (Bermudez)
Aprenda Java como si estuviera en primero
Web Scraping with Java (Ryan Mitchell) jsoup library
Fundamentos de programación (Villalobos)
Notas Introducción Lenguaje Programación JAVA (Ortega Arjona)
Ejercicios de programación en JAVA (Pérez Monte)
(Lopez Davila) Curso de Java – conexiones con base de datos MySQL
(Dean) Introducción a la programación con JAVA
(Jeff Friesen) Java XML and JSON: Document Processing for Java SE
Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
Java Intensive Coding Bootcamp (Sanjib Sinha)
(Balaji Varanasi) Introducing Maven
Trisha Gee – 97 Things every JAVA Programmer should Know-o reilly (2022)
Real-World Software Development – A Project-Driven Guide to Fundamentals in Java. by Raoul-Gabriel Urma, Richard Warburton
Java Intensive Coding Bootcamp LEARN LANGUAGE BASICS AND ALGORITHM More Than Hundred Difficult Problems With Solutions – Explained Step by Step, Designed for Absolute Beginners by Sanjib Sinha [Sinha
(Kiet Tran) Introduction to Web Service with Java

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *