SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Java SE next
Otávio Santana
@otaviojava
Bruno Souza
@brjavaman
Empresas
AMD
Azul Systems, Inc.
Canonical
Google
IBM
Intel
Oracle
RedHat
SAP Software Company
Stratus
Twitter
Lançamento do Java 8
● Lambda
● Metaspace
● Stream
Java 9
● Build: 25
● https://jdk9.java.net/download/
● Java 8 mais rápido
Java 9
Reflections wrappers Regex Security Core
0
50
100
150
200
250
Java 8 - Processo
Java 9 - Processo
Java 8 - Memória
Java 9 - Memória
MetaSpace
● Muito Além do Heap
● Matar o PermGem
● Menor responsabilidade
● Código mais limpo :)
Melhorias na GC
● Remoções de Combinações depreciadas
● Remoção de String duplicadas
● Segmentos de cache de Códigos - JIT
Removendo Strings duplicadas
● 25% do Heap são de Strings
● 13.5% String duplicadas
Heap
Outros Objetos String
String dentro do Heap
String Strings duplicadas
JIT
● JVM internal (non-method) code
● Profiled-code
● Non-profiled code
GC mais inteligente
● Self Tunning
● Alocação agressiva
● JMM Update
● Smart Compilation
Projeto Sumatra
● Uso de GPU
JavaFX
● http://openjdk.java.net/projects/openjfx/
●
Jigsaw
● Atualizado e candidato: 08/08/2014
● Código, JDK modularizado
Novidades
● Leitura e escrita no JSON
● Genéricos para primitivos
● builders para as Coleções
● Literal para coleções
Novidades
● List<String> list = List.of(a, b, c);
● Set<String> set = Set.of(d, e, f, g);
● Map<String,String> map =
Map.of(k1, V1);
● List<Integer> list = #[ 1, 2, 3 ];
Dinheiro: Como tratar?
● Double
● Float
● BigDecimal
● String
Dinheiro: Como tratar?
Código espalhado
Não padronização
Comparação
Dinheiro: Como tratar?
Cria o tipo Money
Centraliza formatação
Comportamento
Fica mais OO
Dinheiro: Como tratar?
● Padrão de Moeda
● Cotação
● Formatação por país
● ISO 4217
Dinheiro: Como tratar?
Negócio Dinheiro
● Banco os tipos/formatos
● Coloca no dicionário
● Arredondamento
● Busca a cotação
MoneyApi
● Controle de Dinheiro
● Formatar
● Arredondar
● Conversão
MoneyApi
CurrencyUnit euro = MonetaryCurrencies.getCurrency("EUR");
Money money = Money.of(120, euro);
NumberValue number = money.getNumber();
BigDecimal value = number.numberValue(BigDecimal.class);
MoneyApi
CurrencyUnit euro =
MonetaryCurrencies.getCurrency(Locale.GERMAN);
Money m = Money.of(120, euro);
NumberValue number = m.getNumber();
BigDecimal value = number.numberValue(BigDecimal.class);
MoneyApi
Money noMoney = Money.of(0, euro);
Money m1 = Money.of(10, euro);
Money m2 = Money.of(30, euro);
Money m3 = Money.of(40, euro);
List<Money> moneys = Arrays.asList(m1, m2, m3);
Money sum = moneys.stream().reduce((ma, mb) ->
ma.add(m2)).orElse(noMoney);
MoneyApi
Money sum = Stream.of(m1, m2, m3).reduce((ma, mb) ->
ma.add(m2)).orElse(noMoney);
List<Money> euros = stream.filter(m ->
m.getCurrency().equals(euro)).collect(Collectors.toList());
Map<CurrencyUnit, List<Money>> mapMoney =
stream.collect(Collectors.groupingBy(Money::getCurrency));
MoneyApi
NumberValue sum = stream.map(m ->
m.getNumber()).reduce((mA, mB) ->
mA.add(mB)).orElseThrow(() -> new RuntimeException("É
necessário ter dinheiro"));
Map<Boolean, List<Money>> positives =
stream.collect(Collectors.partitioningBy(Money::isPositive));
MoneyApi
MonetaryAmountFormat format =
MonetaryFormats.getAmountFormat(Locale.US);
String texto = format.format(m);//12,50 USD
format =
MonetaryFormats.getAmountFormat(AmountFormatQueryBuild
er.create(Locale.US).set(CurrencyStyle.SYMBOL).build());
String texto = format.format(m);//$123,456.56
MoneyApi
ExchangeRateProvider prov =
MonetaryConversions.getExchangeRateProvider("ECB");
MonetaryAmount d2e =
prov.getCurrencyConversion(euro).apply(mDollar);
MoneyApi
ExchangeRateProvider prov =
MonetaryConversions.getExchangeRateProvider("IMF");
MonetaryAmount d2e =
prov.getCurrencyConversion(euro).apply(mDollar);
Unidade de Medida
● Semelhante ao Money
● Padronizar unidades de Medidas
● Formatar
● Operações
Unidade de Medida
QuantityFactory<Mass> instance =
QuantityFactory.getInstance(Mass.class);
Quantity<Mass> m = instance.create(10, KILOGRAM);
Unidade de Medida
QuantityFactory<Time> timeFactory =
QuantityFactory.getInstance(Time.class);
Quantity<Time> m1 = timeFactory.create(40, MINUTE);
Quantity<Time> m2 = timeFactory.create(20, MINUTE);
Quantity<Time> h1 = m1.add(m2).to(HOUR);
Unidade de Medida
● Acceleration
● Length
● Angle
● Area
● Mass
● Power
● Energy
● Speed
● Force
● Temperature
● Time
● Information
● Volume
E muito mais! No total de 52 medidas
Obrigado
Otávio Santana
@otaviojava
Bruno Souza
@brjavaman

Mais conteúdo relacionado

Destaque

Destaque (9)

Open Source e Humanidade: mas o que minha carreira tem com isso?
Open Source e Humanidade: mas o que minha carreira tem com isso? Open Source e Humanidade: mas o que minha carreira tem com isso?
Open Source e Humanidade: mas o que minha carreira tem com isso?
 
Java magazine november/december 2014
Java magazine november/december 2014Java magazine november/december 2014
Java magazine november/december 2014
 
Nosql4java
Nosql4javaNosql4java
Nosql4java
 
Visão geral da segurança em Java EE
Visão geral da segurança em Java EEVisão geral da segurança em Java EE
Visão geral da segurança em Java EE
 
Lab
LabLab
Lab
 
Gráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVGGráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVG
 
Introdução Ao Spring Com Spring Boot
Introdução Ao Spring Com Spring BootIntrodução Ao Spring Com Spring Boot
Introdução Ao Spring Com Spring Boot
 
Padrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationPadrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring Integration
 
Let's talk about NoSQL Standard
Let's talk about NoSQL StandardLet's talk about NoSQL Standard
Let's talk about NoSQL Standard
 

Semelhante a Javase next

Microfundamento - Algoritmos e Lógica de Programação (1).pdf
Microfundamento - Algoritmos e Lógica de Programação (1).pdfMicrofundamento - Algoritmos e Lógica de Programação (1).pdf
Microfundamento - Algoritmos e Lógica de Programação (1).pdf
FelipeSoares580387
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
PrinceGuru MS
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
LuanDev1
 
Apresentação OneCoin - Como Ganhar Dinheiro na OneCoin
Apresentação OneCoin - Como Ganhar Dinheiro na OneCoinApresentação OneCoin - Como Ganhar Dinheiro na OneCoin
Apresentação OneCoin - Como Ganhar Dinheiro na OneCoin
acarter12
 

Semelhante a Javase next (20)

Mini Curso Android basico EATI-2017
Mini Curso Android basico EATI-2017Mini Curso Android basico EATI-2017
Mini Curso Android basico EATI-2017
 
Funcionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticasFuncionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticas
 
Test-driven Development
Test-driven DevelopmentTest-driven Development
Test-driven Development
 
Iniciando com javaScript 2017
Iniciando com javaScript 2017Iniciando com javaScript 2017
Iniciando com javaScript 2017
 
O que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dadosO que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dados
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdf
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
TDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e featureTDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e feature
 
Microfundamento - Algoritmos e Lógica de Programação (1).pdf
Microfundamento - Algoritmos e Lógica de Programação (1).pdfMicrofundamento - Algoritmos e Lógica de Programação (1).pdf
Microfundamento - Algoritmos e Lógica de Programação (1).pdf
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]
 
Introdução ao C#
Introdução ao C#Introdução ao C#
Introdução ao C#
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
Apresentação Onecoin Atualizada
Apresentação Onecoin AtualizadaApresentação Onecoin Atualizada
Apresentação Onecoin Atualizada
 
Apresentação OneCoin - Como Ganhar Dinheiro na OneCoin
Apresentação OneCoin - Como Ganhar Dinheiro na OneCoinApresentação OneCoin - Como Ganhar Dinheiro na OneCoin
Apresentação OneCoin - Como Ganhar Dinheiro na OneCoin
 
Aprofundamento de DDL e DML
Aprofundamento de DDL e DMLAprofundamento de DDL e DML
Aprofundamento de DDL e DML
 

Mais de Otávio Santana

Mais de Otávio Santana (20)

NoSQL design pitfalls with Java
NoSQL design pitfalls with JavaNoSQL design pitfalls with Java
NoSQL design pitfalls with Java
 
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
 
Architecting Cloud Computing Solutions with Java [1.1]
Architecting Cloud Computing Solutions with Java [1.1]Architecting Cloud Computing Solutions with Java [1.1]
Architecting Cloud Computing Solutions with Java [1.1]
 
Arquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com JavaArquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com Java
 
Build, run, and scale your Java applications end to end
Build, run, and scale your Java applications end to endBuild, run, and scale your Java applications end to end
Build, run, and scale your Java applications end to end
 
Jakarta NoSQL: Meet the first Jakarta EE specification in the Cloud
Jakarta NoSQL: Meet the first Jakarta EE specification in the CloudJakarta NoSQL: Meet the first Jakarta EE specification in the Cloud
Jakarta NoSQL: Meet the first Jakarta EE specification in the Cloud
 
ORMs: Heroes or Villains Inside the Architecture?
ORMs: Heroes or Villains Inside the Architecture?ORMs: Heroes or Villains Inside the Architecture?
ORMs: Heroes or Villains Inside the Architecture?
 
Jakarta EE Meets NoSQL at the Cloud Age
Jakarta EE Meets NoSQL at the Cloud AgeJakarta EE Meets NoSQL at the Cloud Age
Jakarta EE Meets NoSQL at the Cloud Age
 
Boost your APIs with GraphQL 1.0
Boost your APIs with GraphQL 1.0Boost your APIs with GraphQL 1.0
Boost your APIs with GraphQL 1.0
 
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
 
Let’s Make Graph Databases Fun Again with Java [DEV6043]
Let’s Make Graph Databases Fun Again with Java [DEV6043]Let’s Make Graph Databases Fun Again with Java [DEV6043]
Let’s Make Graph Databases Fun Again with Java [DEV6043]
 
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
 
The new generation of data persistence with graph
The new generation of data persistence with graphThe new generation of data persistence with graph
The new generation of data persistence with graph
 
Eclipse JNoSQL updates from JCP September 11
Eclipse JNoSQL updates from JCP September 11Eclipse JNoSQL updates from JCP September 11
Eclipse JNoSQL updates from JCP September 11
 
Stateless Microservice Security via JWT and MicroProfile - Guatemala
Stateless Microservice Security via JWT and MicroProfile - GuatemalaStateless Microservice Security via JWT and MicroProfile - Guatemala
Stateless Microservice Security via JWT and MicroProfile - Guatemala
 
Stateless Microservice Security via JWT and MicroProfile - Mexico
Stateless Microservice Security via JWT and MicroProfile - MexicoStateless Microservice Security via JWT and MicroProfile - Mexico
Stateless Microservice Security via JWT and MicroProfile - Mexico
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL DatabaseEclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
 
Polyglot persistence
Polyglot persistencePolyglot persistence
Polyglot persistence
 
Management 3.0 and open source
Management 3.0 and open sourceManagement 3.0 and open source
Management 3.0 and open source
 
Building a Recommendation Engine with Java EE
Building a Recommendation Engine with Java EEBuilding a Recommendation Engine with Java EE
Building a Recommendation Engine with Java EE
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 

Javase next