Skip to content

Manual de Ingeniería de Software con Scala 3. Guía completa de cero a "experto": Programación Funcional, Sistemas Reactivos (Pekko/ZIO/Cats), Big Data (Spark) y Arquitectura

License

Notifications You must be signed in to change notification settings

RGiskard7/manual-scala-3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Manual Definitivo de Scala 3

Scala License Status

Descripcion

Este repositorio contiene un manual exhaustivo de Scala 3, disenado para transicionar desarrolladores con experiencia en Java o Python hacia el ecosistema profesional de Scala. El contenido abarca desde los fundamentos del lenguaje hasta arquitecturas reactivas, Big Data con Apache Spark, y sistemas de efectos como Cats Effect y ZIO.

Caracteristicas

  • 100% Scala 3 Nativo: Sintaxis moderna sin codigo legacy de Scala 2.
  • Enfoque Industrial: Cobertura de Apache Pekko, Apache Spark, Cats Effect, ZIO y Doobie.
  • Comparativas Practicas: Cada capitulo incluye comparaciones directas entre Java, Python y Scala.
  • Ejemplos Realistas: Codigo ejecutable orientado a casos de uso profesionales.

Acceso Rapido

Recurso Descripcion
Guia Rapida (Cheatsheet) Referencia condensada de sintaxis y patrones
Indice General Vista secuencial de todos los capitulos
Infografia Diagrama visual del ecosistema Scala

Tabla de Contenidos

Introduccion

Documento Descripcion
Desmitificando la Programacion Funcional Los pilares fundamentales de la PF en Scala
Los Pilares Conceptuales de Scala Ontologia unificada POO + Programacion Funcional
Guia de Transicion: Java/Python a Scala 3 Comparativa de codigo y cambio de mentalidad

Modulo 1: The Scala Way (Fundamentos)

Fundamentos del lenguaje, modelado de datos y programacion funcional basica.

Capitulo Titulo Temas Clave
Resumen Visual Diagrama Mermaid del Modulo 1 -
Capitulo 1 Configuracion y Tooling Esencial JVM, Coursier, sbt, Scala CLI, REPL
Capitulo 2 El Paradigma Hibrido: POO y PF val vs var, inmutabilidad, expresiones
Capitulo 3 Modelado de Datos class, object, trait, case class
Capitulo 4 Funciones y Control de Flujo Lambdas, HOFs, for-comprehensions
Capitulo 5 Colecciones Funcionales List, Set, Map, map, filter, fold
Capitulo 6 Pattern Matching y ADTs match, sealed trait, enum, exhaustividad

Modulo 2: Scala Funcional Moderna

Sistema de tipos avanzado, abstracciones contextuales y metaprogramacion.

Capitulo Titulo Temas Clave
Resumen Visual Diagrama Mermaid del Modulo 2 -
Capitulo 7 Manejo de Ausencia y Errores Puros Option, Either, Try
Capitulo 8 Abstracciones Contextuales given, using, Term Inference
Capitulo 9 Type Classes y Extension Methods Patron Type Class, extension
Capitulo 10 Tipos Avanzados de Scala 3 Union Types, Intersection Types, opaque type
Capitulo 11 Metaprogramacion inline, Macros, Quoting, Splicing

Modulo 3: Ecosistema Industrial (Backend y Reactividad)

Concurrencia, sistemas de efectos, desarrollo web funcional y modelo de actores.

Capitulo Titulo Temas Clave
Resumen Visual Diagrama Mermaid del Modulo 3 -
Capitulo 12 Concurrencia: Futures y Monada IO Future, IO, Fibers
Capitulo 13 Arquitectura de Efectos Cats Effect, ZIO, ZLayer
Capitulo 14 Desarrollo Web Funcional http4s, Tapir, OpenAPI
Capitulo 15 Modelo de Actores: Pekko Behavior, mensajes tipados, ActorRef
Capitulo 16 Pekko: Tolerancia a Fallos Supervision, Let-it-Crash, Event Sourcing
Capitulo 17 Sistemas Distribuidos Cluster Sharding, Persistencia Reactiva

Modulo 4: Ingenieria de Datos y Calidad

Big Data con Apache Spark, persistencia funcional, algoritmos y testing.

Capitulo Titulo Temas Clave
Resumen Visual Diagrama Mermaid del Modulo 4 -
Capitulo 18 Apache Spark: Big Data SparkSession, RDD, DataFrame, Dataset
Capitulo 19 Datos Estructurados con Spark Joins, agregaciones, Catalyst
Capitulo 20 JDBC Funcional con Doobie ConnectionIO, Transactor, SQL seguro
Capitulo 21 Estructuras y Algoritmos Inmutabilidad, recursion, complejidad O(n)
Capitulo 22 Property-Based Testing ScalaCheck, generadores, invariantes
Capitulo 23 Tooling y Arquitectura sbt multi-project, Scalafix, modularidad

Modulo 5: Temas Avanzados y Especializados

Testing, serialización, frontend, streaming y optimización.

Capitulo Titulo Temas Clave
Resumen Visual Diagrama Mermaid del Modulo 5 -
Capitulo 24 Testing Tradicional ScalaTest, MUnit, fixtures, asincronía
Capitulo 25 Serialización JSON Circe, uPickle, derives, rendimiento
Capitulo 26 Scala.js Frontend Laminar, cross-project, ScalablyTyped
Capitulo 27 FS2 Streaming Stream[F, O], backpressure, parEvalMap
Capitulo 28 Migración Scala 2 a 3 TASTy, given/using, scala-migrate
Capitulo 29 Optimizaciones inline, opaque type, JMH, flame graphs

Modulo 6: Integraciones y Comunicacion

gRPC (fundamentos, implementacion, streaming y seguridad), Kafka, GraphQL y compilacion nativa.

Capitulo Titulo Temas Clave
Resumen Visual Diagrama Mermaid del Modulo 6 -
Capitulo 30 Fundamentos gRPC y Tooling Protocol Buffers, ScalaPB, sbt plugins
Capitulo 31 Servicios gRPC con Futures Implementacion servidor/cliente, Netty
Capitulo 32 gRPC Reactivo y Streaming fs2-grpc, streaming bidireccional
Capitulo 33 Seguridad y Middleware gRPC TLS, interceptors, metadatos, health checks
Capitulo 34 Kafka Streaming fs2-kafka, backpressure, Avro/Vulcan
Capitulo 35 GraphQL con Caliban Queries, mutations, subscriptions
Capitulo 36 Scala Native Compilacion AOT, C-Interop, binarios

Estructura del Repositorio

manual-scala-3/
├── 00 - Introduccion/                    # Fundamentos conceptuales
├── 01 - Modulo 1 - The Scala Way/        # Fundamentos del lenguaje
├── 02 - Modulo 2 - Scala Funcional/      # Tipado avanzado y abstracciones
├── 03 - Modulo 3 - Ecosistema Industrial/# Backend, concurrencia y actores
├── 04 - Modulo 4 - Ingenieria de Datos/  # Spark, Doobie y testing
├── 05 - Modulo 5 - Temas Avanzados/      # Testing, JSON, Scala.js, FS2, migracion
├── 06 - Modulo 6 - Integraciones/        # gRPC, Kafka, GraphQL, Scala Native
├── assets/
│   └── images/                           # Banner e imagenes
├── CHEATSHEET - Guia rapida.md           # Referencia rapida
├── INDICE.md                             # Indice secuencial
├── Infografia_scala.png                  # Diagrama visual
└── README.md                             # Este archivo

Requisitos Previos

Para ejecutar los ejemplos de codigo contenidos en este manual:

Requisito Version Minima Descripcion
JDK 17 o superior Java Development Kit (OpenJDK recomendado)
Scala 3.5.1 o 3.3.1 LTS Lenguaje de programacion
sbt 1.9.x Scala Build Tool
Coursier Ultima Gestor de instalacion de Scala

Instalacion Rapida

# Instalar Coursier (gestor de instalacion)
curl -fL https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-linux.gz | gzip -d > cs
chmod +x cs && ./cs setup

# Verificar instalacion
scala --version
sbt --version

Para instrucciones detalladas, consultar el Capitulo 1: Configuracion y Tooling Esencial.


Tecnologias Cubiertas

Area Tecnologias
Build Tools sbt, Scala CLI, Coursier
Sistemas de Efectos Cats Effect, ZIO
Desarrollo Web http4s, Tapir
Actores y Distribucion Apache Pekko, Cluster Sharding
Big Data Apache Spark
Persistencia Doobie, Pekko Persistence
Testing ScalaTest, MUnit, ScalaCheck
Serializacion Circe, uPickle, Avro/Vulcan
Frontend Scala.js, Laminar
Streaming FS2, fs2-kafka
APIs gRPC/ScalaPB, GraphQL/Caliban
Compilacion Nativa Scala Native
Calidad de Codigo Scalafix, Metals

Publico Objetivo

Este manual esta dirigido a:

  • Desarrolladores Java que buscan modernizar su stack tecnologico
  • Desarrolladores Python que trabajan con Big Data y Apache Spark
  • Ingenieros de Backend interesados en sistemas reactivos y concurrencia
  • Data Engineers que requieren tipado estatico y rendimiento en la JVM

Uso del Manual

  1. Lectura Secuencial: Se recomienda seguir el orden de los modulos para una comprension progresiva.
  2. Consulta por Tema: Utilizar el Indice General o la tabla de contenidos para acceder a temas especificos.
  3. Referencia Rapida: La Guia Rapida proporciona sintaxis y patrones condensados.
  4. Practica: Ejecutar los ejemplos de codigo en el REPL o en proyectos sbt.

Contribuciones

Las contribuciones son bienvenidas. Si encuentras errores o tienes sugerencias:

  1. Abre un Issue describiendo el problema o mejora propuesta.
  2. Para correcciones de contenido, crea un Pull Request con una descripcion clara.
  3. Sigue las convenciones de formato existentes en el repositorio.

Este manual es un proyecto vivo. El feedback de la comunidad es fundamental para mantenerlo actualizado y util.


Licencia

Este proyecto se distribuye bajo la licencia MIT. Consultar el archivo LICENSE para mas detalles.


Referencias


Desarrollado por Edu Díaz (RGiskard7) ❤️

About

Manual de Ingeniería de Software con Scala 3. Guía completa de cero a "experto": Programación Funcional, Sistemas Reactivos (Pekko/ZIO/Cats), Big Data (Spark) y Arquitectura

Topics

Resources

License

Stars

Watchers

Forks

Contributors