Monthly Archives: October 2014

Production helper utility for Java team

I have been thinking about going through some of these tools to get more productive in deploying / delivering Java based web apps to the team:

Drop Jar is a helpful tool to share jar files.

Drop Wizard is a helpful tool for delivering production read jar files.

Spring Boot allows developers to create web apps easily using convention over configuration.

Shade Plugin allows a Maven based build to overcome duplicate / incompatible versions of libraries. If you have been bitten by incompatible log files you know what I mean.

Open IoT Stack (Internet of Things)

I came across this article on DZone which talks about Open IoT Stack for Java. This stack is envisioned to allow developers to make apps on light weight devices to build IoT solutions. This press release from Eclipse drives home the point as to why IoT is no longer a hype and much more of an imminent reality in the near future. Another report from Vision Mobile talks about how a network of app entrepreneurs might push IoT to unprecedented heights.

Akka for Reactive Programming

As I mentioned in my previous post reactive programming has a compelling reason for adoption as it allows developers to focus on their data flow and business logic. Akka has come across as a tool to enforce reactive programming. It allows you to create distributed and concurrent applications of high complexity in shorter and more manageable time frame.

Reactive programming

Reactive Programming seems to be the rage nowadays (as observed in blogs and newsletter). Out of curiosity I looked it up and was impressed with what it is capable of. Turns out that this is a declarative approach which allow code to react to changes in referenced values.

Let’s understand it from the perspective of a spread sheet. Lets say cell A1 has the formula “=B1+C1”. Now typically we expect that if we change the value in B1 or C1 then the value of cell A1 will be updated automatically.

Keeping this example in mind now lets see how  this can work in programming world. Lets say we have an expression that says A = B + C. When this expression is executed in our code then the value of A is updated whenever this expression is ‘executed’. Once this is done the value of B can be changed or the value of C can be changed without reflecting on the value of A. To enforce a ripple effect back to A like we observed for cell A1 in spreadsheet we have to devise elaborate observers / listeners on the values of B and C to update A whenever the value of B or C change. In a real life production environment this simple expression can be replaced with more complex algorithm or data flow and you have a situation which can quickly get out of hand and might be difficult if not impossible to debug.

In reactive programming we react to changes. So in the above situation the value of variable A will be updated as and when the value of B or C changes.

This concept has been well explained in a dzone article.