The next project we worked on was a device manager written in Java/Spring/Wicket/Hibernate. Actually, there were a couple projects for this customer, but the general architecture was the same. The applications run in the cloud and use Terracotta to share information between instances. There were several devices supported, but generally, the devices were Zigbee gateways and the gateway controlled other devices. These devices might be in a smart home or installed in an industrial environment to monitor equipment or resources.
The roses here were the interesting technology used. Java/Spring/Wicket/Hibernate and Zigbee devices are interesting. Were were also implementing SMS and satellite interfaces for devices that were not connected to the Internet, so those were fun problems to solve.
Now I think Java is a great language and I have a lot more enthusiasm for it than Ruby as a language, but Java model/view controller (MVC) is nothing to RoR MVC. There is no natural enforcement for controllers and I don’t think hibernate lends itself to putting logic in the models as it does in RoR. Part of the problem was the application started before Hibernate annotations, so they used XML and generated POJOs. Terracotta also provided a new set of problems for us. It is all about learning how to set up Terracotta, but you think everything is great because your unit tests pass and your functional tests run fine, but when you spin up multiple instances of servers, things blow up.