HOME SCALA & F# JAVA .NET WEB GROOVY & GRAILS ANDROID & IOS NOSQL ARCHITECTURE AGILE & SCRUM AGILE DEVELOPER  
London Java Community:May's Code Share: The Bytecode Behind The Curtain
May's Code Share: The Bytecode Behind The Curtain
The Wizard of Oz appeared terrible and frightening, but when the curtain was pulled away he was revealed to be a little old man with a bald head and a wrinkled face.

As it fell with a crash they looked that way, and the next moment all of them were filled with wonder. For they saw, standing in just the spot the screen had hidden, a little old man, with a bald head and a wrinkled face, who seemed to be as much surprised as they were. The Tin Woodman, raising his axe, rushed toward the little man and cried out, "Who are you?"

"I am Oz, the Great and Terrible,"

http://www.gutenberg.org/files/55/55-h/55-h.htm#chap16

For the experienced Java programmer we may seem to live in frightening times.  Functional programmers tell us that the world has become too complicated for us to understand.  Our careers might survive, if only we had lambdas, currying, higher-order functions, comprehensions and monads.

Functional programming has been described as an arcane, magicians art.  Take, for example, the opening of The Structure and Interpretation of Computer Programs:

In effect, we conjure the spirits of the computer with our spells.

A computational process is indeed much like a sorcerer's idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer's spells.

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-9.html

For an example of arcane spells as incomprehensible as anything uttered by Albus Dumbledore you don't have to go far.  Consider Monads, for example.  Haskell has Monads, as does Scala.  So what is a monad?  Helpfully the Haskell Wiki explains everything:

Monads in Haskell can be thought of as composable computation descriptions. The essence of monad is thus separation of composition timeline from the composed computation's execution timeline, as well as the ability of computation to implicitly carry extra data, as pertaining to the computation itself, in addition to its one (hence the name) output, that it will produce when run (or queried, or called upon). This lends monads to supplementing pure calculations with features like I/O, common environment or state, and to preprocessing of computations (simplification, optimization etc.).

http://www.haskell.org/haskellwiki/Monad

Understanding Monads isn't just a simple case of learning or training.  It is a magical, spiritual experience.  This is why everybody who has every managed to understand them has written their own Monad tutorial.

[I]t seems like every programmer who gets monads posts a tutorial about them. (And each post begins with: There’s already a lot of monad tutorials on the Internet, but...) The reason is that getting monads it’s like a spiritual experience that you want to share with others. (Bartosz Milewski)

http://www.haskell.org/haskellwiki/Monad_tutorials_timeline

At the Code Shares we like to keep things simple and practical.  It doesn't matter how intimidating or confusing the words are, in the end it all has to be executed by a JVM.  A little JVM starting to show its age with a limited vocabulary of bytecodes.

The goal of May's Code Share is to ignore the big long explanations and take a look at how some of the functional features of languages like Scala or Clojure actually work.

May's Coding Challenge: Revealing the Magicians Secrets

The challenge for this month is to find an impressive one liner in a clever language and decompile it using a tool like JD, or Mocha.

What is actually going on?

What would the corresponding Java version look like?

Are these one liners just as efficient after compilation?

WANT TO LEARN MORE? THEN CHECK OUT OUR EXPERT WORKSHOPS!

Progressive Java Tutorials (May 3-4)

Skills Matter is pleased to announce the First Progressive Java Tutorials, the annual Java conference offering a unique blend of product and experience mixed, and tempered with theory and practice. Sign up here

Scala Days 2012 - Watch the videos!

Scala Days is the premier event for Scala enthusiasts, researchers, and practitioners. Scala Days 2012 was a fantastic and unique occasion to meet with Scala-using professionals and companies, to exchange ideas and form business relations, as well as to discover the latest practical and theoretical development concerning the Scala language. Watch the videos here: book here.

Typesafe's Fast Track to Scala

This two-day Fast Track to Scala course, designed by Martin Odersky, the creator of the Scala programming language, and Heiko Seeberger, a recognized Scala expert, will give you an excellent grounding in Scala.
    LEARN HOW TO:
  • be a competent user of Scala constructs in application code
  • know and be able to apply the functional programming style in Scala
  • know how to use the fundamental Scala tools
  • be confident to start using Scala in production applications
Find out more here

Typesafe's Advanced Scala

If you already have some programming experience with Scala and need to understand it's advanced features, Typesafe's Advanced Scala will show you how to unleash the full power of this scalable language.

It is intended to enable developers, who have at least 3 months programming experience with Scala and feel comfortable to use it in their applications, to fully understand various advanced features of this programming language and how to apply these to create well designed libraries or DSLs using proven practices. Find out more here

Ian Robinson and Jim Webber's Neo4J Tutorial

"Graph databases like Neo4j are an esoteric and powerful member of the NOSQL family. For highly connected data, graph databases can be thousands of times faster than relational databases, making Neo4j popular for managing complex data across many domains from finance to social, and telecoms to geospatial. This intensive two-day tutorial provides a mixture of theory and hands-on practical sessions to demonstrate the capabilities of graph data and the Neo4j database. Find out more here.

Howard Lewis Ship's Web Application Development with Tapestry

This four day Core Tapestry: Web Application Development with Tapestry course is taught as an interactive workshop consisting of seven labs. You will learn a different aspect of Tapestry in each lab; a particular component or set of components, or a particular challenge you are likely to face. Howard Lewis Ship's tapestry workshop gently leads you into the way of Tapestry, and helps you understand exactly what it is that Tapestry does and even how it operates internally. Find out more here

Kito Mann's JSF2 in Action

Build highly interactive Ajax-enabled applications with JavaServer Faces (JSF) 2, the standard web application framework for Java EE. JSF 2 incorporates time-saving features, such as convention-over-configuration, built-in Ajax, templating, simple custom UI component development, and several powerful third-party Ajax component suites. JSF applications can be integrated seamlessly with Spring and/or Java EE. This course covers the key features of JavaServer Faces and walks you through building different aspects of a JSF application. You will also learn how to take advantage of rich JSF component suites such as ICEfaces and RichFaces.. Find out more here


ABOUT VARIOUS SPEAKERS
Various Speakers
More about Various Speakers

ABOUT THE LONDON JAVA COMMUNITY
The LJC is the Java User Group in London. It has over 3000 members and was founded in 2007 by Barry Cranford of RecWorks Ltd. The LJC is organised by a committee of passionate Java Enthusiasts.
More about the London Java Community
Podcast coming soon: May's Code Share: The Bytecode Behind The Curtain,
PROGRESSIVE .NET PODCASTS
Eric Evans:Welcome: Eric Evans, Welcome: Eric Evans
Eric Evans : 14th Jun 2013
View Podcast: Welcome: Eric Evans,
Alberto Brandolini:Rethinking Enterprise Software, Rethinking Enterprise Software
Alberto Brandolini : 14th Jun 2013
View Podcast: Rethinking Enterprise Software,
Ian Robinson:Miching Mallecho: Mischief, Motivation and Graph Models, Miching Mallecho: Mischief, Motivation a
Ian Robinson : 14th Jun 2013
View Podcast: Miching Mallecho: Mischief, Motivation and Graph Models,
Paul Rayner:DDD with Ruby on Rails and MongoDB, DDD with Ruby on Rails and MongoDB
Paul Rayner : 14th Jun 2013
View Podcast: DDD with Ruby on Rails and MongoDB,
Greg Young:Document based messaging and analysis, Document based messaging and analysis
Greg Young : 14th Jun 2013
View Podcast: Document based messaging and analysis,
Robert Smallshire:How DDD became an essential ingredient for competitive software in the energy sector, DDD in the Energy Sector
Robert Smallshire : 14th Jun 2013
View Podcast: How DDD became an essential ingredient for competitive software in the energy sector,
Eric Evans:Email, Ubiquitous Language, Visualization & Clojure: Eric's Sandbox Project, Email, Ubiquitous Language, Visualizatio
Eric Evans : 14th Jun 2013
View Podcast: Email, Ubiquitous Language, Visualization & Clojure: Eric's Sandbox Project,
Uncle Bob (Robert C. Martin): Systems and Domains.  Triplet Sons of Different Mothers, Systems and Domains. Triplet Sons of D
Uncle Bob (Robert C. Martin) : 14th Jun 2013
View Podcast:  Systems and Domains.  Triplet Sons of Different Mothers,
Zi Makki:PARK BENCH PANEL DISCUSSION, PARK BENCH PANEL DISCUSSION
Zi Makki : 14th Jun 2013
View Podcast: PARK BENCH PANEL DISCUSSION,
Tomas Petricek:Machine Learning Hands On with F#, Machine Learning Hands On with F#
Tomas Petricek : 13th Jun 2013
Podcast Coming Soon: Machine Learning Hands On with F#,
Udi Dahan:June Q&A, June Q&A
Udi Dahan : 6th Jun 2013
View Podcast: June Q&A,
 :F# on iPad and iPhone with Xamarin Studio, F# on iPad and iPhone with Xamarin Studi
: 30th May 2013
View Podcast: F# on iPad and iPhone with Xamarin Studio,
Ian Cooper:Keynote: Ian Cooper , Keynote: Ian Cooper
Ian Cooper : 29th May 2013
View Podcast: Keynote: Ian Cooper ,
Mark Rendle:Single Page Applications with AngularJS and TypeScript and Simple.Web (oh my!), Single Page Applications with AngularJS
Mark Rendle : 29th May 2013
View Podcast: Single Page Applications with AngularJS and TypeScript and Simple.Web (oh my!),
Dylan Beattie :10 Deploys a Day, the .NET Way, 10 Deploys a Day, the .NET Way
Dylan Beattie : 29th May 2013
View Podcast: 10 Deploys a Day, the .NET Way,
OTHER PROGRESSIVE .NET EVENTS
Tomas Petricek:Fast Track to F# with Tomas Petricek & Phil Trelford,  Fast Track to F# with Tomas Petricek & Phil Trelfo
2 DAY COURSE. Featuring Tomas Petricek
London, Monday, June 24th
The London Python Group:Intro to python debug, The London Python Group
FREE EVENT: Intro to python debug
London, Monday, June 24th
Michael C. Feathers:Masterclass: Reducing Technical Debt with Michael C. Feathers,  Reducing Technical Debt with Michael C. Feathers
2 DAY COURSE. Featuring Michael C. Feathers
London, Thursday, June 27th
F#unctional Londoners Meetup Group:Last-Fi -An F# powered Raspberry Pi internet radio, F#unctional Londoners Meetup Group
FREE EVENT: Last-Fi -An F# powered Raspber
London, Thursday, June 27th
DDD East Anglia 2013, DDD East Anglia 2013
CONFERENCE (1 DAY)
Cambridge , Saturday, June 29th BOOK NOW!
Simon Brown Software architecture and code,  Software architecture and code
FREE EVENT: In The Brain of Simon Brown
London, Monday, July 1st
Damjan Vujnovic:Gojko Adzic's Test Driven Development Workshop,  Gojko Adzic's Test Driven Development Workshop
2 DAY COURSE. Featuring Damjan Vujnovic
London, Thursday, July 11th
London GameCraft , London GameCraft
CONFERENCE (1 DAY)
London, Saturday, August 10th BOOK NOW!
© Copyright 2003-2013, Skills Matter Ltd
About Us  Jobs  Find Us  Meeting & Training Rooms  Newsletter  Jobs: Sales Executive  Jobs: Student SkillsCaster  jobs - junior event coordinator  Open Source Journal  Jobs: Sponsorship Development  jobs: Marketing & Sales Graduate Internship  Jobs: HR Manager  jobs-Join Our Dev Team  DevOps Engineer  Front-End Engineer  Test Engineer