I'm currently a university student and do programing work for my University. Since the stuff I work on was also written by student programmers, it has become pretty ugly over the years and my boss wants to do a rewrite over time of the webapps we're in charge of, (email and phone systems).<p>The situation: Java stack. We have to connect to LDAP, Exchange (we're transitioning from 2007 to 2010), Oracle SQL and a Cisco Phone Call Manager.
We've been transitioning to Spring for a while now and away from Tapestry. We also use Hibernate. We have some C# code to interface with Exchange, as well as some SOAP that my coworker manges to communicate with Exchange and the Cisco call manager.<p>The boss wants to fully transition to Spring. I will work on this for the next three years, so I want it to be as enjoyable as possible. Two questions:<p>1. If we have to use Spring, what are your recommendations for other enjoyable technology alternatives to do what we are doing?<p>2. If we could do anything, JVM-wise what would you recommend? Play or something? I don't know. Scala would be pretty cool (or even Clojure) but I think my boss would have trouble finding someone to maintain my code once I leave ...
You can write Scala like a better Java. When I started writing scala, I didn't use any of the functional features, I basically wrote Java with closures.<p>Slowly my code has taken a more functional, idiomatic Scala feel to it, but I think it's possible to write approachable Scala code if that is one of your design goals.