Skip to content

manoelcampos/curso-programacao-funcional-java

Repository files navigation

Programação Funcional, Expressões Lambda e Streams em Java 17+ GitHub Workflow Status

open in gitpod

Programação funcional é um paradigma que tem suas origens em fundamentos matemáticos da década de 1930. Mas tal paradigma se popularizou possivelmente apenas na última década. Ele permite criar software de forma mais clara, com menos código e menor complexidade por meio de reaproveitamento e composição de funções. Tal paradigma além de facilitar e agilizar a escrita de código, tende a gerar software com menos bugs e mais fácil de manter.

Programação orientada a objetos é o paradigma mais utilizado para desenvolvimento de software. Mas assim como programação estruturada também é utilizada em conjunto com tal paradigma, programação funcional é um recurso a mais que pode utilizar em softwares que seguem programação estruturae e/ou orientada a objetos.

Se você não conhece programação funcional ainda, você está sofrendo mais do que deveria para desenvolver software.

Este repositório fornece um projeto para permitir praticar programação funcional no Java 17+ e entender o funcionamento de novos recursos da linguagem, como Streams e Expressões Lambda.

O recurso de Streams introduzido no Java 8 (não confundir com InputStream e OutputStream) permite processamento de dados de forma sequencial e paralelo. Neste último caso, processamento paralelo (utilizando múltiplas CPUs de uma mesma máquina) tem tudo a ver com sistemas distribuídos. Desta forma, tais recursos são de fundamental importância para complementar a formação do estudante em programação.

2. Material de Apoio

O primeiro link é um tutorial em português. O segundo é um curso completo em vídeo, mas em inglês. Acessando o segundo link você pode ter acesso aos slides do curso. Concluindo o curso você ganha um certificado de participação da Oracle.

Como as inscrições não estão abertas a todo momento, você pode não conseguir acessar o material. Mas os vídeos estão disponíveis no YouTube. Apesar de serem em inglês, os vídeos contam com legendas oficiais (que podem ser traduzidas para o português).

3. Interfaces Funcionais

Ao iniciar em programação funcional no Java 8+, é preciso aprender um novo vocabulário.

interfaces funcionais

Conhecendo os termos deste vocabulário, quando você vir um método que solicita como parâmetro um objeto:

  • Predicate, saberá que pode passar uma expressão lambda que representa uma função que recebe um objeto (como Student) e retorna um valor boolean, representando uma condição em relação a tal objeto.

  • Consumer, saberá que pode passar uma expressão lambda que representa uma função que recebe um objeto (como Student), faz qualquer coisa com ele (consome) e não retorna nada (void).

Assim, para entender este novo vocabulário, você poderá ver o JavaDoc do pacote java.util.function no seu IDE, ou acessar aqui. Entender este vocabulário faz toda a diferença na sua fluência em programação funcional.

4. Novidades da Linguagem Java

O JDK há bastante tempo passou a ter um ciclo de releases que ocorre a cada 6 meses, incluindo muitas melhorias e recursos incríveis. Se você quer ficar por dentro das novidades em cada nova versão do JDK, veja este repositório (apenas em inglês).

About

☕️ƛ👩🏽‍💻Materiais e projetos de exemplo para aplicar os conceitos de programação funcional no Java 17+

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages