Your SlideShare is downloading. ×
  • Like
Indic threads pune12-typesafe stack software development on the jvm
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Indic threads pune12-typesafe stack software development on the jvm

  • 513 views
Published

The 7th Annual IndicThreads Pune Conference was held on 14-15 December 2012. http://pune12.indicthreads.com/

The 7th Annual IndicThreads Pune Conference was held on 14-15 December 2012. http://pune12.indicthreads.com/

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
513
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Typesafe Stack SoftwareDevelopment On The JVMSushanta PradhanTalentica Software (I) Pvt. Ltd.
  • 2. History of Hardware Architecture• Single core era • moores law achieved by increasing clock cycles• Multi core era • moores law achieved by increasing # of cores
  • 3. Moore’s Law
  • 4. PPP – Grand Challenge• Parallel programming as easy as sequential programming• Moores’s law of performance – speed up 2 times year on year• Eliminate concurrency bugs
  • 5. History of software applications • pre .com era • standalone desktop apps • .com era • web sites - static web pages, automated business processes • data controlled by software vendor • deployed on data centers
  • 6. contd .. • web2.0/semantic web era • web/networked applications • Smart apps • data not controlled by vendor but by the users • deployed on cloud
  • 7. Properties of modern day App• Scalability• Distributed• Parallel & Concurrent• Dynamic• Agile & Swift
  • 8. Parallelism & Concurrency • Parallel Programming • parallel execution of programs • cant be performed without parallel hardware • programs get faster
  • 9. Parallelism & Concurrency• Concurrent Programming • simultaneous execution of programs • can be performed without parallel hardware • programs get more responsiveBoth are too hard !!
  • 10. Why Hard?• non-determinism due to shared mutable state by concurrent threads• encapsulate state in actors or transactors but fundamental problems still remains non-determinism = parallel processing + mutable state
  • 11. Remedy? PREVENTION IS BETTER THAN CURE !! • Avoid mutable state and get deterministic processing • Which means program functionally
  • 12. Space vs TimeSpace(functional/parallel) Time(imperative/concurrent)
  • 13. Scala• Hybrid – functional & object oriented (pure)• strong static typing• Agile - concise & expressive• Parallel & Sequential• intermixes well with Java
  • 14. Scala contd .. Parallellism • parallel collections • distributed collections Concurrency • Actors • STM Akka • Futures
  • 15. Scala contd ..• Concise Java• Immutability Val & Var• Tuples & Multiple Assignments• Sensible Defaults• Operator Overloading
  • 16. Scala classes ..• Terse• Object keyword - Singleton• Companion Objects• Type inference• Option[T] – Some[T], None
  • 17. Class hierarchy
  • 18. Scala – Functional Aspects• Functions too are objects• Higher Order Functions• Partially applied Functions• Closures
  • 19. Scala Inehritance• Traits• Mixins• Type inference - implicit keyword
  • 20. Scala collections• Mutable & immutable• filter()• Map()• foldLeft()• foldRight()
  • 21. Scala – Pattern Matching• Advanced switch case• Literals and constants• WildCards• Tuples & Lists• Guards• Regular Expressions
  • 22. Scala - Concurrency• actor()• Actor Class• receive() & recieveWithin()• react() & reachWithin()• loop() & loopwhile()
  • 23. Akka - Middleware• Concurrent, Scalable & fault-tolerant• based on actor model• highly performant• event driven• location transparency
  • 24. Actor system• ensemble of actors sharing common configuration• hierarchical structure• heavyweight• has its own pool of resources threads
  • 25. Supervision• dependency relationship between actors• supervisor - subordinate model• supervisor monitors and reacts to any errors reported by subordinates• configurable supervision strategy• lifecycle monitoring
  • 26. Supervision hierarchy ”root guardian” ”guardian” shutdown “system guardian” order
  • 27. Remoting• ActorPath • purely local - "akka://my-sys/user/service-a/worker1" • local or remote - "akka://my-sys@host.example.com:5678 /user/service-b"• Seamlessly send messages to actors on remote nodes
  • 28. Routing• route messages to actors(routees)• ideal for load balancing• Examples • RoundRobinRouter • RandomRouter • SmallestMailboxRouter • BroadcastRouter
  • 29. Dispatchers• make akka actors tick• manages the resources(threads) used by actors• configure mailboxes of actors• Examples • fork-join-executor • thread-pool-executor
  • 30. Play• ruby on rails like agility• convention over configuration• seamless integration with akka for scalability• edit and test
  • 31. Play contd .. • an easy, out-of-the-box setup for unit and functional testing • asynchronous HTTP request handling • WebSocket support • cache support (e.g. memcached) • integrated JSON and XML handling
  • 32. Progressive Stream Processing• Iteratees• Enumerators• Enumeratees
  • 33. Q/A