1 50
100%
Actual Size
Fit Width
Fit Height
Fit Page
Automatic
Java SE next Otávio Santana @otaviojava
Java Se next Generetion
Embed Size (px)
344 x 292
429 x 357
514 x 422
599 x 487
DESCRIPTION
The next generation of Java SE in OpenJDK project, presented in JavaOne 2014.
Citation preview
1. Java SE next Otvio Santana @otaviojava
2. OpenJDK Java 7 Java 8 Java 9
3. OpenJDK hg clone http://hg.openjdk.java.net/jdk9/jdk9
jdk_1_9 sh ./get_source.sh ./configure make install
4. OpenJDK Java 8 Java 9 Compiler GC Corelibs Sumatra
JavaFX
5. Companies AMD Apple Azul Systems, Inc. Canonical Google IBM
Intel Oracle RedHat SAP Software Company Stratus Twitter
6. Launched the Java 8 Lambda Metaspace Stream
7. Java 9 Build: 31 https://jdk9.java.net/download/ Java 8
faster
8. Java 9 Reflections wrappers Regex Security Core 250 200 150
100 50 0 Java 8 - Process Java 9 -Process Java 8 - Memory Java 9
-Memory
9. Improvements in GC Remove GC combinations deprecated Strings
Deduplication Segmented Code Cache Shenandoah
10. Strings duplication 75 25 Heap Another objects String 25%
of Heap are Strings 13.5% String duplicates String inside Heap 85
15 String Strings duplicates
11. Segmented Code Cache JVM internal (non-method) code
Profiled-code Non-profiled code
12. Sumatra and OpenJFX Use of GPU JavaFX inside OpenJDK
13. Jigsaw Updated at: 18/08/2014 The source, JDK
modularized
14. News to coders Light Write and read to JSON Generics to
primitives builders to Collections Literal to Collections Process
API Updates Smart Java Compilation http 2.0 client
15. News List list = List.of(a, b, c); Set set = Set.of(d, e,
f, g); Map map = Map.of(k1, V1);//not collection List list = #[ 1,
2, 3 ];
16. Money Api Take care of money to you :) Formating Rounding
Exchange Rate
17. Money Api CurrencyUnit euro =
MonetaryCurrencies.getCurrency("EUR"); MonetaryAmount money =
Money.of(120, euro); NumberValue number = money.getNumber();
BigDecimal value = number.numberValue(BigDecimal.class);
18. Money Api CurrencyUnit dollar =
MonetaryCurrencies.getCurrency(Locale.US); MonetaryAmount m =
Money.of(120, dollar); NumberValue number = m.getNumber();
BigDecimal value = number.numberValue(BigDecimal.class);
19. Money Api MonetaryAmountFormat format =
MonetaryFormats.getAmountFormat(Locale.US); String text =
format.format(m);//12,50 USD format =
MonetaryFormats.getAmountFormat(AmountFormatQueryBuild
er.create(Locale.US).set(CurrencyStyle.SYMBOL).build()); String
text = format.format(m);//$123,456.56
20. Money Api MonetaryAmount noMoney = Money.of(0, euro);
MonetaryAmount m1 = Money.of(10, euro); MonetaryAmount m2 =
Money.of(30, euro); MonetaryAmount m3 = Money.of(40, euro); List
moneys = Arrays.asList(m1, m2, m3); MonetaryAmount sum =
moneys.stream().reduce(MonetaryFunctions.sum()).orElse(noM
oney);
21. Welcome Lambda List justDollar = moneys.stream()
.filter((MonetaryFunctions.isCurrency(DOLLAR)))
.collect(Collectors.toList()); List notEuro =
moneys.stream().filter((MonetaryFunctions.isNotCurrenc
y(EURO))).collect(Collectors.toList());
22. Welcome Lambda
MonetaryFunctions.isCurrency(DOLLAR).and(Monetary
Functions.isBetween(min, max)));
MonetaryFunctions.containsCurrencies(EURO,
DOLLAR)).or(MonetaryFunctions.isGreaterThan(money )));
23. Welcome Lambda List orderCurrencyValue =
moneys.stream().sorted(MonetaryFunctions.sortCurrenc
yUnit().thenComparing(MonetaryFunctions.sortNumber
())).collect(Collectors.toList()); List orderHighValue =
moneys.stream().sorted(MonetaryFunctions.sortCurrenc
yUnit().thenComparing( MonetaryFunctions.sortCurrencyUnitDesc()))
.collect(Collectors.toList());
24. Welcome Lambda Map> groupBy =
moneys.stream().collect(MonetaryFunctions.groupByCu
rrencyUnit());
25. Welcome Lambda MonetarySummaryStatistics summary =
getCurrencies().stream().collect(MonetaryFunctions.sum
marizingMonetary(DOLLAR)); GroupMonetarySummaryStatistics
groupSummary =
getCurrencies().stream().collect(MonetaryFunctions.gro
upBySummarizingMonetary());
26. Welcome Lambda MonetarySummaryStatistics summary = ...
MonetaryAmount min = summary.getMin(); MonetaryAmount max =
summary.getMax(); MonetaryAmount sum = summary.getSum();
MonetaryAmount avarage = summary.getAverage(); Long count =
summary.getCount();
27. Welcome Lambda GroupMonetarySummaryStatistics groupSummary
=... Map map = groupSummary.get(); MonetarySummaryStatistics
summaryDollar = map.get(DOLLAR);
28. Exchange Rate MonetaryAmount m1 = Money.of(10, euro);
MonetaryAmount m2 = Money.of(30, dollar); m1.add(m2); throw
MonetaryException (Currency mismatch...
29. Exchange Rate ExchangeRateProvider provider =
MonetaryConversions.getExchangeRateProvider("ECB"); MonetaryAmount
d2e = provider.getCurrencyConversion(euro).apply(mDollar);
30. Exchange Rate ExchangeRateProvider provider =
MonetaryConversions.getExchangeRateProvider("IMF"); MonetaryAmount
d2e = provider.getCurrencyConversion(euro).apply(mDollar);
31. Exchange Rate List orderCurrencyValue =
moneys.stream().sorted(MonetaryFunctions.sortExcha
nge(provider).collect(Collectors.toList()); 9 BRL 8 USD 7 EUR
Because: 1 USD = 2.4203 BRL 1 USD = 2.4203 BRL 1 USD = 0.79 EUR 7
EUR 9 BRL 8 USD
32. Exchange Rate MonetaryAmount sum =
moneys.stream().reduce(MonetafyFunctions.sum(provider ,
DOLLAR)).orElse(noMoney); MonetaryAmount min =
moneys.stream().reduce(MonetafyFunctions.min(provider
)).orElse(noMoney); MonetaryAmount max =
moneys.stream().reduce(MonetafyFunctions.max(provide
r)).orElse(noMoney);
33. Exchange Rate MonetarySummaryStatistics summary =
getCurrencies().stream().collect(MonetaryFunctions.sum
marizingMonetary(DOLLAR, provider));
34. Measurement API Work with Measure Standardize measure unit
Format Operations (convert, add, subtract)
35. Measurement API QuantityFactory massFactory =
QuantityFactoryProvider.getQuantityFactory(Mass.class); Quantity
tenKilogram = massFactory.create(10, SI.KILOGRAM);
36. Measurement API QuantityFactory timeFactory =
QuantityFactory.getInstance(Time.class); Quantity m1 =
timeFactory.create(40, MINUTE); Quantity m2 =
timeFactory.create(20, MINUTE); Quantity h1 = m1.add(m2).to(HOUR);
//1 hour
37. Measurement API QuantityFactory timeFactory =
QuantityFactory.getInstance(Time.class); Quantity m1 =
timeFactory.create(1, DAY); Quantity m2 = timeFactory.create(12,
HOUR); Quantity result = m1.add(m2); //1.5 day
38. Measurement API Quantity minutes =
Quantities.getQuantity(15, SI.MINUTE); Quantity hours =
Quantities.getQuantity(18, SI.HOUR); Quantity day =
Quantities.getQuantity(1, SI.DAY); Quantity seconds =
Quantities.getQuantity(100, SI.SECOND); List> times = new
ArrayList(); times.addAll(Arrays.asList(minutes, hours, day,
seconds));
39. Measurement API List> sortNaturalList = times.stream()
.sorted(QuantityFunctions.sortNatural())
.collect(Collectors.toList()); seconds - 100 seconds minutes - 15
minutes hours - 18 hours day - 1 day
40. Measurement API List> sortNaturalList = times.stream()
.sorted(QuantityFunctions.sortNaturalDesc())
.collect(Collectors.toList()); day - 1 day hours - 18 hours minutes
- 15 minutes seconds - 100 seconds
41. Measurement API times.add(Quantities.getQuantity(24,
SI.HOUR)); Comparator> sortNatural =
QuantityFunctions.sortNatural(); Comparator> sortSymbol =
QuantityFunctions.sortSymbol(); List> sortNaturaAndSymbolList =
times.stream() .sorted(sortNatural.thenComparing(sortSymbol))
.collect(Collectors.toList()); seconds - 100 seconds minutes - 15
minutes hours - 18 hours day - 1 day dayInHour 24 hours
42. Measurement API List> greaterThanOneDay = times
.stream()
.filter(QuantityFunctions.isGreaterThan(oneDay)).collect(Collect
ors.toList()); List> greaterThanOneDay = times
.stream().filter(QuantityFunctions.isBetween(oneHour,
oneDay)).collect(Collectors.toList());
43. Measurement API Mixing Filters
QuantityFunctions.isGreaterThan(oneDay).and(QuantityFunctio
ns.fiterByUnit(SI.HOUR)));
QuantityFunctions.isGreaterThan(oneDay).or(QuantityFunction
s.fiterByExcludingUnit(SI.DAY)));
44. Measurement API QuantitySummaryStatistics summary =
times.stream().collect(QuantityFunctions.summarizingMeasure(
SI.HOUR)); //result in hours summary.getCount();
summary.getAverage(); summary.getMax(); summary.getMin();
summary.getSum();
45. Measurement API QuantitySummaryStatistics summaryDay =
summary.to(SI.DAY); summary.getMin(SI.MINUTE);
summary.getMax(SI.MINUTE); summary.getSum(SI.MINUTE);
summary.getAverage(SI.MINUTE);
46. Measurement API Quantity t1 = timeFactory.create(1, DAY);
Quantity m1 = timeFactory.create(12, KILOGRAM); Quantity l1 =
timeFactory.create(12, KILOGRAM); t1.add(m1); //error Quantity s1 =
l1.divide(t1).asType(Speed.class);
47. Measurement API Acceleration Length Angle Area Mass Power
Energy Speed Force Temperature Time Information Volume And more! 52
quantities
48. It isn't a Spoiler Sunday, September 28 12:30 p.m.3:00 p.m.
Moscone North, Hall D Thursday, October 2 9:00 a.m.10:45 a.m.
Marriott Marquis, Salon 7/8/9
49. Thank you Otvio Santana @otaviojava
LOAD MORE