Prólogo
Sobre este libro
1. Introducción
2. Objetivo y estructura
3. IDE para Kotlin
Experimentando con Kotlin en back end
4. Poco código y grandes resultados
4.1 El primer programa en Kotlin
4.2 Programa para escribir varias líneas de un fichero de texto
4.3 Programa para leer líneas de un fichero de texto
4.4 Programa para contar las líneas de un fichero
4.5 Programa para copiar un fichero
4.6 Descargar un fichero
4.7 Acceso a un recurso desde código .
5. Funciones
5.1 Funciones que no requieren parámetros de entrada y salida
5.2 Funciones con parámetro de entrada y sin parámetro de salida
5.3 Funciones con parámetro de entrada y salida
5.4 Funciones con parámetro por defecto
5.5 Funciones con parámetros variables
5.6 Funciones con parámetros genéricos
5.7 Funciones de extensión
5.8 Funciones infix
5.9 Expresión y funciones lambda
5.10 Funciones de orden superior
6. Clases
6.1 Definición de una clase y compatibilidad con Java
6.2 Experimentando con métodos
6.2.1. Ejemplos de métodos sin parámetro de entrada y con parámetro de salida
6.2.2. Ejemplos de métodos privados, parámetros variables, con parámetro de entrada y salida
6.3 Tipos de clases
6.3.1 Data: clases de datos
6.3.2 Enum: clases de valores enumerados
6.3.3 Clases heredables
6.3.4 Tipo interfaz
6.3.5 Clase abstracta
6.3.6 Clases anidadas: Inner
6.3.7 Objetos
6.3.8 Clases selladas
6.4 Alias
6.5 Visibilidad de los modificadores
6.6 Retrasar la inicialización de propiedades
6.6.1 Inicialización tardía para: var
6.6.2 Inicialización tardía para: val
7. Ficheros
7.1 Trazas o logs: log4j2
7.1.1 Configurando Log4j2 por consola
7.1.2 Configurando Log4j2 por fichero
7.2 Ficheros de texto
7.3 Ficheros properties
7.4 XML
7.5 RDF y OWL
7.6 EXCEL y CSVs
7.7 JSON y GSON
7.7.1 Serialización/deserialización JSON
7.8 ePub
7.9 Zip
7.10 FASTA (fa)
8. Bases de datos
8.1 Montar el entorno de pruebas
8.2 Relational DBMS
8.2.1 SQLite
8.2.2 MySQL
8.2.3 MariaDB
8.2.4 Oracle
8.3 NoSQL
8.3.1 Key-value Stores: Redis
8.3.1.1 Redis
8.3.2 Document Stores: MongoDB
8.3.2.1 MongoDB
8.3.3 RDF Stores: Apache Jena, Virtuoso y AllegroGraph
8.3.3.1 Apache Jena – TDB
8.3.3.2 AllegroGraph
8.3.3.3 Virtuoso y la DBpedia
9. Números
9.1 Los números árabes
9.2 Colecciones útiles para números
9.3 Determinantes
9.4 Sistemas de ecuaciones lineales
9.4.1 Regla de Cramer
9.4.2 Método de Gauss Jordan
9.4.3 Método Gauss-Seidel
9.5 Fibonacci
9.6 Números primos
9.7 Trigonometría
9.8 Cálculo de integrales
9.9 Transformada rápidade Fourier
10. Cadenas
10.1 Cadenas
10.2 Concatenar Strings
10.3 Acceso a los caracteres de un String
10.4 Sutil diferencia entre vacíos y/o espacios
10.5 Arrays de Strings
10.6 Maps
10.7 Rellenando Strings
10.8 Quitando espacios de un String
10.9 Obtener términos de un String
10.10 Subcadenas
10.11 Conversores
10.11.1 ASCII
10.11.2 Hexadecimal
10.11.3 Binario
10.12 Claves de acceso y funciones hash
11. Concurrencia
11.1 Thread
11.1.1 Hilo principal y secundarios
11.1.2 Sección crítica de código
11.1.2.1 Semáforos
11.1.2.2 Monitores
11.1.2.3 El problema del productor-consumidor
11.1.3 Comparativas de rendimiento
11.2 Corrutinas
11.2.1 Creación de corrutinas
11.2.2 runBlocking() gestinando corrutinas
11.2.3 Funciones de suspensión
11.2.4 Canales (Channel)
11.2.5 Comparativas de rendimiento
11.3 Recapitulando ideas
12. Despliegues en war de RESTful
12.1 Ktor
12.2 Conceptos: API, REST, SOA y RESTful
12.3 Arquitectura en tres capas
12.4 Capa de negocio
12.4.1 Acercamiento a Ktor
12.4.2 Configuraciones de servidores
12.4.3 EL proyecto Ktor-cap12
12.4.3.1 Serialización y deserialización
12.4.3.2 Enrutamiento
12.4.3.3 Sesiones
12.4.3.4 Autentificación
12.4.3.5 Recomendación de mejora
12.5 Despliegues
12.5.1 War en Tomcat 9
12.5.2 En docker, war en Tomcat 9
Anexos
Anexo 1. Docker
Anexo 2. Máquina virtual para descargar
Anexo 3. Referencia rápida de la sintaxis Kotlin
Anexo 4. Maven y Gradle
Anexo 5. Conceptos generales sobre Programación Orientada a Objetos
Anexo 6. DBeaver
Bibliografía
Sobre el autor