0% encontró este documento útil (0 votos)
3 vistas

Conceptos Java

El documento describe conceptos clave de Java y herramientas de desarrollo como Maven, Gradle y Git. Se abordan temas de programación orientada a objetos, estructuras de control, manejo de excepciones y principios SOLID, así como la diferencia entre arquitecturas monolíticas y de microservicios. Además, se incluyen detalles sobre el uso de Git y GitHub para el control de versiones y la colaboración en proyectos de software.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas

Conceptos Java

El documento describe conceptos clave de Java y herramientas de desarrollo como Maven, Gradle y Git. Se abordan temas de programación orientada a objetos, estructuras de control, manejo de excepciones y principios SOLID, así como la diferencia entre arquitecturas monolíticas y de microservicios. Además, se incluyen detalles sobre el uso de Git y GitHub para el control de versiones y la colaboración en proyectos de software.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

Repository:

Son gestores de dependencias


Maven:
Maven usa repositorios para almacenar bibliotecas Java, complementos, y otros artefactos de
construcción. Los repositorios pueden ser locales o remotos. Un repositorio local es una descarga de
artefactos desde un repositorio remoto en caché en una máquina local.
Gradle:
Un repositorio de Gradle es un lugar desde donde se pueden resolver dependencias en formatos Maven,
Ivy o directorio plano. Gradle es una herramienta de automatización de la compilación de código abierto
que se centra en el rendimiento y la flexibilidad.
Concepto
que es clase:
Una clase en Java es un modelo o plantilla que define la estructura y el comportamiento de los objetos que
se pueden crear a partir de ella. Las clases son un elemento fundamental de la programación orientada a
objetos (POO) en Java y son la base para la creación de objetos.
que es una interfaz:
Las interfaces en Java son una parte crucial de la POO que permiten definir un contrato que las clases
deben cumplir. En esencia, una interfaz en Java define un conjunto de métodos que deben ser
implementados por cualquier clase que implemente esa interfaz.
Modificadores de acceso:
static: se utiliza para definir variables, métodos, bloques y clases anidadas que pertenecen a la clase en
lugar de a una instancia de la clase.
public: Accesible desde cualquier lugar.
private: Accesible sólo dentro de la misma clase.
protected: Accesible dentro del mismo paquete y por subclases, incluso si están en diferentes paquetes.
Sin modificador (paquete o default): Accesible sólo dentro del mismo paquete.
Objetos
En Java, un objeto es una instancia de una clase. Representa una entidad del mundo real o una
abstracción, y tiene un estado y un comportamiento. El estado se define mediante los atributos o
propiedades del objeto (también conocidos como campos o variables de instancia), mientras que el
comportamiento se define mediante los métodos.
Método:
En Java, un método es un bloque de código que ejecuta acciones específicas cuando se llama. Los métodos
son funciones que pueden manipular los atributos de la clase y realizar acciones.
Constructor:
El constructor es accesible para crear instancias en cualquier clase.
que es variable:
En Java, una variable es un contenedor de memoria que se utiliza para almacenar y manipular datos en una
clase.
tipos de variable:
Tipos primitivos:
byte: Almacena números enteros pequeños (rango: -128 a 127).
short: Almacena números enteros más grandes que byte (rango: -32,768 a 32,767).
int: Almacena números enteros más comunes (rango: -2^31 a 2^31 - 1).
long: Almacena números enteros muy grandes (rango: -2^63 a 2^63 - 1).
float: Almacena números de punto flotante de precisión simple.
double: Almacena números de punto flotante de doble precisión.
char: Almacena un único carácter Unicode (por ejemplo, 'A', 'b', '1').
boolean: Almacena un valor de verdad, ya sea true o false.
Tipos de referencia:
Objetos (instancias de clases): String, ArrayList, HashMap, etc.
Arrays: También son considerados un tipo de referencia.
Clases definidas por el usuario.

POO: conceptos(Programacion Orientada a Objetos)


La programación orientada a objetos (POO) es un modelo de programación que organiza el diseño del
software en torno a objetos y datos, en lugar de usar lógica y funciones. Se basa en el concepto de crear un
modelo del problema que se quiere resolver en los programas.

Abstracción
Se trata de la capacidad de centrarse en un nivel superior de un problema, ignorando los detalles de las
partes. En la POO, la abstracción se basa en obtener la información esencial de los objetos y cosas simples
para representar la complejidad.
Encapsulamiento
Se refiere a envolver algo en una capa protectora. En Java, la encapsulación permite definir niveles de
visibilidad para los elementos de la clase.
Herencia
Permite construir nuevas clases basadas en clases existentes, lo que facilita la reutilización y extensión del
código.
Polimorfismo
Permite que los objetos se comporten de distintas maneras según el contexto. En la POO, el polimorfismo
es la capacidad de algunos lenguajes para hacer que cada objeto responda de forma distinta a un mismo
mensaje.

Métodos getter and Setters


Getters
Permiten obtener el valor de un atributo. El nombre proviene del verbo inglés "get", que significa
"obtener".
Setters
Permiten establecer el valor de un atributo. El nombre proviene del verbo inglés "set", que significa
"ingresar".

ANOTACIONES EN JAVA

La anotación @Override en Java se utiliza para indicar que un método en una subclase está
sobrescribiendo un método en su superclase o en una interfaz que está implementando. Esto sirve como
una verificación en tiempo de compilación para garantizar que la firma del método coincida con la de la
superclase o interfaz.

@SessionScoped es una anotación en Java EE o Jakarta EE que se utiliza para definir el alcance de una
clase administrada por el contenedor en un entorno web. Específicamente, la anotación indica que el ciclo
de vida de un bean estará vinculado a la sesión HTTP del usuario.

La anotación @Named en Java EE o Jakarta EE se utiliza para que un bean administrado por el contenedor
pueda ser accedido desde tecnologías de presentación como JSF (JavaServer Faces) o CDI (Context and
Dependency Injection) mediante su nombre lógico.

SERIALIZACIÓN:

En Java, la palabra "serialización" se refiere al proceso de convertir un objeto en una secuencia de bytes
que puede ser almacenada en un archivo o transmitida a través de una red. Un objeto que se puede
serializar se dice que es "serializable".
Estructuras en java:
If y else : si se cumple la condición especificada, haz lo siguiente. En el resto de casos, haz esto otro.

SWITCH CASE:

En Java, la instrucción switch se utiliza para ejecutar un bloque de código entre varias opciones en función
del valor de una expresión. A menudo se utiliza como alternativa a varias if-else instrucciones. A
continuación, se muestra la sintaxis y un ejemplo:

BUCLES (while):

acumulador: Un acumulador suma valores a medida que se ejecuta un proceso, como sumar números en
un bucle.

contador: Un contador incrementa su valor cada vez que ocurre un evento. Esto es útil para contar
elementos, iteraciones o condiciones.
FOR:

Es una estructura de control que se usa para iterar sobre una secuencia de elementos, realizar un número
específico de repeticiones o recorrer una colección.
for clasico:

for each:
Ideal para recorrer elementos en una colección o array sin necesidad de un índice.

Bucle for con iterador


Utilizado para casos en los que es necesario manipular la colección o remover elementos mientras se itera.
ARREGLOS, VECTORES Y MATRICES

Un arreglo:
Es una colección de elementos del mismo tipo, almacenados en ubicaciones de memoria contiguas. Cada
elemento se accede mediante un índice, que suele comenzar en cero. Son útiles para almacenar listas de
valores conocidos y de tamaño fijo.

Vectores:
En programación, un vector es similar a un arreglo pero de tamaño dinámico. En Java, el Vector de la
biblioteca estándar permite que crezca o se reduzca según se añadan o eliminen elementos.

Matrices (Arrays multidimensionales)


Una matriz es una extensión del concepto de arreglo a dos o más dimensiones. En una matriz
bidimensional, cada elemento tiene dos índices, como en una cuadrícula de filas y columnas.

Diferencias clave
Arreglos: Fijos y de una sola dimensión en la mayoría de los casos.
Vectores: Dinámicos y de una dimensión (en Java pueden redimensionarse).
Matrices: Extensión de arreglos a múltiples dimensiones, útiles para representar tablas o cuadrículas.
TRY CATCH

El try-catch en Java es una estructura de control utilizada para manejar excepciones, que son eventos
inesperados o errores que ocurren durante la ejecución del programa y pueden causar que este se
interrumpa. Al utilizar un bloque try-catch, podemos anticipar y controlar estos errores para que el
programa siga funcionando de manera estable.

try {
// Código que podría lanzar una excepción
} catch (TipoDeExcepcion e) {
// Código para manejar la excepción
}

En Java, la palabra clave throw se utiliza para lanzar una excepción de manera explícita durante la
ejecución de un programa. Permite al programador interrumpir el flujo normal del programa cuando se
detecta una condición de error o una situación excepcional.

Errores de Ejecución (Runtime Exceptions):


Son excepciones que ocurren durante la ejecución y generalmente indican errores de lógica en el código.
NullPointerException: Ocurre cuando intentas acceder a un objeto que es null.
ArrayIndexOutOfBoundsException: Sucede al acceder a una posición fuera de los límites de un array.
ArithmeticException: Aparece al intentar una operación aritmética inválida, como dividir entre cero.
InputMismatchException: Se lanza cuando el tipo de dato ingresado no coincide con el esperado (por
ejemplo, ingresar texto en lugar de un número).

Excepciones Verificadas (Checked Exceptions)


IOException: Ocurre al intentar una operación de entrada/salida fallida, como leer un archivo inexistente.
SQLException: Sucede en errores de bases de datos, como una consulta incorrecta.
FileNotFoundException: Especifica que un archivo no se encontró al intentar abrirlo.

Errores Fatales (Errors)

Los errores representan condiciones críticas de las que una aplicación normalmente no se puede
recuperar. Se recomienda no capturarlos porque indican problemas graves, como fallos de memoria
(OutOfMemoryError) o errores de sistema.
OutOfMemoryError: La JVM se queda sin memoria para ejecutar el programa.
StackOverflowError: Ocurre generalmente por recursión infinita.
VirtualMachineError: Indica problemas en la máquina virtual de Java.
PRINCIPIOS SOLID:
Son un conjunto de principios diseñados para desarrollar código escalable, mantenible y flexible.
Ayudan a mejorar la comprensión del código, facilitan la incorporación de nuevas características y
minimizan los errores durante el desarrollo y mantenimiento.
RESPONSABILIDAD UNICA:
La S del acrónimo del que hablamos hoy se refiere a Single Responsibility Principle (SRP). Según este
principio “una clase debería tener una, y solo una, razón para cambiar”. Es esto, precisamente, “razón para
cambiar”, lo que Robert C. Martin identifica como “responsabilidad”.

ABIERTO - CERRADO:
El segundo principio de SOLID lo formuló Bertrand Meyer en 1988 en su libro “Object Oriented Software
Construction” y dice: “Deberías ser capaz de extender el comportamiento de una clase, sin modificarla”. En
otras palabras: las clases que usas deberían estar abiertas para poder extenderse y cerradas para
modificarse.
SUSTITUCIÓN DE LISKOV

La L de SOLID alude al apellido de quien lo creó, Barbara Liskov, y dice que “las clases derivadas deben
poder sustituirse por sus clases base”.

SEGREGACIÓN DE INTERFACES:

En el cuarto principio de SOLID, el tío Bob sugiere: “Haz interfaces que sean específicas para un tipo de
cliente”, es decir, para una finalidad concreta.
INVERSIÓN DE DEPENDENCIAS:

Llegamos al último principio: “Depende de abstracciones, no de clases concretas”. Los módulos de alto
nivel no deberían depender de módulos de bajo nivel. Ambos deberían depender de abstracciones. Las
abstracciones no deberían depender de los detalles. Los detalles deberían depender de las abstracciones.

GIT:
Git es un sistema de control de versiones distribuido que permite a los desarrolladores rastrear y
administrar los cambios en el código fuente de sus proyectos.
Control de versiones: Permite crear diferentes versiones del proyecto, facilitando la revisión de cambios
pasados y la recuperación de versiones anteriores si es necesario.
Ramas (branches): Con Git, puedes crear ramas para trabajar en diferentes funcionalidades o correcciones
sin afectar el código principal (generalmente en la rama main o master). Luego, puedes combinar (merge)
estas ramas.
Distribución: Git es distribuido, lo que significa que cada desarrollador tiene una copia completa del
historial del proyecto. Esto facilita el trabajo offline y la colaboración descentralizada.
Comandos básicos de Git:

● git init: Inicializa un repositorio de Git en un directorio.


● git clone: Copia un repositorio existente a tu computadora.
● git add: Añade archivos al área de preparación para que Git los rastree.
● git commit: Confirma los cambios en el historial del proyecto.
● git push: Sube los cambios a un repositorio remoto.
● git pull: Descarga y combina los cambios desde un repositorio remoto.

GitHub:
GitHub es una plataforma en línea que utiliza Git para facilitar la colaboración y el alojamiento de
repositorios. Aunque Git se usa localmente en el sistema de archivos de un desarrollador, GitHub permite
almacenar estos repositorios de manera remota y compartirlos con otros. Algunas de las funciones más
útiles de GitHub incluyen:

Repositorios remotos: GitHub permite a los desarrolladores subir su código a un repositorio remoto,
facilitando el acceso y la colaboración.
Colaboración: GitHub es ideal para proyectos colaborativos. Los desarrolladores pueden crear "pull
requests" para proponer cambios, y otros pueden revisarlos antes de fusionarlos al código principal.
Integración con CI/CD: GitHub se integra con herramientas de integración y despliegue continuo para
automatizar las pruebas y el despliegue del código.
Issues y proyectos: GitHub ofrece herramientas de gestión de tareas y seguimiento de errores (issues) para
mejorar la organización del proyecto.
Documentación: Puedes agregar documentación a los repositorios usando README.md y crear wikis.

para enlazar con tu github


git config --global user.name "MV Thanoshan"

git config --global user.email "[email protected]"

subir un proyecto git:

1. git init
2. git add .
3. git commit -m "first commit"
4. git remote add origin
https://github.com/NOMBRE_USUARIO/NOMBRE_PROYECTO.git

8. git push -u origin (nombre) // es para subir al repositorio, colocar el nombre de la rama en donde deseo
subirlo.
cambiar de rama:
sirve para ver la rama
5. git branch // es para ver la rama en la que estoy trabajando
6. git branch (_nombre___) // es para crear una nueva rama
7. git checkout (-rama-) //es para cambiar de rama, se coloca el nombre de la rama.

git clone -b (-nombre–) https://github.com/Giuli1999/MIXMARKET.git //es para clonar una rama de un


proyecto

Monolito

Un sistema monolítico es una aplicación única y cohesiva en la que todos los módulos y componentes
están integrados en un solo proyecto. Todo el código (por ejemplo, frontend, backend, lógica de negocio,
acceso a datos) se agrupa en una única unidad que se despliega como un bloque completo.

Ventajas del Monolito:

● Simplicidad: Al estar todo en un solo proyecto, es más fácil de desarrollar y desplegar para equipos
pequeños.
● Performance: La comunicación entre los componentes es directa, ya que todos están en el mismo
proceso, lo que reduce la latencia.
● Menor complejidad inicial: Especialmente útil para proyectos pequeños o que no requieren
escalabilidad extrema.
● Facilidad en el manejo de transacciones: Es más sencillo mantener la consistencia y controlar las
transacciones.

Ejemplo:
JavaServer Faces (JSF) es un framework para construir interfaces de usuario en aplicaciones web Java.
Forma parte de la especificación de Java EE (actualmente Jakarta EE) y facilita el desarrollo de aplicaciones
web mediante el uso de componentes reutilizables y un modelo de eventos basado en Java. Aquí algunos
aspectos clave de JSF:

Microservicios
La arquitectura de microservicios consiste en dividir la aplicación en múltiples servicios independientes,
cada uno con una función específica. Estos servicios pueden comunicarse entre sí, generalmente mediante
APIs o mensajes, y cada uno se despliega y escala de forma independiente.

Ventajas de los Microservicios:

● Escalabilidad: Los servicios se pueden escalar individualmente, lo que permite asignar recursos solo
a los servicios que lo necesitan.
● Flexibilidad en tecnología: Cada microservicio puede desarrollarse usando diferentes tecnologías,
lo que permite elegir la herramienta más adecuada para cada caso.
● Despliegue independiente: Cada servicio puede actualizarse y desplegarse sin afectar al resto de la
aplicación.
● Facilidad en el desarrollo ágil: Los equipos pueden trabajar en diferentes servicios de forma
independiente, promoviendo un desarrollo ágil y paralelo.

Ejemplos:
Spring es un framework completo para construir aplicaciones Java de todo tipo, especialmente
aplicaciones empresariales. Su núcleo se basa en la Inversión de Control (IoC) y Inyección de Dependencias
(DI), que permite gestionar y configurar los objetos de la aplicación de manera modular y flexible.

Spring Boot es una extensión de Spring que simplifica la configuración y el despliegue de aplicaciones. Fue
creado para reducir la complejidad de configuración en proyectos Spring, proporcionando una
configuración predeterminada para construir aplicaciones rápidamente. Con Spring Boot, se puede lanzar
una aplicación con solo unas pocas líneas de configuración.

PATRÓN DE DISEÑO:

Un patrón de diseño es una solución reutilizable y probada para problemas comunes en el diseño de
software. Estos patrones no son soluciones específicas, sino guías o plantillas que se pueden aplicar en
diversas situaciones de programación para mejorar la estructura y mantenibilidad del código.

Patrón dao:
El Patrón DAO (Data Access Object) es un patrón de diseño estructural que se utiliza para abstraer y
encapsular el acceso a datos. Este patrón separa la lógica de persistencia (acceso a bases de datos) de la
lógica de negocio, promoviendo la independencia entre la aplicación y los detalles del almacenamiento de
datos.
paquete:
● model
● controller
● dao
● service
● vista

Patrón MVC:
El patrón MVC (Model-View-Controller) es un patrón de diseño arquitectónico que separa una aplicación
en tres componentes principales: Modelo, Vista y Controlador. Este patrón es muy utilizado en el
desarrollo de aplicaciones para mantener la lógica de negocio, la interfaz de usuario y el control del flujo de
datos bien organizados y desacoplados.
paquete:
● modelo
● controller
● vista
BASE DE DATOS:(relacionales)(SQLserver, mySQL, posgreSQL, sqlLite,Oracle,etc)

Tablas Maestras
Las tablas maestras almacenan datos fijos o de referencia que no cambian frecuentemente. Estos datos
son consultados por otras tablas, por lo que se estructuran para que su información sea clara, uniforme y
consistente.

Tablas Transaccionales
Las tablas transaccionales almacenan datos que se actualizan o agregan continuamente, registrando
transacciones o eventos específicos.

Primary Key (PK)


La Primary Key es un identificador único para cada registro en una tabla. Algunas características de la PK
son:
● Debe ser única en la tabla (no puede haber duplicados).
● No puede ser nula.
● En la mayoría de los casos, se asigna de manera automática (como un ID autoincremental).

Foreign Key (FK)


La Foreign Key es una columna o conjunto de columnas en una tabla que crea una relación con la PK de
otra tabla (generalmente una tabla maestra). Su objetivo es:
● Mantener la integridad referencial entre las tablas.
● Permitir relaciones como uno-a-muchos o muchos-a-muchos (con tablas intermedias).
● Por ejemplo, en una tabla de Ventas, una columna cliente_id puede ser una FK que apunte a
id_cliente en la tabla Clientes.

Campos Obligatorios (Mandatory Fields)


Los campos obligatorios son aquellos que deben tener un valor en cada registro, es decir, no pueden ser
nulos. Estos campos se especifican al momento de definir la estructura de la tabla.
● Se utiliza para asegurar que ciertas columnas tengan siempre un valor.
● En la mayoría de los casos, la PK es obligatoria, así como otras columnas esenciales, como nombre,
fecha, cantidad, entre otras.

Todos los tipos de JOIN en SQL:


Inner Join. El Join de “toda la vida”. El join por defecto que se aplica cuando no indicamos otra cosa al
hacer la consulta. Devuelve sólo aquellas filas donde haya un “match”, es decir, las filas donde el valor del
campo de la tabla A que se utiliza para hacer el Join coincida con el valor del campo correspondiente en la
tabla B. Ejemplo: devolver todos los productos para los que haya como mínimo un pedido en los últimos
días (el inner join enlazará el campo producto en la tabla Pedido con la clave primaria de ese producto en
la tabla Producto).
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

Left outer Join. Cuándo quieres todas las filas para las que haya match pero también aquellas de la Tabla
A que no hagan match. Siguiendo el ejemplo anterior, si quieres listar todos los productos con datos de sus
pedidos pero mostrando también aquellos productos para los que no tengas todavía un pedido, la solución
sería hacer una Left Outer join entre Producto y Pedido.

SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;

Right outer Join. Exactamente lo mismo pero a la inversa, cuando quieres listar las filas de la tabla B
aunque no estén relacionadas con ninguna fila de la tabla A. Es un operador un poco redundante ya que se
podría cambiar simplemente el orden de las tablas en el Join y utilizar un left outer para conseguir el
mismo efecto. No obstante, y como parte de Joins múltiples, es útil tener los dos para una mejor
comprensión de la consulta.
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;

FULL OUTER JOIN. Es como la suma de las dos anteriores. Queremos tanto las filas de la A como las de
B, tanto si hay match como si no (evidentemente cuando haya match la consulta devolverá todos los
campos de A y B que hayamos indicado, cuando no, la consulta devolverá sólo los campos de A o B).

SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name =


table2.column_name WHERE condition;
● La normalización es una técnica utilizada para diseñar tablas en las que las redundancias de datos
se reducen al mínimo
● Regla Descripción Primera Forma Normal (1FN) Incluye la eliminación de todos los grupos
repetidos.
● Segunda Forma Normal (2FN) Asegura que todas las columnas que no son llave sean
completamente dependientes de la llave primaria (PK).
● Tercera Forma Normal (3FN) Elimina cualquier dependencia transitiva.

PRIMEFACES SHOWCASE

https://primefaces.github.io/primefaces/12_0_0/#/core/ajaxRendering

https://www.primefaces.org/showcase/index.xhtml?jfwid=d0ec4

programación funcional
programación reactiva

También podría gustarte