Upload
deepak-shevani
View
510
Download
0
Embed Size (px)
Citation preview
20 years of Java&
Simplified PARALLELISM - Java8
AGENDA
20 Years of JAVA
✣ Prehistory - the WEB✣ Birth of OAK or JAVA✣ Evolution till date
++++++++++++++++
Fun Quiz
Java 8 - Streams API and Parallelism
✣ Lambdas✣ Streams✣ Parallel Streams
++++++++++++++++
Demo Q&A
Slides will be uploaded at http://www.slideshare.net/dshevani
Hello everyone !
I am Deepak ShevaniI work at Flipkart, building next generation e-commerce platforms.
I like presenting & love to mingle with technology enthusiasts.
Contact me : [email protected]
@deepak_shevani
1.Evolution of JAVA
(1995-2015)Community of 9 million developers
Powering 7 billion devices
Prehistory
✣ [1991] ■ World Wide Web initially released by CERN for physics community■ Project Green started at Sun to explore opportunities in consumer electronics■ New Wave was about convergence of interconnected computers and devices■ James Gosling was exploring programming languages to suit requirements
✣ [1992]■ OAK programming language, descendant of C++ but platform independent■ Star7 interactive hand-held PDA introduced by Project Green
✣ [1993]■ World Wide Web is born at CERN, put on public domain■ 500 known web servers around the world
✣ [1994]■ Browsers : Netscape Navigator released, WebRunner (HotJava)* demoed■ 10,000 known web servers and 10 million web users■ Java compiler re-written in Java rather in C++
Birth OF JAVA [1995]
✣ 16 million internet users worldwide✣ Birth of e-Commerce companies
■ __a___ and __a_✣ Birth of internet companies
■ _a___✣ Demo of WebRunner at TED conference✣ Debut of
■ Java 1.0a2 ■ Hotjava
H A P P Y B I R T H D A Y J A V A
Birth OF JAVA [1995]
✣ 16 million internet users worldwide✣ Birth of e-Commerce companies
■ Amazon and eBay✣ Birth of internet companies
■ Yahoo✣ Demo of WebRunner demo at TED✣ Debut of
■ Java 1.0a2 ■ Hotjava
H A P P Y B I R T H D A Y J A V A
Evolution OF JAVA [1996-2000]
✣ [1996] ■ First JavaOne developer conference held in SFO and attracts 6000 people■ Java 1.0 available for download■ Sun licenses Java to OS vendors including MS, Apple, IBM and others
✣ [1997]■ JDK 1.1 released, included JavaBeans, RMI, JIT, Inner Classse, JDBC support■ Sun sues Microsoft over use of Java and distorting it :)■ 43% of US families own a computer
✣ [1998]■ Google :) Apple iMac :)■ Netscape Navigator acquired by AOL for whopping $4.2 billion■ JDK 1.2 released, included Swing, Plugin, IDL, Collections, strictfp
✣ [1999]■ Sun and AOL announce a joint alliance to market business software■ Sun announces Java 2 Platform, J2ME, J2SE and J2EE
✣ [2000]■ DotCom bubble bursts■ JDK 1.3 released, included HotSpot, RMI/Corba, Java Sound
Evolution OF JAVA [2001-2005]
✣ [2001] ■ Google awarded patent for pagerank algorithm■ Launch of Eclipse Project by IBM ■ Apple iPod :)
✣ [2002]■ JDK 1.4 released, included JCP, WebStart, NIO, Logging, assertions■ J2EE SDK downloads reach 2 million
✣ [2003]■ Java’s new coffee logo debuts■ Java.com launches
✣ [2004]■ Java technology powered Mars Rover (Spirit) touches Mars■ Java is already on 1.5 billion devices■ Java 2 Platform Standard Edition J2SE 5.0 (Project Tiger) released■ Included Generics, AutoBoxing/UnBoxing, Concurrency Utilities, enums
✣ [2005]■ Google Maps launched■ Sun launches Glassfish product
Evolution OF JAVA [2006-2010]
✣ [2006] ■ Java SE 6 released (no longer branded as J2SE) (Project Mustang)■ Included Scripting, XML and Web Services■ Sun releases Java Platforms on Oct 25 under the GNU General Public License
:)✣ [2007]
■ Apple iPhone :)■ Sun releases Duke, the Java mascot, under the free BSD license
✣ [2008]■ Google introduces the Android operating system for mobile phones.■ Facebook reaches 100 million users.■ Twitter.com has more than 70 million unique visitors per month.■ Sun slowing down ??
✣ [2009]■ Oracle announces that it will acquire Sun Microsystems at JavaOne■ Project Coin launched to enhance the Java programming language
✣ [2010]■ Oracle acquires Sun Microsystems■ JCP approves Java 7 and Java 8 roadmaps
Evolution OF JAVA [2011-2015]
✣ [2011] ■ Java SE 7 released (Project Dolphin) on July 28, 2011■ Features
○ Strings in Switch statement○ Type Inference for Generic Instance Creation○ Multiple Exception Handling○ Diamond Syntax○ Automatic null Handling○ ForkJoin, NIO2○ etc
✣ [2014]■ Java SE 8 released (No Project code !! ) on March 18, 2014■ Features
○ Lambda Expressions, Streams○ Pipelines and Streams API○ Default Methods○ Nashorn Javascript engine○ Parallel operations○ etc
QUIZ TIME
1) When did Java go open-source ? (date-year)
QUIZ TIME
1) When did Java go open-source ? (date-year)
Oct 25, 2006
QUIZ TIME
1) When did Java go open-source ? (date-year)
Oct 25, 2006
2) When was internet first put on public domain ?
QUIZ TIME
1) When did Java go open-source ? (date-year)
Oct 25, 2006
2) When was internet first put on public domain ?
1993
QUIZ TIME
1) When did Java go open-source ? (date-year)
Oct 25, 2006
2) When was internet first put on public domain ?
1993
3) When was Java Coffee logo introduced ?
QUIZ TIME
1) When did Java go open-source ? (date-year)
Oct 25, 2006
2) When was internet first put on public domain ?
1993
3) When was Java Coffee logo introduced ?
2003
GREAT - Let’s move on :)
Parallel STREAMSNo more boilerplate code !!
Basic Jargon FIRST
LambdasA lambda is anonymous function. A function is a computation that may take some arguments and may return some value. Lambdas enable functions to passed around and stored like values (smells like functional programming, yeah)
Syntax of lambda expression
( [optional arguments] ) -> body
( Person p1, Person p2 ) -> p1.name() == p2.name()
**** Types can be inferred (parameters, return type)
StreamsA Stream is an abstract concept that represents multiple values. It may or may not be collection. It may or may not be a sequence. It may or may not be an iterator. It is something that would allow sequential as well as parallel processing :)
Stream<T> is opened using
Collections.stream(), Collection.parallelStream()
IntStream.range(), Stream.of(), Arrays.stream()
BufferedReader.lines(), CharSequence.chars()
E X A M P L E S H O U L D M A K E I T C L E A R
SomeList<Employee> employees = ….
double highestPaid =
employees.stream()
.filter(e -> e.getDepartment().equals(‘Search’)
.map(e -> e.getSalary())
.max();
I T E R A T I O N S
// EXTERNAL
for (Item items : items) {
process(item);
}
// INTERNAL
items.forEach(item -> process(item));
S T R E A M O F B E N E F I T S
- LAZY EVALUATION- SHORT CIRCUITING- AUTOMATIC PARALLELISM
DEMO TIME
QuestionFind all transactions of type mobiles and return a
list of transaction IDs sorted in decreasing order of transaction value.
W I T H O U T S T R E A M S ( Java 7)
List mobileTransactions = new Arraylist<>();
for(Transaction t: transactions){
if(t.getType() == Transaction.MOBILE){
mobileTransactions.add(t);
}
}
Collections.sort(mobileTransactions, new MobilesComparator()); List transactionIds = new ArrayList<>();
for(Transaction t: mobileTransactions){
transactionsIds.add(t.getId());
}
U S I N G S T R E A M S ( Java 8)
List transactionsIds = transactions.stream()
.filter(t -> t.getType() == Transaction.MOBILE)
.sorted(comparing(Transaction::getValue)
.reversed())
.map(Transaction::getId)
.collect(toList());
U S I N G P A R A L L E L S T R E A M S
List transactionsIds = transactions.parallelStream()
.filter(t -> t.getType() == Transaction.MOBILE)
.sorted(comparing(Transaction::getValue)
.reversed())
.map(Transaction::getId)
.collect(toList());
Credits
Special thanks to all the people who made and released these awesome resources for free:
✣ Presentation template by SlidesCarnival✣ Photographs by Unsplash✣ Paper texture by GraphicBurguer
That’s IT FOLKSThanks for being
SUCH a WONDERFUL AUDIENCE