SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Sistemas Distribuídos – Java 8
Luiz Felipe de Andrade Malmonge – 55987
Rafael B. Januzi – 55951
Victor Ronconi - 55959
UNIFESP | Sistemas Distribuídos - Java 8 1/20
Introdução
Sem grandes mudanças desde 2004 (Java 5)
- 50 novas funcionalidades
2/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Mudanças
Alterações em vários níveis.
- Linguagem
- Biblioteca
- JVM
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Melhor produtividade
- Muito código para pouca coisa
3/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Motivação
Melhorar a legibilidade do código
- Facilitar a manutenção
Melhorar a utilização multi-core/processor
- Menos diferenças entre o código concorrente e paralelo
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Expressões Lambda
4/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Linguagem
Default methods
Anotações em parâmetros
Melhoria na funcionalidade Generics
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Derivada da programação funcional – “Functional Style”
5/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Lambda (I)
Grande redução do tamanho do código
Substitui classes aninhadas anônimas
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Exemplo:
6/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Lambda (II)
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Adição de novos métodos em interfaces
- Sem quebra de compatibilidade
7/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Default Methods (I)
UNIFESP | Sistemas Distribuídos - Java 8
Provê Herança Múltipla Comportamental
- Dois objetos com a mesma interface podem executar métodos diferentes
- O compilador sempre sabe qual chamar
Introdução
Problema anterior ao Java 8:
- Interface A
- Classes B e C implementam a interface
- É adicionado um método na interface A
- Error! É necessário implementar o novo método em B e C
8/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Default Methods (II)
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Com o Java 8
- Implementação default do novo método (Error)
9/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Default Methods (III)
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Anotar parâmetros de métodos
- Implementação default do novoVerificação de Null Pointers
- Verificação de Condições de corrida
10/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Annotations
UNIFESP | Sistemas Distribuídos - Java 8
Maior chance de detectar erros
Introdução
Melhora inferência de tipos
- Corrige problema do tipo:
11/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Generics <T>
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Adicionar as expressões Lambda
- Atualizar 4024 classes!
- Melhoria de performance
12/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Bibliotecas (I)
UNIFESP | Sistemas Distribuídos - Java 8
Demonstrar boas práticas com as novas funcionalidades
Introdução
Variáveis de atualização escaláveis
- DoubleAccumulator e DoubleAdder
- Mais atualizações (Adições) do que leituras
- Cada thread mantem uma cópia da variável
- Lock e acumula todas as alterações em uma única variável apenas
quando houver uma leitura (menor overhead)
13/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Bibliotecas (II)
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Atualizações no ConcurrentHashMap
- Melhorias no suporte à exploração
- Melhorias da computação de chaves
14/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Bibliotecas (III)
UNIFESP | Sistemas Distribuídos - Java 8
Melhorias no ForkJoinPool
- Threads aguardando I/O são colocados juntas em uma
única thread melhorando a eficiência
Introdução
Operações em massas de dados para Collections
- Principal razão para default methods
- Filter, Map e Reduce
- Recuperação de dados de maps (com streams)
melhorada (serial ou paralela)
- Implementações paralelas com framework Fork-Join
- Lazy evaluation, por exemplo, getFirst()
- parallelSort() em java.util.Arrays
15/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Bibliotecas (IV)
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Novas APIs para Date, Time e Calendar
- Não haviam sido projetadas da melhor maneira
- Datas parciais (07/05/X)
- Períodos de tempo
- Sistemas de calendários básicos, mas facilmente extensíveis
16/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Bibliotecas (V)
UNIFESP | Sistemas Distribuídos - Java 8
Codificação/Decoficação Base64 passa a ser nativa
Introdução
Profiles compactados
- Permite utilizar apenas parte da JRE
- Compact Profile 1, 2 e 3
- Sistemas embarcados com pouca
memória disponível
17/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Bibliotecas (VI)
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Nashorn
- Engine para JavaScript
- Leve e com alta performance
- Integrada à JRE
- Utiliza a javax.script
- Comando jjs para execução de scripts
18/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Virtual Machine (I)
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Aposentadas combinações de Garbage Collection
pouco utilizadas
- DefNew + CMS
- ParNew + SerialOld
- Incremental CMS
- Não são removidas, mas irão gerar mensagens deprecated
19/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Virtual Machine (II)
UNIFESP | Sistemas Distribuídos - Java 8
Introdução
Video da Oracle:
https://www.youtube.com/watch?v=DCBIegEqKuo
20/20
Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades
Referências
UNIFESP | Sistemas Distribuídos - Java 8
Tutoriais da Oracle:
http://docs.oracle.com/javase/tutorial/
Overview do Java 8
http://www.oracle.com/technetwork/java/javase/overview/
java8-2100321.html
Curso:
http://blog.caelum.com.br/o-minimo-que-voce-deve-saber-
de-java-8/

Mais conteúdo relacionado

Semelhante a Sistemas distribuidos java_8

Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Fabrízio Mello
 
Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Fabrízio Mello
 
Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Fabrízio Mello
 
Performance Sql Server
Performance Sql ServerPerformance Sql Server
Performance Sql Serverjarlei
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopAlexei Znamensky
 
Tipos de automação de teste
Tipos de automação de testeTipos de automação de teste
Tipos de automação de testeMarcos Pessoa
 
Gerenciamento de Configuração
Gerenciamento de ConfiguraçãoGerenciamento de Configuração
Gerenciamento de ConfiguraçãoMarcelo Yamaguti
 
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaREST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaCarl Edwin Antonio Nascimento
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Carl Edwin
 
Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Thyago Maia
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoÉberli Cabistani Riella
 
Análise de Pontos de Função
Análise de Pontos de FunçãoAnálise de Pontos de Função
Análise de Pontos de FunçãoCristhiano Garcia
 
Uma Estratégia para Publicação dos Dados da Base do CEB-INEP/MEC no Padrão Li...
Uma Estratégia para Publicação dos Dados da Base do CEB-INEP/MEC no Padrão Li...Uma Estratégia para Publicação dos Dados da Base do CEB-INEP/MEC no Padrão Li...
Uma Estratégia para Publicação dos Dados da Base do CEB-INEP/MEC no Padrão Li...Fernando Maia da Mota
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Comunidade NetPonto
 

Semelhante a Sistemas distribuidos java_8 (20)

Plano De Ensino
Plano De EnsinoPlano De Ensino
Plano De Ensino
 
Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009
 
Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)
 
Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010
 
Performance Sql Server
Performance Sql ServerPerformance Sql Server
Performance Sql Server
 
APF
APFAPF
APF
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Tipos de automação de teste
Tipos de automação de testeTipos de automação de teste
Tipos de automação de teste
 
Gerenciamento de Configuração
Gerenciamento de ConfiguraçãoGerenciamento de Configuração
Gerenciamento de Configuração
 
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaREST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
 
Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
Visao Geral Rup
Visao Geral RupVisao Geral Rup
Visao Geral Rup
 
Análise de Pontos de Função
Análise de Pontos de FunçãoAnálise de Pontos de Função
Análise de Pontos de Função
 
Uma Estratégia para Publicação dos Dados da Base do CEB-INEP/MEC no Padrão Li...
Uma Estratégia para Publicação dos Dados da Base do CEB-INEP/MEC no Padrão Li...Uma Estratégia para Publicação dos Dados da Base do CEB-INEP/MEC no Padrão Li...
Uma Estratégia para Publicação dos Dados da Base do CEB-INEP/MEC no Padrão Li...
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0
 
Oficina 1 Confoa 2013 - Parte 3 - Interoperabilidade e repositórios - josé c...
Oficina 1  Confoa 2013 - Parte 3 - Interoperabilidade e repositórios - josé c...Oficina 1  Confoa 2013 - Parte 3 - Interoperabilidade e repositórios - josé c...
Oficina 1 Confoa 2013 - Parte 3 - Interoperabilidade e repositórios - josé c...
 
Bi ferramentas olap 1
Bi   ferramentas olap 1Bi   ferramentas olap 1
Bi ferramentas olap 1
 

Sistemas distribuidos java_8

  • 1. Sistemas Distribuídos – Java 8 Luiz Felipe de Andrade Malmonge – 55987 Rafael B. Januzi – 55951 Victor Ronconi - 55959 UNIFESP | Sistemas Distribuídos - Java 8 1/20
  • 2. Introdução Sem grandes mudanças desde 2004 (Java 5) - 50 novas funcionalidades 2/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Mudanças Alterações em vários níveis. - Linguagem - Biblioteca - JVM UNIFESP | Sistemas Distribuídos - Java 8
  • 3. Introdução Melhor produtividade - Muito código para pouca coisa 3/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Motivação Melhorar a legibilidade do código - Facilitar a manutenção Melhorar a utilização multi-core/processor - Menos diferenças entre o código concorrente e paralelo UNIFESP | Sistemas Distribuídos - Java 8
  • 4. Introdução Expressões Lambda 4/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Linguagem Default methods Anotações em parâmetros Melhoria na funcionalidade Generics UNIFESP | Sistemas Distribuídos - Java 8
  • 5. Introdução Derivada da programação funcional – “Functional Style” 5/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Lambda (I) Grande redução do tamanho do código Substitui classes aninhadas anônimas UNIFESP | Sistemas Distribuídos - Java 8
  • 6. Introdução Exemplo: 6/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Lambda (II) UNIFESP | Sistemas Distribuídos - Java 8
  • 7. Introdução Adição de novos métodos em interfaces - Sem quebra de compatibilidade 7/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Default Methods (I) UNIFESP | Sistemas Distribuídos - Java 8 Provê Herança Múltipla Comportamental - Dois objetos com a mesma interface podem executar métodos diferentes - O compilador sempre sabe qual chamar
  • 8. Introdução Problema anterior ao Java 8: - Interface A - Classes B e C implementam a interface - É adicionado um método na interface A - Error! É necessário implementar o novo método em B e C 8/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Default Methods (II) UNIFESP | Sistemas Distribuídos - Java 8
  • 9. Introdução Com o Java 8 - Implementação default do novo método (Error) 9/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Default Methods (III) UNIFESP | Sistemas Distribuídos - Java 8
  • 10. Introdução Anotar parâmetros de métodos - Implementação default do novoVerificação de Null Pointers - Verificação de Condições de corrida 10/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Annotations UNIFESP | Sistemas Distribuídos - Java 8 Maior chance de detectar erros
  • 11. Introdução Melhora inferência de tipos - Corrige problema do tipo: 11/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Generics <T> UNIFESP | Sistemas Distribuídos - Java 8
  • 12. Introdução Adicionar as expressões Lambda - Atualizar 4024 classes! - Melhoria de performance 12/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Bibliotecas (I) UNIFESP | Sistemas Distribuídos - Java 8 Demonstrar boas práticas com as novas funcionalidades
  • 13. Introdução Variáveis de atualização escaláveis - DoubleAccumulator e DoubleAdder - Mais atualizações (Adições) do que leituras - Cada thread mantem uma cópia da variável - Lock e acumula todas as alterações em uma única variável apenas quando houver uma leitura (menor overhead) 13/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Bibliotecas (II) UNIFESP | Sistemas Distribuídos - Java 8
  • 14. Introdução Atualizações no ConcurrentHashMap - Melhorias no suporte à exploração - Melhorias da computação de chaves 14/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Bibliotecas (III) UNIFESP | Sistemas Distribuídos - Java 8 Melhorias no ForkJoinPool - Threads aguardando I/O são colocados juntas em uma única thread melhorando a eficiência
  • 15. Introdução Operações em massas de dados para Collections - Principal razão para default methods - Filter, Map e Reduce - Recuperação de dados de maps (com streams) melhorada (serial ou paralela) - Implementações paralelas com framework Fork-Join - Lazy evaluation, por exemplo, getFirst() - parallelSort() em java.util.Arrays 15/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Bibliotecas (IV) UNIFESP | Sistemas Distribuídos - Java 8
  • 16. Introdução Novas APIs para Date, Time e Calendar - Não haviam sido projetadas da melhor maneira - Datas parciais (07/05/X) - Períodos de tempo - Sistemas de calendários básicos, mas facilmente extensíveis 16/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Bibliotecas (V) UNIFESP | Sistemas Distribuídos - Java 8 Codificação/Decoficação Base64 passa a ser nativa
  • 17. Introdução Profiles compactados - Permite utilizar apenas parte da JRE - Compact Profile 1, 2 e 3 - Sistemas embarcados com pouca memória disponível 17/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Bibliotecas (VI) UNIFESP | Sistemas Distribuídos - Java 8
  • 18. Introdução Nashorn - Engine para JavaScript - Leve e com alta performance - Integrada à JRE - Utiliza a javax.script - Comando jjs para execução de scripts 18/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Virtual Machine (I) UNIFESP | Sistemas Distribuídos - Java 8
  • 19. Introdução Aposentadas combinações de Garbage Collection pouco utilizadas - DefNew + CMS - ParNew + SerialOld - Incremental CMS - Não são removidas, mas irão gerar mensagens deprecated 19/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Virtual Machine (II) UNIFESP | Sistemas Distribuídos - Java 8
  • 20. Introdução Video da Oracle: https://www.youtube.com/watch?v=DCBIegEqKuo 20/20 Introdução Fundamentação Teórica Teste de Unidade de Fluxo de Dados Plano de Atividades Referências UNIFESP | Sistemas Distribuídos - Java 8 Tutoriais da Oracle: http://docs.oracle.com/javase/tutorial/ Overview do Java 8 http://www.oracle.com/technetwork/java/javase/overview/ java8-2100321.html Curso: http://blog.caelum.com.br/o-minimo-que-voce-deve-saber- de-java-8/