For our first look at what’s in store for ETE 2012, we talk with our own Ken Rimple, co-author of Spring Roo in Action. Ken is Director of Education Services and is a regular co-host of Chariot’s TechCast – our monthly podcast series focusing on development and training in Spring, Rails, Scala, Hibernate, Maven and other emerging technologies in the field.
Q: After last year’s tremendous following and turnout for ETE, people are really expecting this year to raise the bar. Tell us a bit about what you’ll be discussing at this year’s ETE and what people can expect from your presentation in particular.
Ken: I’ll be talking about the subject I actually wrote a book around – Spring Roo. It’s a software tool that helps people develop applications in Spring, which is a very popular Java application development platform. I’m going to talk about building Roo add-ons, which is kind of extending the features of the platform with ones that don’t exist today.
Q: So it’s all about building new features from scratch?
Ken: Exactly! For example, there are add-ons that configure different web frameworks, like Vaadin and JSF. At one point, there was an add-on for programming Flex applications [ed. note: this is currently non-functional], which are Flash-based frontends, and add-ons for other integrations to other systems.
Q: That sounds pretty impressive – it seems like Roo’s major role is to lend a real boost to the productivity developers get with Spring. With that said, how difficult is it to learn? How much of a learning curve is there for someone who traditionally programs in Java to move to Spring and then add Roo on top of that?
Ken: That’s a really good question. The thing about Spring – and let’s take a step back here to talk about some background – the thing about Java applications for about five or six years after Java became popular back in the late 90s early 00s was that there were some standard APIs for doing development and they were written by Sun.
Sun said here’s how you would do web application development, here’s how you would do business programming, etc. Those APIs were kind of limited and they had complexity issues. You ended up writing a lot of XML and extra code.
So Spring came along as a reaction to the difficulty of writing applications in Java and all the extra work we were having to do. Spring itself is a breath of fresh air for Java programmers. It levels the playing field and made it a lot easier to build applications that were easier to test and things like that. But Spring also adds its own complexity, so you shift from writing a lot of code to configuring components of a framework and ultimately writing less code.
Spring is a platform that itself is complex, but it makes your programming ultimately easier to write and understand. But to get to the point where you’re actually programming, it takes a lot more work. What Roo does is provide you a simple shell that accepts commands, and Roo does the configuration for you.
You can tell the shell to “build a web application and add a database to it” giving it simple commands to do so. It makes developing Java applications with Spring easier to get started with.
[The Roo team] are trying to give you good starting points, relatively good ways of doing things so that you can be productive right away on the Spring platform.
And the nice thing about Roo is, unlike a lot of other frameworks, it doesn’t force you to program in something different than what you’re used to. You’re still going to program in Spring, you’re still going to program in Java, so it’s just as if you were working on a Spring application or a Java application, but you’ve gotten there quicker.
Q: So basically there’s a lot less downtime with learning new classes, new syntax, etc.?
Ken: There can be. I think part of it is [that] if you’re a Spring developer, [Roo] frees you from the busywork you that have to do. I call it “doing my light work” in the book. It really takes care of repetitive tasks. But it’s not hidden from you, the code’s still there, it’s just not in your way as you’re writing your business code.
I think you still need to be aware of the platform you’re working on. So you should learn something about Spring – you can’t ignore it, because you are programming in it. But what Roo does is configure the environment and allow you to quickly create a controller, a Spring Bean, relational mappings with JPA, entities, everything you need to use for transactional programming to databases, for example. All that stuff that takes a project a week, two weeks, three weeks is done for you.
Q: That sounds like it could be really helpful for companies looking to speed up production, but with so many different layers – Roo on top of Spring on top of Java – does it make it difficult to keep everything compatible and up-to-date?
Ken: That’s a good question. Normally, Spring issues about one big release per year – but Roo is developed by a team of VMware’s Spring Framework developers, and they keep Roo compatible with the latest versions of the software. Roo 1.2 uses Spring 3.1, and I understand it supports Java 7, for example.
Q: Are there any big changes that you’re excited about with these new updates?
Ken: I know that one of the major things is that Spring is starting to take into account the environment that you’re running in. You can then turn features on or off based on that environment.
For instance, in development and testing, you may want the logging and reporting turned way up so you can trace through a problem. But in production, you’re going to have that program on a server somewhere, where it’s pretty much lights out and you don’t want to fill up the disk space with lots of logging, so you will dial it back.
You could tell Spring to enable the logging only if [you are running the code] in a development environment name. That’s something that other platforms such as Ruby on Rails have had for a while and that will make it easier for Spring to play the same sort of role. I’m sure that Roo will be rolling this feature within the next few updates.
This release of Spring is also the one that officially supports the latest version of Java, so it’s making it grow up a bit more in the infrastructure it needs to remain a leader in enterprise programming solutions.
Q: So what about mobile? How do Spring and Roo fit in with the explosion of mobile applications that we’re seeing with people using apps on their phones and tablets versus in a desktop environment?
From the Spring infrastructure perspective, developers can serve up data back and forth to a phone in any number of formats, because it is a robust server-side infrastructure.
They have an API called Spring Android that provides access to security and data from native Android applications; they also have Spring Mobile, which provides device detection, and allows users to enable a mobile or normal web application experience, but they don’t yet have in my opinion, a strong orchestrated handset or tablet strategy. They come from more of a web and server-side infrastructure play, and so the thing I want to see at ETE this year is where they are going with their mobile strategy.
Q: Sounds like you do a lot of different types of development across all platforms. What do you like most? What gets you excited?
Ken: I used to like the back-end infrastructure stuff more – like getting databases connected and such – but I’m really starting to get interested in web and mobile, mostly because it’s a new challenge for me. I’ve never been the person to write a beautiful web application. I write it so it works well [and work with web designers]. But I do think from a mobile perspective, there are a lot of toolkits you can use to put together nice, sophisticated applications and it’s more immediate.
So where do I see my focus in the next 6 months to a year? Well, I really want to spend more time on the web, web-mobile tier and even the native mobile tier with iOS and Android. That really interests me.
Q: Any advice that you’d give to people who are maybe just starting out programming in Java and who don’t know much about Spring and Roo? What would you tell someone who just wants to “jump in” and get going on the platform?
Ken: I think the best thing to do with Java [or really any] applications is to try to find sample applications that already work and plow through them. I know that it doesn’t sound exciting, but trying things more than anything else helps you learn. I think that tools like Roo can help you get started quickly. You can tell Roo to “go build me an application” and then tinker with it.
What are you going to do, burn the house down? You’re not going to break anything. I’m a firm believer in writing a lot of “throwaway” code. Get something out there, play with it, tweak a little bit of it. Try things in isolation. I think that experimentation and play is key for a developer, and if you don’t have that interest, you’re going to struggle. You really have to put the screwdriver in the light socket and see what happens.
Ken Rimple is the Director of Education Services for Chariot Solutions. He writes about Roo and other technologies for Chariot, and also blogs about technology, photography, and music on his blog, rimple.com.
Have a question for Ken that we didn’t cover? Get in touch with us and we’ll post our answers to your questions in a follow up interview as we get closer to ETE 2012! email@example.com
Sign up for Philadelphia Emerging Technologies for the Enterprise by February 15 and get a special early bird rate – don’t miss out on the chance to be a part of the biggest emerging technology event on the East Coast this year.