quarta-feira, 20 de julho de 2016

Programação Funcional em Java

Neste Post vamos falar um pouco sobre Programação Funcional em Java, através de Lambdas. Obviamente não conseguiremos esgotar o assunto, mas podemos ter uma melhor noção dos aspectos que envolvem este novo paradigma e como aplicá-lo em Java.

Alguns conceitos:
Programação Funcional é um paradigma que deriva das funções matemáticas y = f(x), o que permite que algumas funcionalidades da linguagem Java possam ser de certo modo mantidas com uma verbosidade de código muito mais enxuta (menos código escrito).

Obviamente a programação funcional não traz apenas a escrita do código mais resumida. Uma das principais vantagens da programação funcional é a imutabilidade (pois não estamos pensando apenas nos dados e sim nas funcionalidades que serão executadas) e também no acoplamento das funções, o que traz uma maior coesão dos softwares desenvolvidos.

Entretanto o modo de pensar precisa ser revisto, pois tudo agora é condicionado a uma entrada e uma saída (toda função pode ou não ter entrada, realiza sua tarefa e gera alguma saída). Vamos entender um pouco:


   1.  public class App{
   2.      public static void main(String args[]){
   3.         Runnable runnable = new Runnable(){
   4.             @Override
   5.             public void run(){
   6.                System.out.println("Ola OzJUG");
   7.             }
   8.         };
   9.         Thread thread = new Thread(runnable);
   10.        thread.start();
   11.     }
   12. }

Analisando o código, o trecho que efetivamente interessa na lógica da Thread é efetivamente a linha 6. Toda a declaração e sobrescrita da classe anônima a partir da interface Runnable acaba gerando uma série de linhas de código que poderiam ser dispensáveis (já que são apenas formalismos declarativos).

Pensando em funcional, muita coisa pode mudar e a versão funcional

  1. public class App{ 
  2.     public static void main(String args[]){ 
  3.        Runnable runnable = () -> System.out.println("Rodando uma thread");
  4.        Thread thread = new Thread(runnable);
  5.        thread.start();
  6.     } 
  7. } 

Como podemos ver, a idéia de se utilizar a Interface Funcional Runnable (que só tem um método - run) é trazer a notação (na linha 3) de que seu código correspondente seja apenas uma única linha. Interpretamos esta linha como uma forma de "implicação", ou seja, "se temos um runnable então seu código é System.out.println...".

Claro que este é apenas um exemplo simples, outros exemplos estão disponíveis em nosso repositório, do GITHUB.

quarta-feira, 6 de julho de 2016

Hello World

Neste post, inauguramos o Osasco JUG - Java Users Group.
Tivemos a presença ilustre do Programador Real, André Noel.
Na primeira reunião, a sede da TechSchool  foi definida como sendo o local oficial das próximas reuniões.
Nosso Twitter: @ozjug
Teremos um calendário quinzenal, com cada encontro acontecendo às 4as feiras, das 19h30 as 21h30.
Membros presentes nesta primeira reunião

- Adriano Lourenço (@diadrianopsa)
- Prof. Isidro (@fmassetto)
- André Noel (@programadorreal)
- Francisco Oliveira (@delley_fx)
- Luana Garcez Massetto (@LuanaGarcez)
- André Dorte (@AndreDorte)
- Moisez Dantas (@moisez_dantas) - Virtual