devday2012

1,528 views

Published on

Palestra sobre Java no DevDay BH 2012

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
  • Esta palestra eu queria ter presenciado.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
1,528
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
17
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

devday2012

  1. 1. @juanplopesJAVA PARA PROGRAMADORES .NET
  2. 2. Rio de Janeiro
  3. 3. Bel Zonte
  4. 4. Em comunidades,pessoas antes de tecnologias.
  5. 5. REVELAÇÃO!
  6. 6. REVELAÇÃO!https://github.com/juanplopes/mublasters
  7. 7. VAMOS FALAR MAL DE
  8. 8. SISTEMA DE TIPOS NÃO É UNIFICADO NÃO TEM STRUCTSGENERICS TEM TYPE ERASURE
  9. 9. API DE DATAS SOFRÍVEL NÃO TEM ITERATOR METHODSNÃO TEM CLOSURES OU LAMBDAS
  10. 10. java.util.concurrent
  11. 11. NÃO CRIE THREADSnew Thread(new Runnable() { public void run() { }}).start();
  12. 12. TRABALHANDO COM FUTURESFuture é a promessa do resultado de uma computação que ainda não terminou (ou sequer começou).
  13. 13. TRABALHANDO COM FUTURESExecutorService executor = ...Future future = executor.submit(new Runnable() { public void run() { }});//qualquer outro trabalhofuture.get(); //bloqueante
  14. 14. TRABALHANDO COM FUTURESExecutorService executor = ...Future<String> future = executor.submit(new Callable<String>(){ public String call() { return "42"; }});//qualquer outro trabalhoString result = future.get(); //bloqueante
  15. 15. .NET TASK FACTORYTaskFactory factory = ...var task = factory.StartNew(() => "42");//qualquer outro trabalhoString result = future.Result; //bloqueante
  16. 16. .NET TASK FACTORY Java 5 (2004)ExecutorService e Future<T> .NET 4 (2010)TaskFactory, TaskScheduler e Task<T>
  17. 17. TRABALHANDO COM FUTURESExecutors newCachedThreadPool() newFixedThreadPool(n) newScheduledThreadPool(n) newSingleThreadExecutor()guava.MoreExecutors sameThreadExecutor() listeningDecorator(executor)
  18. 18. E A SINCRONIZAÇÃO?
  19. 19. COLEÇÕES CONCORRENTESConcurrentMap<T, K> putIfAbsent(key, value) remove(key, value) replace(key, value) replace(key, oldValue, newValue)
  20. 20. COLEÇÕES CONCORRENTESConcurrentNavigableMap<T, K> headMap(toKey) tailMap(fromKey) subMap(fromKey, toKey)
  21. 21. PROBLEMA DO PRODUTOR- CONSUMIDOR produz consome A BUFFER B
  22. 22. COLEÇÕES BLOQUEANTESArrayBlockingQueue<T>,PriorityBlockingQueue<T>DelayQueue<T> Exception: add, remove Retorna Flag: offer, poll Bloqueia: put, take Timeout: offer², poll²
  23. 23. ESTRUTURAS DE DADOS DE SINCRONIZAÇÃOSemaphore acquire(number) release(number)
  24. 24. ESTRUTURAS DE DADOS DE SINCRONIZAÇÃOCountDownLatch countDown() await()
  25. 25. ESTRUTURAS DE DADOS DE SINCRONIZAÇÃOCyclicBarrier await()
  26. 26. OPEN SOURCE
  27. 27. APACHE Hadoop Lucene Maven Tomcat ZooKeeper HBase Solr ActiveMQ Ant Log4J
  28. 28. RED HAT Hibernate JBoss TorqueBox JGroups Infinispan AeroGear Drools EJB3 HornetQ RichFaces
  29. 29. GOOGLE Guava Guice (Juice) Gson Protocol Buffers Contracts GWT Caliper
  30. 30. OPEN JDK
  31. 31. APACHE MAVEN<dependency> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version></dependency>
  32. 32. APACHE MAVEN
  33. 33. JGROUPSJChannel 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);}
  34. 34. GUAVAPreconditionsImmutable CollectionsCachingFunctional IdiomsSigned NumbersReflectionMathOptimized Data StructuresSimplified I/O
  35. 35. GUAVALoadingCache<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); } });
  36. 36. GUICE ou SPRING?É mais rápido Mais usuáriosSem XML Não é só IOCMenos Annotations Integra melhorMelhores convenções Mais documentaçãoAOP embutido
  37. 37. MOCKITOwhen(obj.method()).thenReturn(42);verify(obj).method();
  38. 38. LINGUAGENS ALTERNATIVAS● JRuby● Clojure● Scala● Groovy● DynJS
  39. 39. IDE
  40. 40. IDEs IDE
  41. 41. HOTSPOT
  42. 42. JIT E ADAPTIVE OPTIMIZATIONLoop UnrollingMethod inliningExact Type InferenceType Test Strength ReductionDead Code EliminationTiered CompilationLock ElisionDereflectionAutobox Elimination
  43. 43. GC: CONCURRENT MARK SWEEP
  44. 44. JVISUALVM
  45. 45. JVISUALVM
  46. 46. YOURKIT PROFILER
  47. 47. Tecnologia não é religião,time de futebol ou partido político.
  48. 48. Obrigado.

×