Our company develops Notes applications for years and it is still our main source of income, but several years ago we’ve started to see a gradual decline in the demand of applications based on Notes. And looking around, this seems to be a problem not only in the Czech Republic, where we are based, but also in other parts of the world. The reason is obvious, it started with pure IBM marketing followed by insufficient technical improvements of the product and IBM’s move into different areas like social software.
All of this forced us to rethink our future development some two years ago. We’ve started with seeking the data storage, similar to Notes database. After lot of testing we chosen MongoDB as main data store and Elastic for searching. MongoDB can store various data, together with attachments, there is no real limitation in size and number of data and also here you can achieve access control to each document, but in that case you have to program it. There is no real Notes replication from client to the server also but nowadays web applications are not based on that in most of the cases.
To make Notes data transformation even easier, we’ve developed a tool for data export from Notes to MongoDB in shape of Notes application. Here are more details about it.
Application platform was the second choice. We started with Symfony PHP framework. It is very good framework which allows us to build very powerful web applications and we are able to do the same thing as in Notes application, including export do Word, Excel, PDF, send emails, set up access rights to the document and much more. Here is more info about it. The problem is quite steep learning curve, because PHP was entirely new system to us and it takes a time to learn it properly.
In the meantime we’ve began looking for some Java based platform, because Java is the main language for Xpages application and Xpages are still half of our Notes development program nowadays and therefore our developers are more familiar with Java. That is why we’ve started with Vaadin, which has many advantages. Also blog posts from Rene Winkelmeyer, Sven Hasselbach, Paul Withers and others, whose connected Vaadin with Notes, were encouraging.
So in this and following blog posts, I would like to show you Vaadin platform and our way of implementation of various features, which are quite familiar from Notes also.
The reasons why we chose Vaadin as a main development platform for the future were this:
- Vaadin is Java based so if you are doing Xpages development, the language is the same. You can still develop Vaadin application and then easily switch to Xpages development. It was not so with PHP.
- Vaadin can work with Notes data directly so you can use it instead Xpages. Although our primary datastore is MongoDB, because if we want to offer our application to new client, there is no fee for Notes user licences and that makes the application significantly cheaper.
- Entire application in Vaadin can be written only in Java! There is no HTML coding, there is no JavaScript and that makes the development more straightforward and cleaner. When you develop in Xpages, you sometime don’t know, if that element is getting here from JavaScript or is it from @formula or from SSJS. In Vaadin everything is in one source code, in Java classes.
- Vaadin makes application more “business like”. In standard web application it is not obvious to scroll down in view using arrows, to open document by Ctrl+E, to save document using Ctrl+ S etc. but in Vaadin you can do this easily and that is very similar to Notes client behaviour.
- Vaadin applications are fast! Not only because it uses MongoDB behind but also the load of elements like forms or views are very fast and this is the first user feeling when switched from similar Notes application.
In the next blog post we want to focus on how specific elements, like views, picklists, dialogboxes, familiar from Notes client, can be built in Vaadin.