Good afternoon,
I am looking at the documentation and sample applications of CUBA platform and I am really very impressed about the functionalities provided by the platform.
I would like to share some considerations about CUBA platform and have some opinion from the community.
I work in a small software house company where we develop custom applications that are mainly database oriented. In the last years we developed an internal development frawework that we used and are currently using for many new projects. Our framework is mainly a glue that puts together GWT, Sencha GXT and Hibernate to help the developers to write their applications hiding most of the details about database interaction, binding lists to the grids, records to the forms, filling combo-boxes, giving some CRUD facilities and some application infrastructure.
Looking at CUBA, I could say it is a supercharged version of our framework.
At the moment we are facing the problem of maintaining the latest versions of the libraries, in particular GXT: we are stuck on version 2 because from version 2 to version 3 a big refactoring has been made and we did not upgrade and now with version 5 a new major refactoring is announced. For the development of mobile applications we used Java native or IONIC.
For this reason we are looking at some possible substitutions, something that can be used for Web applications targeted to desktop browsers and mobile browsers and possibly something that gives the possibility to package native Apps. Another requirement is the longevity of the platform and the possibility to upgrade all the preexisting applications with a minimum effort, i.e. to be able to continuously update the applications simply upgrading the version of the platform (or with small adjustments to upgrade).
CUBA seems to fit very well for all our needs.
What I like about CUBA is the fact that there is an abstraction between the application logic (I mean business logic but also view/controller logic) and the final implementation of the user interface, if I understand correctly the developer does not (normally) invoke directly Vaadin UI objects. This makes possible to switch in the future the UI framework without having a big impact on each application you developed during the years, the big impact should be relegated only internally in the platform. For example I see that there is just now the possibility to use also polymer to develop the UI and this is great because you can share part of the business logic and serve some functionalities also to mobile devices (perhaps you can also use cordova to pack everything as native App).
But this advantage can have as counterpart the fact that not every feature of the UI framework is visible through CUBA so it is not usable. The same problem arises when a new release of the UI framework is available. For example, I suppose there are some plans to migrate the platform to Vaadin 8.
Another problem could be the fact that there are many Vaadin developers that know how to develop directly in Vaadin but not how to develop in CUBA.
About the polymer interface, perhaps the GWT polymer elements could be a good option to be able to develop everything in Java and not also in Javascript / Typescript.
Thanks in advance for the comments,
Marco.