First tests with Spring Roo to create #SAPNWCloud apps
SAP Research just released a new Spring Roo add-on to create SAP NetWeaver Cloud applications. This add-on allows developers to very rapidly create Java applications and deploy them on the NetWeaver Cloud. I blogged about SAP Research’s work earlier but the code was only released yesterday on github and I immediately wanted to try it out. This add-on is the first contribution of SAP NetWeaver Cloud Labs [which looks to be very promising and will provide developers with some extremely helpful tools].
What does the new Spring Roo provide developers?
“Spring Roo is a Rapid Application Development (RAD) framework maintained by SpringSource. We have created add-ons for Roo to make it easy and comfortable to use Roo with the SAP NetWeaver Cloud platform. Use Roo to create a basic web application and deploy it to the SAP NetWeaver Cloud in minutes. Roo generates 100% pure Java code, packaged as a standard Maven project, so it is easy to handle and extend. Import it in your favorite IDE like Eclipse and start extending it, or write a mobile app connecting to the REST interfaces to your data, that Roo can automatically create for you. Try it out, and learn how Roo can help you kick starting your ideas.” [SOURCE]
Using the Spring Roo add-on for SAP NetWeaver Cloud
I downloaded Spring Roo and installed it using the Spring Roo installation guide. I didn’t need to install maven since I already had it.
I then tried the simple application that is described in the Roo “Getting Started” guide.
I had to some maven hacking to deal with missing / unavailable pom files.
Note: Be prepared to wait a while maven downloads the necessary jar files – there are a lot.
I ended up having a difficult time getting this application running. GWT never worked and I was getting frustrated. I decided to try the application described in the NW Cloud Roo Add-on page. This tutorial worked better and I got my app up and running in Tomcat without any problem. I called the two Roo commands to deal with NWCloud JPA and deployment, filled out my nwcloud.properties file as described, and then tried to deploy my war file to the cloud. I kept on getting network errors. I set my proxy in my maven settings.xml file but it wasn’t enough. It was only when I set the sdk.proxy property in the nwcloud.properties file that I could successfully deploy my app.
The app is running in the NetWeaver cloud – without starting any IDE or coding a single line of code. All that in less then 15 lines of Roo code and 4 maven commands
Why is this important?
Spring Roo allows you very rapidly create a skeleton application that you can change in your favorite IDE. The cool thing is the amazing speed that you can create such apps – within a matter of minutes you can have a functioning application. This is what Björn Goerke was taking about in last night’s keynote. This means that developers can concentrate on the business logic rather than doing rudimentary coding.
Some readers might be thinking – “So what. There are tons of code generators out there.” Spring Roo is different, because of its association with Spring Source and the amazing number of add-ons available.
What Spring Roo already provides
With Roo, you can add jms, logging or email functionality / configuration via the command line. You can create complex data objects and their relations. With the add-on feature, it is possible that the community provides additional functionality. For example, there are add-ons for jQuery, Spock or Vaadin. You can also add REST/ JSON interfaces via add-on. One of my next steps is going to be to test which of these Roo add-ons work on the NetWeaver Cloud platform.
What sort of Roo-related functionality I’d like to see
Here are some ideas:
- SAPUI5 support: With one command, the UI5 style could be added to an application.
- Business object support: If you are creating a UI wouldn’t be great to just add the business object “customer” to your application. The UI is created using a standard UI with the necessary connections. You could then configure whether this is associated with an OnPremise system or an OnDemand environment.
- Analytics: Use the same logic to create analytics – diagram type, values, etc. Maybe even select the KPI which should be used.
- HANA support: Use HANA as the JPA target
- Integration: Connect to external systems (for example Financials OnDemand)
- Monitoring / performance measures: The Lab page also describes an Operations Cockpit to monitor apps – this functionality could also be added via Roo
- Services: The service concept is central to the idea of SAP NetWeaver Cloud. Roo could add the plumbing to use special services.
- SAP partners could also provide additional functionality for their own applications.
- Since Roo is a command line tool, business users could create prototypes without the need for developers to code anything.
I don’t expect Roo to be able to meet the requirements for every application that is planned for SAP NetWeaver Cloud. However, it has the potential to make the lives of developers much easier. For developers interested in the platform, any assistance to make the transition is useful. Furthermore, Spring Roo is widely used in the SpringSource developer community which also makes NetWeaver Cloud more attractive for those developers as well. If SAP can add more business-related content (“add business partner”, “connect business partner to contract”, etc), then Roo could be critical in the success of the platform.
Thanks for sharing this Dick. You amaze me every time, with your speed of blogging.
Spring Roo is something i wanna try out ever since i saw the SAP guys do their magic at sitNL last year. Yet another item on my to-do list 😉
I know - I wanted to test it as well.
Once I started snooping around, I was pleasantly amazed at what Roo can do. I'm curious to see what SAP Research does with the functionality.
Why don't you take Roo for a test drive? It is actually pretty easy.
I'm with Leo on this one 🙂 I will definately try out Spring Roo in the very near future!
And appreciate that you mentioned checking the sdk.proxy property in nwcloud.properties, that might save me an hour of utter frustration 😉
The sdk.proxy property isn't mentioned anywhere - I just got lucky I guess.
If you have problems with the Roo integration, I suggest posting to the Cloud Developer Center discussion forum that is probably better than posting somewhere else
The proxy setting is explained in its according comments in "nwcloud.properties". But I agree it could be mentioned more prominently in the tutorial.
So I updated the tutorial now to include a hint on the proxy setting, right after the instructions to set Neo SDK installation directory.
Should be helpful for all suffering from being behind a proxy. 🙂
Happy to see you spreading the word already - yes, it's exiting times! I mean you've been among the early adopters so you know about most of the stuff that has been cooking for a while. Now that we are GA we are finally rolling out all the good stuff.
There's plenty to come as part of this year's TechEd world tour - stay tuned! 😉
I'm especially interested in the Operations Cockpit.
I'd also like to see a cool CI (jenkins, use of github, etc) integrated into the platform. 😉
Nice Blog.. can you please add up a little on this:
" I had to some maven hacking to deal with missing / unavailable pom files. "
I was getting a server error for when downloading a specific pom so I looked for a different repository where the pom was also located.
I added this new repository (see below) to my pom.xml and everything worked
Just the other day we (Lars Karg and me) have been talking about pushing the usage of the Spring Roo Add-On for InnoJam. Seems like a perfect fit, what do you think?
I agree completely.
If you further add SAPUI5 UI support to Roo, you will be providing interested people with a real good starting point to learn the platform.