javase next

Post on 28-Nov-2014

351 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

O Java 8 certamente trouxe muitas novidades! Melhorias de código e facilidades tornando a vida do programador muito mais fácil. Mas o Java parou por ai? Quais são os próximos passos da plataforma? Conheça os próximos passos por aqueles que estão fazendo o futuro da tecnologia utilizada por milhões de pessoas.

TRANSCRIPT

Java SE next

Otávio Santana @otaviojava

Bruno Souza@brjavaman

Empresas

AMDAzul Systems, Inc.

CanonicalGoogle

IBMIntel

OracleRedHat

SAP Software Company StratusTwitter

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 Core0

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(AmountFormatQueryBuilder.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

top related