Програмиране на Kotlin: Spring 5, Ktor


Съботно-неделен, 6 седмици (45 часа). Цена: 450 лева (380 лв за студенти/ учащи).

Траян Илиев - Certified Java SE 6 ProgrammerOracle® Certified Professional - Java SE 6 Programmer
Тренингът се води от Траян Илиев, Oracle® сертифициран Java програмист с 18 годишен опит, разработчик на end-to-end reactive fullstack приложения с ES6+, TypeScript, Angular, React и Vue, 15+ години опит като IT трейнър за международни софтуерни компании. Има множество презентации на Voxxed Days, Java2Days, jPrime, jProfessionals, BGOUG, BGJUG, DEV.BG на теми като SOA & REST (JAX-RS, Microservices), Spring 5 и Spring Reactor, Java EE, CDI, Angular, React, high-performance Java programming.

График и записване

Продължителност: 45 часа

Цена: 450 лева / 380 лева

За кого е курса: Java SE/ Web разработчици

Какви умения ще придобиете:

  • систематично изучаване на детайлите и богатите възможности на езика Kotlin;
  • бърза разработка, тестване и внедряване на готови за продукция и сигурни уеб приложения и REST услуги с Kotlin, Ktor, Spring Boot, Hibernate, Spring MVC, WeFlux, Reactor, MySQL/PostgreSQL, MongoDB;
  • цялостни уеб проекти  – разработка, внедряване, оптимизация, сигурност и тестване на готови за продукция уеб приложения, услуги и клиенти с Kotlin, Ktor, Spring MVC, Hibernate, и REST;
  • детайлен hands-on опит с Kotlin, конкурентно програмиране с корутини и канали, REST microservices с Ktor, Spring Boot, Hibernate, JPA, Spring MVC, Spring Data, Spring Security, Spring MVC Test framework, KotlinTest, MockK, Logback, SLF4J, JSON, Protocol Buffers, реактивно програмиране с Kotlin Flow;
  • новости в Kotlin, Ktor, Flow, Spring 5, Spring Boot, WebFlux и  Reactor – функционално реактивно програмиране, обработка на потоци от събития в реално време, сигурност.

 

Програма на курса:

  1. Introduction to Kotlin – why Kotlin?, main features, comparison with Java, installation, InteliJ IDEA, Kotlin REPL, hello-kotlin program, programming and debugging with InteliJ, git workflow setup (1 h)
  2. Kotlin basic syntax – variables and values, basic types, numbers, strings, string templates, statements and expressions, main operators, operator overloading, equality, nullable values and null checks, null safety, type checks and automatic casts, ‘is’ and ‘as’, conditionals, functions, for and while loops, return, break and continue, labels, ranges, when expressions, arrays and array invariance, basic collections, basic classes and their instances, basic data classes (DTOs/ POJOs/ POCOs) (3 h)
  3. Packages and imports – package declarations, imports and default imports, static imports, classes and interfaces, visibility modifiers, modules (1 h)
  4. Classes and objects – classes, instances, constructors and initializer blocks, properties and fields, getters and setters, late initialization, implicit and qualified ‘this’, inheritance, overriding methods and properties, sequence of initialization, abstract classes, interfaces, functional (SAM) interfaces, decorator design pattern, extension functions and properties, companion objects, data classes, copying, destructuring, sealed classes, generics, type parameters, covariance and contravariance (in and out), invariance, type projections, star projections, generic constraints, generic functions, type erasure and reification using inline functions, nested classes, enum classes, object expressions and declarations, type aliases, inline classes, delegation, delegated properties, standard delegates – lazy, observable, memorization, storing values in a map, providing custom delegates. (5 h)
  5. Functions and lambdas – function declarations, parameters, default arguments, named arguments, Unit-returning functions, single-expression functions, functions with block bodies, explicit return types, varargs, destructuring, infix notation, function scope, local functions, member functions, extension functions, generic functions, tail recursive functions, function types, higher-order functions, lambdas and anonymous functions, scope functions, it – implicit name of a single parameter function, returning values from lambdas, function references, invoking a function type instance, closures, function literals with receiver, creating custom DSLs using type-safe builders, inline functions, non-local returns, inline properties. (4 h)
  6. Collections and sequences – Kotlin collections overview, collection types, mutable and immutable collections, main interfaces – List, Set, Map and their implementations, constructing from elements, empty collections, initializer functions for lists, copying, producing collections and maps by invoking functions on other collections, iterators and mutable iterators, sequences, constructing sequences from elements, Iterable, function, chunks (yielding), sequence and collection operations (map, filter, take, reduce, plus and minus operators, grouping, retrieving collection parts, retrieving single elements, ordering, aggregate operations, etc), List, Set and Map-specific operations. (3 h)
  7. Exception handling. Annotations. Reflection – errors and exceptions, exception handling with try-catch-finally, exception matching, declaring exceptions, using custom exceptions, Java interoperability, using annotations in Kotlin, defining custom annotations, kotlin-reflect, class references, callable references. (2 h)
  8. Data Serialization. Interoperability with Java – IO API for working with files and streams – kotlin.io package, working with text and binary files in Kotlin, object serialization – default (binary), CSV, JSON, protocol buffers, interoperability with Java. (3 h)
  9. Coroutines and concurrency – threads, kotlin.concurrent package extension classes and functions, difference between threads and coroutines, coroutines basics, writing own coroutines, bridging blocking and non-blocking worlds, waiting for a job, structured concurrency, scope builder, extract function refactoring, suspend modifier, global coroutines and daemon threads, cancellation and timeouts, cooperative cancelation, closing resources with finally, using withContext, non-cancellable blocks, asynchronous timeout and resources, composing suspending functions, sequential by default, concurrent using async, lazy async, structured concurrency with async. (3 h)
  10. Coroutine Context and Dispatchers – dispatchers and threads, unconfined vs confined dispatcher, debugging coroutines and threads, debugging with IDEA, using logging, jumping between threads, Job in the context, children of a coroutine, parental responsibilities, naming coroutines for debugging, combining context elements, coroutine scope, thread-local data, exception handling – CoroutineExceptionHandler, processing, aggregation, supervision. (2 h)
  11. Asynchronous Flow – representing multiple values, sequences, suspending functions and flows, pull (cold) streaming, flow cancellation, flow builders, flow operators, flow context, flowOn operator, buffering, conflation, composing flows, flow exceptions, exception transparency, flow cancellation checks, making busy flow cancellable, launching flow, imperative vs. declarative flow programming, reactive programming, Flow and Reactive Streams. (2 h)
  12. Shared mutable state and concurrency – sending data and closing a channel, iteration over channel (for-in), creating channel producers and pipelines, message processing patterns – Fan-out, Fan-in, channel buffering, ticker channels, shared state and mutual exclusion, thread-safe data structures, thread confinement, actors, awaiting multiple suspending functions using select expression. (2 h)
  13. Test Driven Development (TDD). Logging – using KotlinTest, tests and assertions, writing TDD and BDD tests, choosing a spec, project config, matchers, inspectors, interceptors, property testing, table-driven testing, tags, conditions and config, grouping tests in test suits, testing for exceptions, mocking objects in Kotlin using MockK library. Idiomatic logging using Logback and SLF4J. (3 h)
  14. Databases and persistence. Spring Data – connecting to MySQL/PostgreSQL DB using Spring Data JPA, executing SQL CRUD operations, connecting and inserting data in MongoDB, CRUD operations with Spring Data Mongo. (3 h)
  15. Spring Boot, Spring MVC and Web Flux REST/ WebSocket API development in Kotlin– introduction to HTTP, AJAX, REST, CORS, WebSocket, domain driven design best practices, building REST APIs and applications with Spring MVC using annotations, functional reactive web service implementation using Spring Web Flux and Reactor, handling errors, deploying for production, testing REST APIs with Spring. (4 h)
  16. Rapid development of production REST APIs using Ktor – advantages of Ktor and Kotlin, low-ceremony, DSL, coroutines, implementing asynchronous HTTP/S 1.x/2.x and WebSocket services and clients, configuring server engine by composing modules, features and pipelines – routing, sessions, compression, authentication (JWT, OAuth, LDAP), CORS, JSON, audio/video streaming, static content, sessions, templates, error handling, webjars, Micrometer and Dropwizard monitoring, structured HTTP request handling, type-safe routing DSL using higher order functions, supported ApplicationEngines (Netty, Jetty, CIO, Tomcat, etc.), testing Ktor APIs using TestApplicationEngine, reactive Flow and RxJava integrations, building and testing end-to-end reactive micro-services with Ktor. (4 h)

Презентациите, демонстрациите и hands-on упражненията се провеждат паралелно с цел незабавно затвърждаване на концепциите чрез практика.

Участниците ще се научат как бързо да разработват, внедряват и тестват готови за продукция и сигурни уеб приложения и REST услуги с Kotlin, Ktor, Spring Boot, Hibernate, Spring MVC, WebFlux, Reactor, MySQL/PostgreSQL, MongoDB. Обучението се осъществява в малки групи – до 10 човека. По време на тренинга ще можем да дискутираме и допълнителни въпросиима възможност за дискутиране на допълнителни въпроси от интерес за участниците.

За повече информация и въпроси ни пишете на e-mail: office@iproduct.org

График и записване