Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
devday2012
Report
Juan Lopes
Follow
Software developer at Intelie
Oct. 20, 2012
•
0 likes
2 likes
×
Be the first to like this
Show More
•
1,403 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
Java 7 LavaJUG
julien.ponge
Understanding greenlet
Saúl Ibarra Corretgé
Gevent what's the point
seanmcq
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
ikikko
Jdk 7 4-forkjoin
knight1128
ESCMAScript 6: Get Ready For The Future. Now
Krzysztof Szafranek
Oredev 2015 - Taming Java Agents
Anton Arhipov
RuntimeUnitTestToolkit for Unity(English)
Yoshifumi Kawai
1
of
50
Top clipped slide
devday2012
Oct. 20, 2012
•
0 likes
2 likes
×
Be the first to like this
Show More
•
1,403 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
Palestra sobre Java no DevDay BH 2012
Juan Lopes
Follow
Software developer at Intelie
Advertisement
Advertisement
Advertisement
Recommended
Riga Dev Day 2016 - Having fun with Javassist
Anton Arhipov
1.7K views
•
92 slides
Dagger & rxjava & retrofit
Ted Liang
3.7K views
•
44 slides
Counter Wars (JEEConf 2016)
Alexey Fyodorov
486 views
•
49 slides
Software Testing - Invited Lecture at UNSW Sydney
julien.ponge
960 views
•
71 slides
JavaOne 2015 - Having fun with Javassist
Anton Arhipov
1.9K views
•
62 slides
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
julien.ponge
788 views
•
76 slides
More Related Content
Slideshows for you
(20)
Java 7 LavaJUG
julien.ponge
•
809 views
Understanding greenlet
Saúl Ibarra Corretgé
•
6.9K views
Gevent what's the point
seanmcq
•
6.9K views
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
ikikko
•
16K views
Jdk 7 4-forkjoin
knight1128
•
1.2K views
ESCMAScript 6: Get Ready For The Future. Now
Krzysztof Szafranek
•
3.1K views
Oredev 2015 - Taming Java Agents
Anton Arhipov
•
1.7K views
RuntimeUnitTestToolkit for Unity(English)
Yoshifumi Kawai
•
17.5K views
Memory Management of C# with Unity Native Collections
Yoshifumi Kawai
•
64.5K views
Construire une application JavaFX 8 avec gradle
Thierry Wasylczenko
•
2.2K views
Java9を迎えた今こそ!Java本格(再)入門
Takuya Okada
•
5.7K views
DevoxxPL: JRebel Under The Covers
Simon Maple
•
1.2K views
Testing with Node.js
Jonathan Waller
•
9.8K views
разработка серверов и серверных приложений лекция №4
Eugeniy Tyumentcev
•
362 views
Performance is a feature! - Developer South Coast - part 2
Matt Warren
•
672 views
Qt Rest Server
Vasiliy Sorokin
•
442 views
Server1
FahriIrawan3
•
42 views
Is your profiler speaking the same language as you? -- Docklands JUG
Simon Maple
•
562 views
Nantes Jug - Java 7
Sébastien Prunier
•
801 views
Spock: A Highly Logical Way To Test
Howard Lewis Ship
•
11.8K views
Viewers also liked
(20)
Guía completa de linkbuilding - La visión más realista
Emilio García Garrido
•
1.1K views
Gluster open stack dev summit 042011
Open Stack
•
1.8K views
产品经理的视角
envong
•
2K views
Do you really get class loaders?
guestd56374
•
5.1K views
On The Road
Abhishek Shah
•
1.9K views
CEO Survey 2014 - Poimintoja Suomen tuloksista
PwC Suomi
•
1.1K views
After Real Time Advertising
Amil Husain
•
1.3K views
Why APIs are not SOA++
Apigee | Google Cloud
•
10.4K views
Emagineers - Design & Test Report
Alexis Polanco, Jr.
•
656 views
Learning with Digital Media
The New School
•
3.2K views
Mobile Device Management: Securing your Mobile Environment.
[x]cube LABS
•
1.6K views
5050 project update
Made by Many
•
7.1K views
Dependency injection in scala
Michal Bigos
•
9.8K views
Editorial Strategy: The Missing Link in Civic Data Tools, Transparency Camp 2015
Jess Duda
•
922 views
Secrets of a successful e-commerce website
Troy Cox
•
1.1K views
Four Country Mobile Operator Study: a competitive benchmark of leading mobile...
UserZoom
•
1.9K views
High Performance Web Sites
Ravi Raj
•
5.7K views
Raymond - Social Media Strategy
Bhavna Vaja
•
2.2K views
KG이니시스 회사 소개서
Inicis
•
3.5K views
Embrace Uncertainty
abcd82
•
1.2K views
Advertisement
Similar to devday2012
(20)
4Developers 2015: Programowanie synchroniczne i asynchroniczne - dwa światy k...
PROIDEA
•
340 views
Java 7 Whats New(), Whats Next() from Oredev
Mattias Karlsson
•
2.2K views
RxJS101 - What you need to know to get started with RxJS tomorrow
Viliam Elischer
•
590 views
Auto-GWT : Better GWT Programming with Xtend
Sven Efftinge
•
12.8K views
JavaScript Growing Up
David Padbury
•
14.1K views
Silicon Valley JUG: JVM Mechanics
Azul Systems, Inc.
•
542 views
Clojure - A new Lisp
elliando dias
•
803 views
JVM Mechanics: When Does the JVM JIT & Deoptimize?
Doug Hawkins
•
12.6K views
OSGi and Eclipse RCP
Eric Jain
•
1.2K views
Java Concurrency
Carol McDonald
•
3.9K views
Building Scalable Stateless Applications with RxJava
Rick Warren
•
7.6K views
RxJava applied [JavaDay Kyiv 2016]
Igor Lozynskyi
•
513 views
Java util concurrent
Roger Xia
•
2.3K views
Clojure And Swing
Skills Matter
•
3.6K views
From Java 6 to Java 7 reference
Giacomo Veneri
•
4.3K views
What can be done with Java, but should better be done with Erlang (@pavlobaron)
Pavlo Baron
•
2.2K views
wtf is in Java/JDK/wtf7?
Scott Leberknight
•
1.7K views
What is new in java 8 concurrency
kshanth2101
•
457 views
JS everywhere 2011
Oleg Podsechin
•
1.5K views
Java 7 & 8 New Features
Leandro Coutinho
•
279 views
More from Juan Lopes
(10)
qconrio2015
Juan Lopes
•
683 views
qconsp2015
Juan Lopes
•
1.4K views
PIPES: Uma linguagem para processamento distribuído de eventos complexos
Juan Lopes
•
1.5K views
devday2013
Juan Lopes
•
1.6K views
dnarj20130504
Juan Lopes
•
1.5K views
uerj201212
Juan Lopes
•
446 views
rioinfo2012
Juan Lopes
•
896 views
tdc2012
Juan Lopes
•
1.2K views
dnarj-20120630
Juan Lopes
•
501 views
dnad12
Juan Lopes
•
786 views
Advertisement
Recently uploaded
(20)
AI.pptx
GursheenKaurChawla
•
0 views
Exploring the Power of EXO Drones.pdf
uszizz. com
•
0 views
INT 1010 06-7.pdf
Luis R Castellanos
•
5 views
Event Stream Processing with BeepBeep 3
Sylvain Hallé
•
0 views
DEADLOCK_.pptx
MahnoorGhega1
•
0 views
Unit -5 The effects of using IT.pptx
SatephwarGaming
•
0 views
Beginners: An Quick Introduction to 3GPP
3G4G
•
0 views
11 Business Benefits of Hiring Dedicated Remote Developers
TriState Technology
•
0 views
Computer insights.pptx
AsadKhokhar14
•
0 views
Unveiling the Versatility of NEMA 1-15 Power Cords
Sf Cable, Inc
•
0 views
DIMT 2023 SG - Hands-on Workshop_ Getting started with Confluent Cloud.pdf
confluent
•
0 views
ELECDG.PDF
ruben23009
•
0 views
M. L. Boas-Mathematical Methods in the Physical Sciences - John Wiley.pdf
ngurahayuketutumiati1
•
0 views
us-19-Shortridge-Forsgren-Controlled-Chaos-the-Inevitable-Marriage-of-DevOps-...
CynthiaRothrock
•
1 view
INT 1010 10-3.pdf
Luis R Castellanos
•
0 views
DIMT '23 Session_Demo_ Latest Innovations Breakout.pdf
confluent
•
0 views
SpinoS Corporate Presentation.pptx
Vaishak26
•
0 views
无法毕业?澳大利亚新英格兰大学毕业证书和学位证书办理
ynexeyb
•
0 views
1-DC16_Ch01_Ch 1 Introducing Today_s Technologies Computers, Devices, and the...
rajaqr
•
2 views
INT 1010 08-4.pdf
Luis R Castellanos
•
4 views
devday2012
@juanplopes JAVA
PARA PROGRAMADORES .NET
Rio de Janeiro
Bel' Zonte
Em comunidades, pessoas antes
de tecnologias.
REVELAÇÃO!
REVELAÇÃO! https://github.com/juanplopes/mublasters
VAMOS FALAR
MAL DE
SISTEMA DE TIPOS
NÃO É UNIFICADO NÃO TEM STRUCTS GENERICS TEM TYPE ERASURE
API DE DATAS
SOFRÍVEL NÃO TEM ITERATOR METHODS NÃO TEM CLOSURES OU LAMBDAS
java.util.concurrent
NÃO CRIE THREADS new
Thread(new Runnable() { public void run() { } }).start();
TRABALHANDO COM FUTURES Future
é a promessa do resultado de uma computação que ainda não terminou (ou sequer começou).
TRABALHANDO COM FUTURES ExecutorService
executor = ... Future future = executor.submit(new Runnable() { public void run() { } }); //qualquer outro trabalho future.get(); //bloqueante
TRABALHANDO COM FUTURES ExecutorService
executor = ... Future<String> future = executor.submit(new Callable<String>() { public String call() { return "42"; } }); //qualquer outro trabalho String result = future.get(); //bloqueante
.NET TASK FACTORY TaskFactory
factory = ... var task = factory.StartNew(() => "42"); //qualquer outro trabalho String result = future.Result; //bloqueante
.NET TASK FACTORY
Java 5 (2004) ExecutorService e Future<T> .NET 4 (2010) TaskFactory, TaskScheduler e Task<T>
TRABALHANDO COM FUTURES Executors
newCachedThreadPool() newFixedThreadPool(n) newScheduledThreadPool(n) newSingleThreadExecutor() guava.MoreExecutors sameThreadExecutor() listeningDecorator(executor)
E A SINCRONIZAÇÃO?
COLEÇÕES CONCORRENTES ConcurrentMap<T, K>
putIfAbsent(key, value) remove(key, value) replace(key, value) replace(key, oldValue, newValue)
COLEÇÕES CONCORRENTES ConcurrentNavigableMap<T, K>
headMap(toKey) tailMap(fromKey) subMap(fromKey, toKey)
PROBLEMA DO PRODUTOR-
CONSUMIDOR produz consome A BUFFER B
COLEÇÕES BLOQUEANTES ArrayBlockingQueue<T>, PriorityBlockingQueue<T> DelayQueue<T>
Exception: add, remove Retorna Flag: offer, poll Bloqueia: put, take Timeout: offer², poll²
ESTRUTURAS DE DADOS
DE SINCRONIZAÇÃO Semaphore acquire(number) release(number)
ESTRUTURAS DE DADOS
DE SINCRONIZAÇÃO CountDownLatch countDown() await()
ESTRUTURAS DE DADOS
DE SINCRONIZAÇÃO CyclicBarrier await()
OPEN SOURCE
APACHE
Hadoop Lucene Maven Tomcat ZooKeeper HBase Solr ActiveMQ Ant Log4J
RED HAT
Hibernate JBoss TorqueBox JGroups Infinispan AeroGear Drools EJB3 HornetQ RichFaces
GOOGLE
Guava Guice ('Juice') Gson Protocol Buffers Contracts GWT Caliper
OPEN JDK
APACHE MAVEN <dependency>
<groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> </dependency>
APACHE MAVEN
JGROUPS JChannel channel =
new JChannel(); channel.setReceiver(new ReceiverAdapter() { public void receive(Message msg) { System.out.println( msg.getSrc() + ": " + msg.getObject()); } }); channel.connect("meuCanalDeChat"); BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); while(true) { String line = reader.readLine(); channel.send(null, line); }
GUAVA Preconditions Immutable Collections Caching Functional Idioms Signed
Numbers Reflection Math Optimized Data Structures Simplified I/O
GUAVA LoadingCache<Key, Graph> graphs
= CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .removalListener(MY_LISTENER) .build(new CacheLoader<Key, Graph>() { public Graph load(Key key) throws AnyException { return createExpensiveGraph(key); } });
GUICE ou SPRING? É
mais rápido Mais usuários Sem XML Não é só IOC Menos Annotations Integra melhor Melhores convenções Mais documentação AOP embutido
MOCKITO when(obj.method()).thenReturn(42); verify(obj).method();
LINGUAGENS ALTERNATIVAS ●
JRuby ● Clojure ● Scala ● Groovy ● DynJS
IDE
IDEs
IDE
HOTSPOT
JIT E ADAPTIVE
OPTIMIZATION Loop Unrolling Method inlining Exact Type Inference Type Test Strength Reduction Dead Code Elimination Tiered Compilation Lock Elision Dereflection Autobox Elimination
GC: CONCURRENT MARK
SWEEP
JVISUALVM
JVISUALVM
YOURKIT PROFILER
Tecnologia não é
religião, time de futebol ou partido político.
Obrigado.
Advertisement