GitXplorerGitXplorer
m

curso-programacao-funcional-java

public
15 stars
5 forks
0 issues

Commits

List of commits on branch master.
Verified
1c2711794bc938487e749f631565fe81554a5cbb

Atualiza imagem de interfaces funcionais.

mmanoelcampos committed 10 months ago
Verified
5fc5f0726b60847e979eae4406ade7140fc2a067

Atualiza link de javadoc das Functional Interfaces para o JDK 21

mmanoelcampos committed 10 months ago
Verified
448b58fb0c407f06a2d323c4e82e2ccebab3a260

Fix build

mmanoelcampos committed 10 months ago
Verified
f76f4852e88b2a856f021334936ed5434602b755

Ajustes no projeto

mmanoelcampos committed 10 months ago
Verified
fa75852f990d6e9a201ae9a05f9e46e93debfcac

Atualiza gerador de estudantes.

mmanoelcampos committed 10 months ago
Verified
1c135f8e678f8c1aa2548e51649ede904dd61444

Adiciona plano de ensino

mmanoelcampos committed 10 months ago

README

The README file for this repository.

:javadoc: https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/package-summary.html :source-highlighter: highlightjs :numbered: :icons: font :jdk_version: 17+

ifdef::env-github[] :outfilesuffix: .adoc :caution-caption: :fire: :important-caption: :exclamation: :note-caption: :paperclip: :tip-caption: :bulb: :warning-caption: :warning: endif::[]

= Programação Funcional, Expressões Lambda e Streams em Java {jdk_version} image:https://img.shields.io/github/actions/workflow/status/manoelcampos/programacao-funcional-java/build.yml?branch=master[GitHub Workflow Status]

https://gitpod.io/#https://github.com/manoelcampos/programacao-funcional-java[image:https://gitpod.io/button/open-in-gitpod.svg[]]

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 {jdk_version} e entender o funcionamento de novos recursos da linguagem, como Streams e Expressões Lambda.

[NOTE]

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.

== Repositórios com exercícios das aulas

== 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 https://youtube.com/playlist?list=PLMod1hYiIvSZL1xclvHcsV2dMiminf19x[YouTube]. Apesar de serem em inglês, os vídeos contam com legendas oficiais (que podem ser traduzidas para o português).

== Interfaces Funcionais

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

image:interfaces-funcionais.png[link={javadoc}]

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 link:{javadoc}[aqui]. Entender este vocabulário faz toda a diferença na sua fluência em programação funcional.

== 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 https://github.com/manoelcampos/jdk-new-features[este repositório] (apenas em inglês).