Indic threads pune12-typesafe stack software development on the jvm
Upcoming SlideShare
Loading in...5

Indic threads pune12-typesafe stack software development on the jvm



The 7th Annual IndicThreads Pune Conference was held on 14-15 December 2012.

The 7th Annual IndicThreads Pune Conference was held on 14-15 December 2012.



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Indic threads pune12-typesafe stack software development on the jvm Indic threads pune12-typesafe stack software development on the jvm Presentation Transcript

  • Typesafe Stack SoftwareDevelopment On The JVMSushanta PradhanTalentica Software (I) Pvt. Ltd.
  • History of Hardware Architecture• Single core era • moores law achieved by increasing clock cycles• Multi core era • moores law achieved by increasing # of cores
  • Moore’s Law
  • 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
  • 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
  • contd .. • web2.0/semantic web era • web/networked applications • Smart apps • data not controlled by vendor but by the users • deployed on cloud
  • Properties of modern day App• Scalability• Distributed• Parallel & Concurrent• Dynamic• Agile & Swift
  • Parallelism & Concurrency • Parallel Programming • parallel execution of programs • cant be performed without parallel hardware • programs get faster
  • Parallelism & Concurrency• Concurrent Programming • simultaneous execution of programs • can be performed without parallel hardware • programs get more responsiveBoth are too hard !!
  • 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
  • Remedy? PREVENTION IS BETTER THAN CURE !! • Avoid mutable state and get deterministic processing • Which means program functionally
  • Space vs TimeSpace(functional/parallel) Time(imperative/concurrent)
  • Scala• Hybrid – functional & object oriented (pure)• strong static typing• Agile - concise & expressive• Parallel & Sequential• intermixes well with Java
  • Scala contd .. Parallellism • parallel collections • distributed collections Concurrency • Actors • STM Akka • Futures
  • Scala contd ..• Concise Java• Immutability Val & Var• Tuples & Multiple Assignments• Sensible Defaults• Operator Overloading
  • Scala classes ..• Terse• Object keyword - Singleton• Companion Objects• Type inference• Option[T] – Some[T], None
  • Class hierarchy
  • Scala – Functional Aspects• Functions too are objects• Higher Order Functions• Partially applied Functions• Closures
  • Scala Inehritance• Traits• Mixins• Type inference - implicit keyword
  • Scala collections• Mutable & immutable• filter()• Map()• foldLeft()• foldRight()
  • Scala – Pattern Matching• Advanced switch case• Literals and constants• WildCards• Tuples & Lists• Guards• Regular Expressions
  • Scala - Concurrency• actor()• Actor Class• receive() & recieveWithin()• react() & reachWithin()• loop() & loopwhile()
  • Akka - Middleware• Concurrent, Scalable & fault-tolerant• based on actor model• highly performant• event driven• location transparency
  • Actor system• ensemble of actors sharing common configuration• hierarchical structure• heavyweight• has its own pool of resources threads
  • Supervision• dependency relationship between actors• supervisor - subordinate model• supervisor monitors and reacts to any errors reported by subordinates• configurable supervision strategy• lifecycle monitoring
  • Supervision hierarchy ”root guardian” ”guardian” shutdown “system guardian” order
  • Remoting• ActorPath • purely local - "akka://my-sys/user/service-a/worker1" • local or remote - "akka:// /user/service-b"• Seamlessly send messages to actors on remote nodes
  • Routing• route messages to actors(routees)• ideal for load balancing• Examples • RoundRobinRouter • RandomRouter • SmallestMailboxRouter • BroadcastRouter
  • Dispatchers• make akka actors tick• manages the resources(threads) used by actors• configure mailboxes of actors• Examples • fork-join-executor • thread-pool-executor
  • Play• ruby on rails like agility• convention over configuration• seamless integration with akka for scalability• edit and test
  • 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
  • Progressive Stream Processing• Iteratees• Enumerators• Enumeratees
  • Q/A