David Syer and Mark Fisher on using Spring to develop concurrent and distributed apps, covering topics such as: asynchronous execution, intra-process, inter-process and inter-JVM communication.
Dr David Syer is the technical lead on Spring Batch, the batch processing framework and toolkit from SpringSource, and a committer to Spring AMQP. Mark Fisher is an engineer within the SpringSource division of VMware and lead of the Spring Integration project. He is also a committer on the core Spring Framework and the Spring BlazeDS Integration project.
SpringOne 2GX is a collocated event covering the entire Spring ecosystem and Groovy/Grails technologies. SpringOne 2GX is a one-of-a-kind conference for application developers, solution architects, web operations and IT teams who develop, deploy and manage business applications. This is the most important Java event of 2010, especially for anyone using Spring technologies, Groovy & Grails, or Tomcat. Whether you're building and running mission-critical business applications or designing the next killer cloud application, SpringOne 2GX will keep you up to date with the latest enterprise technology.
Very nice presentation.
Can I have access at the samples and/or slides? Are they available somewhere on the net?
The samples are available here: git.springsource.org/s2gx-2010/concurrent-progr...
...and the slides are here: www.slideshare.net/DaveSyer/concurrency-fisher-...
But there are some very small mistakes in the sample code I downloaded from git.springsource.org/s2gx-2010/concurrent-progr... :
- * In the pom.xml file from the project "messaging", the activemq-core dependency should exclude its spring-context transitive dependency. Failing to do so brings version 2.5.6 of spring-context and its transitive dependencies to the project, which results in some compilation errors (like the error "The type ApplicationListener is not generic; it cannot be parameterized with arguments <ApplicationEvent>" present in SimpleEventListener.java). The following config should do the trick (notice the exclusion):
- * In the CounterDemo.java from the project "concurrency", there is a comment that reads "also try: newSingleThreadPool, newFixedThreadPool(2)". That newSingleThreadPool should be newSingleThreadExecutor() .
- * Still in CounterDemo.java and not really a bug: the line int loop = 100000; (hundred thousand) should really be int loop = 1000000; (a million). That way, it would be exactly like the presentation and better demonstrate the "Performance Myth-buster" which you explained in the presentation and in that README.TXT. =)
Thanks again for the presentation, slides and code.