Blog

Listas en Java: tipo List

Cuando en el post de Colecciones, hablaba de las listas en Java, mencionaba dos tipos de listas: List y Set. Ahora vamos a centrarnos en las listas de tipo List que manejaremos con la clase ArrayList.

La clase ArrayList

La sintaxis de la declaración de una de estas lista con la clase ArrayList es la siguiente:

ArrayList<tipo de elemento> nombreDeLaLista = new ArrayList< > ;

Vamos a verlo con un ejemplo práctico.

Sigue leyendo Listas en Java: tipo List

Colecciones en Java

En un post anterior habíamos visto los Arrays que nos obligaban a manejar un número fijo de elementos. Se inicializan con una dimensión fija que luego no podemos modificar durante la ejecución del programa.

Java proporciona otro tipo de Clases más flexibles y con ventajas sobre los arrays que son las Colecciones. Con estas vamos a poder trabajar, abstrayéndonos del índice y manejando un número de elementos variable durante la ejecución del programa.

Hay varias clases interesantes para trabajar con colecciones y todas extienden de la clase padre Collection.

Sigue leyendo Colecciones en Java

Hadoop

Hadoop es un ecosistema, es decir, un conjunto de componentes que implementan las distintas funciones necesarias para trabajar en entornos Big Data. Esta pensado para trabajar con Clusters de ordenadores de bajo coste. Y es un proyecto de la fundación Apache, por lo que cuenta con una licencia de software libre, lo que significa que cualquiera puede usarlo sin tener que pagar por ello.

Hay dos componentes fundamentales en el ecosistema Hadoop:

  • El sistema de ficheros distribuidos HDFS (Hadoop Distributed File System): Basado en la Big Table de Google que fue el primer sistema de ficheros distribuidos para trabajar con Big Data. Es el sistema de ficheros para trabajar con los ordenadores del clusters, realizando todas las funciones clásicas de un sistema de ficheros: guardar datos, localizar y acceder a ellos.
  • El sistema de procesamiento MapReduce: Es el sistema para procesar los datos en el Cluster, que también está tomado de Google, quien lo desarrollo para procesar la información de las distintas páginas web que recogía para las búsquedas.

La clave del éxito de Hadoop es que divide el almacenamiento de los datos y el trabajo de procesamiento entre los distintos ordenadores del cluster, realizando varias operaciones en paralelo, pudiendo así manejar muchos datos en menor tiempo.

Sigue leyendo Hadoop

Arquitectura Big Data

En posts anteriores he hablado de la aparición del Big Data y de las famosas Vs. De repente, se hizo necesario ser capaz de manejar muchísimos más datos con una afluencia muchísimo mayor. Las arquitecturas tradicionales no podían lidiar con esta nueva situación, y se desarrollaron las arquitecturas Big Data. Estas últimas enfocadas a trabajar con los datos en las nuevas condiciones.

Antes de la aparición del Big Data, con un buen servidor y un RAID de discos era suficiente para procesar y almacenar todos los datos que manejábamos. Esta arquitectura era además escalable y las necesidades de ampliación eran asumibles. Sin embargo, con la llegada del Big Data, y la gran cantidad y variedad de datos que tenemos que manejar y almacenar, las arquitecturas tradicionales basadas en un servidor resultan insuficientes. Se hace inviable procesar toda esta información en un único ordenador, y se desarrollan arquitectura Big Data basadas en Clusters de ordeanadores (un conjunto de ordenadores trabajando de manera coordinada para resolver una misma tarea).

Sigue leyendo Arquitectura Big Data

Ejercicios con Clases en Java

Última actualización: octubre 2024

Aquí te dejo varios ejercicios con Clases en Java, para que puedas practicar lo aprendido en post anteriores. No explico la solución, sencillamente muestro una posible solución, pero mi recomendación es que intentes hacer los ejercicios sin mirar mi solución, y que la consultes sólo si te atascas.

Ejercicio 1: La clase Pais

Crea una clase llamada Pais.

La clase debe tener los siguientes parámetros (recuerda que los parámetros deben ser declarados como privados por cuestiones de seguridad):

Sigue leyendo Ejercicios con Clases en Java

El Polimorfismo

Última actualización: julio 24

El polimorfismo hace referencia a la capacidad de que objetos de diferentes clases, respondan de manera diferente a un mismo método. En Java, esto se consigue mediante la herencia y las interfaces, posibilitando que distintas clases implementen un mismo método de formas distintas, ajustándolo a sus necesidades.

En el polimorfismo por herencia, las distintas subclases implementan un método de la superclase de distintas maneras, ajustándolo a las necesidades específicas de la subclase en cuestión.

Actividad: Practicando con el polimorfismo

  1. Abrimos un nuevo proyecto de Java en nuestro IDE de trabajo.
  2. Primero definimos la superclase: Animal
class Animal{
    public void comer() {
        System.out.println("El animal se alimenta");
    }
}
Sigue leyendo El Polimorfismo

Las Clases abstractas y los interfaces

Última actualización: julio 24

Las Clases abstractas y los interfaces son mecanismos que nos ayudan a definir estructuras abstractas, que son especificadas en las clases que las implementan de acuerdo a sus necesidades. Esto habilita al programador de Java a definir un grado de abstracción en sus desarrollos, posibilitando una programación más estructurada y modular, favoreciendo la reutilización del código.

Clases abstractas

Las Clases abstractas nos permiten un mayor nivel de abstracción al definir la estructura de los objetos de nuestro programa. Podemos indicar solamente que comportamiento hay que definir, pero no indicar como. En la práctica esto se traduce en declarar un método, pero no implementarlo. Esto lo indicamos empleando el modificador abstract, que se incluirá tanto en la firma del método como de la Clase que lo contiene.

Sigue leyendo Las Clases abstractas y los interfaces

Curado de datos

Ya hemos visto como en Big Data manejamos una gran cantidad de datos que se generan de manera constante a gran velocidad. Datos que además provienen de distintas fuentes, con distintas estructuras, organizadas de distintas maneras. La curación de datos es la actividad por la que organizamos todos estos datos de la misma manera, dejándolos preparados para su posterior análisis y extracción de información.

Proceso de curado de datos
Curado de datos
Sigue leyendo Curado de datos

¿Qué es Big Data?

Antes de introducirnos en los entornos Big Data, tenemos que dar respuesta a la pregunta ¿Qué es Big Data?

El término Big Data está de moda, podríamos traducirlo por “flujo de datos masivos” y viene a representar el aumento exponencial de los datos que generamos, almacenamos y manejamos. Estos datos se han convertido en un activo muy valioso para las compañías, que se encuentran con el reto de saber gestionarlos y convertirlos en información útil para el negocio, para ayudar a la toma de decisión en tiempo real. De ahí la manida expresión de los datos son el petróleo del futuro.

Durante los últimos tiempos, esta cantidad de datos ha crecido significativamente, hasta el punto de que los sistemas de gestión de datos tradicionales no dan una respuesta satisfactoria a esta nueva realidad. Y cuando hablo de sistemas tradicionales, me refiero fundamentalmente a las bases de datos relacionales.

Seguramente, habréis escuchado en alguna ocasión, que un Smartphone tiene más capacidad de almacenamiento y computación de la que dispuso la NASA para colocar al hombre en la luna y traerlo de vuelta sano y salvo. Lo cierto es actualmente, en un día, enviamos más de 250 mil millones de correos, realizamos más de 6 mil millones de búsquedas en Google, casi 7 mil millones de reproducciones de videos en YouTube o más de 700 millones de tweets diarios.

Sigue leyendo ¿Qué es Big Data?

Bases de datos NO relacionales

En apartados anteriores, habíamos visto como las bases de datos relacionales supusieron la solución para el problema de redundancia que surgía cuando usábamos los ficheros planos para almacenar los datos. No obstante, las bases de datos relacionales presentaban otros problemas, y no tardaron en surgir otras alternativas de bases de datos que organizaban los datos de forma diferente, y que son conocidas en su conjunto como bases de datos no relacionales. En este post, recorreremos estas bases de datos, describiendo brevemente los distintos tipos y explicando como estructuran los datos para su almacenamiento.

La rigidez de las bases de datos relacionales

Al abandonar los ficheros planos y empezar a usar las bases de datos relacionales, solucionamos el problema de redundancia. Ya no teníamos que repetir datos en varias filas y además reducíamos sensiblemente el número de errores en la introducción de los datos, lo que obviamente redundaba en una notable mejora de la calidad de los mismos.

Sigue leyendo Bases de datos NO relacionales