Nashorn: Javascript sobre a JVM

Programar em Java está cada vez mais rápido e simples, desde as mudanças que começaram a surgir na versão 7 do Java, a verbosidade característica da linguagem foi reduzindo e agora no Java 8 alcançamos um nível muito superior com a programação funcional presente na linguagem. Porém, muitos ainda dizem que estas funcionalidades chegaram um pouco atrasadas na linguagem, e durante este tempo que ainda não tinhamos a programação funcional presente no Java, foram surgindo outras linguagens sobre a JVM que visavam trazer novos paradigmas para os programadores. ...

August 22, 2017 · Lucas Polo

Mapeando e Reduzindo - Java 8

As vezes precisamos processar dados em um volume maior, onde é necessário filtrar a informação, selecionar ou alterar o que queremos para depois realizar o processamento. Como exemplo, vamos imaginar uma lista de alunos, onde cada instância tem seu nome e nota. Desta lista queremos a média geral, a média dos alunos aprovados (ou seja, quem tirou nota seis ou mais) e a média dos reprovados (nota menor que seis). Para isso, vamos primeiro visualizar nossa lista: 1 2 3 4 5 6 Listalunos = new ArrayList<>(); Aluno aluno1 = new Aluno("Cebolinha", 8.0); Aluno aluno2 = new Aluno("Cascao", 6.5); Aluno aluno3 = new Aluno("Monica", 9.0); Aluno aluno4 = new Aluno("Magali", 3.0); alunos.addAll(Arrays.asList(aluno1, aluno2, aluno3, aluno4)); Apesar da simplicidade dos nossos dados, para poder separar a nossa lista de forma a realizar esta média, precisamos iterar sobre todos os seus elementos. Vamos fazer primeiro a média mais simples, sem nenhum critério: 1 2 3 4 5 6 7 Double media = new Double("0"); int quantidadeDeAlunos = 0; for (Aluno aluno : alunos) { media = Double.sum(media, aluno.getNota()); quantidadeDeAlunos++; } System.out.println(media / quantidadeDeAlunos); ...

March 6, 2014 · Lucas Polo

Filtrando resultados (Predicados) - Java 8

Muitas vezes precisamos filtrar listas, listas de todos os tipos, desde números básicos, passando por Strings, até tipos complexos. Abaixo temos um exemplo simples disto, onde temos uma lista com alguns nomes e queremos filtra-la e exibi-la para o usuário (no caso, todos os nomes que tiverem a letra “u” serão exibidos): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 List<string> nomes = new ArrayList<>(); nomes.add("João da Silva"); nomes.add("Joaquim da Padaria"); nomes.add("Lucas Polo"); nomes.add("Chaves"); List<string> nomesFiltrados = new ArrayList<>(); System.out.println("Iniciando filtragem"); for (String nome : nomes) { System.out.println("Avaliando: " + nome); if (nome.contains("u")) nomesFiltrados.add(nome); } System.out.println("Iniciando impressão"); for (String nome : nomesFiltrados) { System.out.println(nome); } A saida é: Iniciando filtragem Avaliando: João da Silva Avaliando: Joaquim da Padaria Avaliando: Lucas Polo Avaliando: Chaves Iniciando impressão Joaquim da Padaria Lucas Polo Repare que primeiros os resultados são filtrados e depois exibidos, mas variando com o tamanho da lista, pode demorar muito tempo para filtrarmos uma lista inteira, e por isso, muitas vezes, é melhor avaliar se o elemento passa no filtro e trata-lo devidamente, ganhando assim mais velocidade. Na programação funcional, temos um meio de lidar com isso, chamado avaliação preguiçosa. Lembrando que métodos também pode ser passados como parâmetros, por isso, podemos armazena-los e utilizar suas funções posteriormente. Métodos que realizam a avaliação de elementos, são conhecidos como predicados, que no Java é representado pela classe Predicate e contem o método filter. ...

March 2, 2014 · Lucas Polo

Métodos como parâmetros - Java 8

O Java 8 que será lançado em breve e já possui versões de teste disponíveis para download tem uma novidade interessante, que é tratar métodos como objetos (criando assim o suporte a funções Lambda). Uma vez que métodos podem ser tratados como objetos, você pode passa-los como parâmetro ou cria-los em tempo de execução. Vamos dissecar mais sobre essas novidades no decorrer do tempo, mas por enquanto vamos ver um exemplo do que podemos fazer. Antigamente, para ler um arquivo e imprimir o seu conteúdo linha a linha poderíamos fazer algo assim: ...

September 22, 2013 · Lucas Polo