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.
- 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.
| 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 |
| 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 |
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 |
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 |
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 |
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 |
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 |
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 |
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
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 |
# 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 --versionPara instrucciones detalladas, consultar el Capitulo 1: Configuracion y Tooling Esencial.
| 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 |
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
- Lectura Secuencial: Se recomienda seguir el orden de los modulos para una comprension progresiva.
- Consulta por Tema: Utilizar el Indice General o la tabla de contenidos para acceder a temas especificos.
- Referencia Rapida: La Guia Rapida proporciona sintaxis y patrones condensados.
- Practica: Ejecutar los ejemplos de codigo en el REPL o en proyectos sbt.
Las contribuciones son bienvenidas. Si encuentras errores o tienes sugerencias:
- Abre un Issue describiendo el problema o mejora propuesta.
- Para correcciones de contenido, crea un Pull Request con una descripcion clara.
- 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.
Este proyecto se distribuye bajo la licencia MIT. Consultar el archivo LICENSE para mas detalles.
- Documentacion Oficial de Scala 3
- Scala 3 Book
- Typelevel (Cats Effect)
- ZIO Documentation
- Apache Pekko
- Apache Spark
Desarrollado por Edu Díaz (RGiskard7) ❤️
