• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Indic threads pune12-typesafe stack software development on the jvm
 

Indic threads pune12-typesafe stack software development on the jvm

on

  • 830 views

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/

Statistics

Views

Total Views
830
Views on SlideShare
830
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

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.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
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://my-sys@host.example.com:5678 /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