Download - Javase next
![Page 1: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/1.jpg)
Java SE next
Otávio Santana @otaviojava
Bruno Souza@brjavaman
![Page 2: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/2.jpg)
Empresas
AMDAzul Systems, Inc.
CanonicalGoogle
IBMIntel
OracleRedHat
SAP Software Company StratusTwitter
![Page 3: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/3.jpg)
Lançamento do Java 8
● Lambda● Metaspace● Stream
![Page 4: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/4.jpg)
Java 9
● Build: 25● https://jdk9.java.net/download/● Java 8 mais rápido
![Page 5: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/5.jpg)
Java 9
Reflections wrappers Regex Security Core0
50
100
150
200
250
Java 8 - Processo
Java 9 - Processo
Java 8 - Memória
Java 9 - Memória
![Page 6: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/6.jpg)
MetaSpace
● Muito Além do Heap● Matar o PermGem● Menor responsabilidade● Código mais limpo :)
![Page 7: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/7.jpg)
Melhorias na GC
● Remoções de Combinações depreciadas● Remoção de String duplicadas● Segmentos de cache de Códigos - JIT
![Page 8: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/8.jpg)
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
![Page 9: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/9.jpg)
JIT
● JVM internal (non-method) code● Profiled-code● Non-profiled code
![Page 10: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/10.jpg)
GC mais inteligente
● Self Tunning● Alocação agressiva● JMM Update● Smart Compilation
![Page 11: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/11.jpg)
Projeto Sumatra
● Uso de GPU
![Page 13: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/13.jpg)
Jigsaw
● Atualizado e candidato: 08/08/2014● Código, JDK modularizado
![Page 14: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/14.jpg)
![Page 15: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/15.jpg)
Novidades
● Leitura e escrita no JSON● Genéricos para primitivos● builders para as Coleções● Literal para coleções
![Page 16: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/16.jpg)
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 ];
![Page 17: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/17.jpg)
Dinheiro: Como tratar?
● Double● Float● BigDecimal● String
![Page 18: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/18.jpg)
Dinheiro: Como tratar?
Código espalhado
Não padronização
Comparação
![Page 19: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/19.jpg)
Dinheiro: Como tratar?
Cria o tipo Money
Centraliza formatação
Comportamento
Fica mais OO
![Page 20: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/20.jpg)
Dinheiro: Como tratar?
● Padrão de Moeda● Cotação● Formatação por país● ISO 4217
![Page 21: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/21.jpg)
Dinheiro: Como tratar?
Negócio Dinheiro
● Banco os tipos/formatos● Coloca no dicionário● Arredondamento● Busca a cotação
![Page 22: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/22.jpg)
MoneyApi
● Controle de Dinheiro● Formatar● Arredondar● Conversão
![Page 23: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/23.jpg)
MoneyApi
CurrencyUnit euro = MonetaryCurrencies.getCurrency("EUR");
Money money = Money.of(120, euro);
NumberValue number = money.getNumber();
BigDecimal value = number.numberValue(BigDecimal.class);
![Page 24: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/24.jpg)
MoneyApi
CurrencyUnit euro = MonetaryCurrencies.getCurrency(Locale.GERMAN);
Money m = Money.of(120, euro);
NumberValue number = m.getNumber();
BigDecimal value = number.numberValue(BigDecimal.class);
![Page 25: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/25.jpg)
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);
![Page 26: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/26.jpg)
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));
![Page 27: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/27.jpg)
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));
![Page 28: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/28.jpg)
MoneyApi
MonetaryAmountFormat format = MonetaryFormats.getAmountFormat(Locale.US);
String texto = format.format(m);//12,50 USD
format = MonetaryFormats.getAmountFormat(AmountFormatQueryBuilder.create(Locale.US).set(CurrencyStyle.SYMBOL).build());
String texto = format.format(m);//$123,456.56
![Page 29: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/29.jpg)
MoneyApi
ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider("ECB");
MonetaryAmount d2e = prov.getCurrencyConversion(euro).apply(mDollar);
![Page 30: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/30.jpg)
MoneyApi
ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider("IMF");MonetaryAmount d2e = prov.getCurrencyConversion(euro).apply(mDollar);
![Page 31: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/31.jpg)
Unidade de Medida
● Semelhante ao Money● Padronizar unidades de Medidas● Formatar● Operações
![Page 32: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/32.jpg)
Unidade de Medida
QuantityFactory<Mass> instance = QuantityFactory.getInstance(Mass.class);
Quantity<Mass> m = instance.create(10, KILOGRAM);
![Page 33: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/33.jpg)
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);
![Page 34: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/34.jpg)
Unidade de Medida
● Acceleration ● Length● Angle● Area● Mass● Power
● Energy● Speed● Force● Temperature● Time● Information● Volume
E muito mais! No total de 52 medidas
![Page 35: Javase next](https://reader034.vdocuments.us/reader034/viewer/2022051513/547bea9db4af9fef158b4f53/html5/thumbnails/35.jpg)
Obrigado
Otávio Santana @otaviojava
Bruno Souza@brjavaman