Technology agnostic solution
The first and most important benefit of Codeless Platform is that you don’t have to rewrite the application when technology changes.
All the code you write in Codeless Platform is UI agnostic code that does not access directly any concrete UI library. It means that when the UI library changes, the application code stays the same. The current UI used is Vaadin Framework and will be upgraded to the latest LTS version of Vaadin Flow.
Not only the UI application code is technology agnostic, everything else is: Form definitions, view layouts, field properties, backend services access, model data definitions, database access, data exports and imports etc.
On average with Codeless Platform you write 10% of the UI code you would write compared to the traditional approach. Theoretically speaking as everything is described with metadata, it would be possible to write a new Codeless Platform that is unrelated to Java technology, that would interpret the same metadata.
For example “unrelated technologies” today could mean Angular, React and Vue that are using TypeScript or Flutter that is using Dart language.
Transition effort to completely unrelated technology that exists today or will appear in the future would mean 10% rewrite of application code. This would not be possible without using metadata, you would have to write your application from scratch.
Note that if you don’t use Codeless Platform and develop your application in Vaadin Framework directly and later you decide to upgrade to the latest Vaadin Flow, you would also need to rewrite all of your UI code.
UI technology independence allows you to make this transition as easy as possible and we believe that this is very important especially for large and complex business applications like ERP where you have thousands of forms. Rewriting this kind of system from scratch means a couple of years of development with dedicated teams of developers. After a few years of development, even before you finish everything you realize that technology changed again and you don't know if you should do it all over again or at least finish what you started. This is a real problem and the companies that are building large systems understand this as they are in a constant challenge every couple of years because of rapid technology changes.
Our advice to solve this problem is:
Use metadata and higher levels of abstraction, never stick to any particular UI library or framework.
To accomplish UI agnostic solution we have used well known Design patterns like Factory, Bridge, Model View Controller, Proxy etc.
One of the most important benefits of Codeless Platform is that there’s no need to know „other “ technologies.
- Jakarta EE API, Servlets and JAX-RS or the Spring framework
- A front-end framework like Angular, Vue.js or React.
The only technical knowledge you need to have in order to work with the Codeless platform is an average knowledge of Java without the need to be an expert in any particular field.
Whatever framework you decide to use, if you are planning to build large and complex business applications you know that you have to build your own framework on top of it to solve common challenges working with large numbers of forms, large amounts of data in the database and the number of concurrent users.
Current implementation with Vaadin Framework ensures your application will work as expected with thousands of concurrent users and thousands of forms. You can find scalability reports of Vaadin Framework and Vaadin Flow on their official site and other places. You can see from reports that you can achieve thousands of concurrent users even on a laptop and 10.000+ if you use a dedicated server or some cloud server (like AWS) for this purpose. If you want to know more about Vaadin scalability you can start reading here: https://vaadin.com/scalability
This will cover 99.99 % of all business applications.
In addition, Codeless Platform is using various optimizations to make sure that your application works as expected:
Codeless Platform instantiates child forms only the first time they become visible to the end-user.
As the form can potentially be very complex with multiple tab sheets or accordion panels containing different child forms, each form will be instantiated only when it becomes visible i.e. when the user selects the tab sheet or accordion panel on which child form resides.
This will make a huge performance gain in the case of complex forms.
Each child form is fetching the data independently. It means that the master form will not fetch child data (O2M relations) in the master select query. Instead, the child form will only fetch data when the master instance changes. As explained in Lazy instantiating, child form will not even be instantiated if it is not visible and when it becomes visible only then it will fetch it’s own data.
This will also make a huge performance gain in the case of complex forms.
Paging through a query result is the process of returning the results of a query in smaller subsets of data, or pages. This is a common practice for displaying results to a user in small, easy-to-manage chunks.
In Codeless Platform every form can be configured to have a paging feature.
Without this you can not build business applications, this is a must-have feature.
Fetching the data for forms is done automatically without the need to write the query manually.
You can add custom filters to the select query or if you are creating a special report, you can write the query yourself.
All M2O and O2O relations that need to be fetched i.e. that are visible on form as Lookup or Relation field are loaded with the single select statement with join operations. This is done automatically without the need to write it manually. The Platform will use INNER join whenever possible depending on attributes defined in relations (Is optional = false in Model administrator)
This is significantly faster than performing base queries and then executing additional queries per each relation.
A Select query is fetching only the properties that are bound to fields and relations that are needed.
The “needed” fields mean those fields that are visible on forms, grids, gallery views etc, that are part of the primary key, unique constraint definition or part of mappings used in html templates for renderers.
The “needed” relations means those relations that are represented as Lookup or Relation fields.
In the case of complex forms with many relations and entities with large numbers of fields this feature makes huge gains in performance.
You can try to solve this problem with database views (that are vendor dependent) and for each view you would need to create a separate JPA class like EmployeeView1, EmployeeView2 etc. In each view you can select only the fields you need and the resulting fields map to your new JPA class. This way you will have better performance but overall complexity will make you realize that it is not worth it.
With Codeless Platform you don’t need to do any of this, it will always fetch the minimum data you need, and if you want more data you can add it easily in Form Configuration options (Additional properties)
Codeless Platform can cache forms, translation strings, application menus, security roles and permissions.
On every change of cached item, a cache is updated accordingly. You can clear the cache any time you won't or disable the caching completely in System Parameters form.
Ehcache is used by default but you can also replace it with any other type of cache provider you prefer.
You can simply extend what has been cached and use the same caching technique for your own data.
The simplicity that Codeless Platform provides has an additional benefit that you do not have an integration phase between back-end and front-end development.
If one app’s architecture is separated into a front-end and a back-end, that communicate via a REST API, there are two strategies to organize one’s team.
The first strategy is to organize two teams. One that works on the back-end and one that works on the front-end. They work in parallel but the problem is in the fact that after the slowest of them finishes, then they integrate their respective work together.
The second strategy is based on „full-stack“ developers that have knowledge of all previously listed technologies. They can work on both front-end and back-end stacks. The problem with this strategy is that they are significantly more expensive than „normal“ developers and it’s not easy to find enough resources to form a team.
With Codeless Platforms your existing Java developers can work on both sides as they are using the same technology and they don’t need to be gurus as everything including API is simplified and requires only an average knowledge of Java. It also allows them to spend much more time on the business logic, and less time on the technical issues.
When there is a requirement for customization of application design, with the traditional approach, designers achieve that with HTML and CSS. They will design specific HTML templates and CSS classes. Then, developers will be asked to use them.
If requirements change mid-way, developers will need to stop their work to integrate the changes required by designers. There’s a high dependency between the workflow of developers and one of designers.
Codeless Platform is using the following abstractions that decouple the work of developers and designers:
- A Theme is a collection of CSS (applied to components) on which designers can work independently of developer's work.
- An HTML template is responsible for the layout. The developer’s work on the Java classes and the designer’s work on the templates that are completely isolated from each other, can be fully executed in parallel.
The last benefit is a result of all other benefits. Productivity is the feature that is the most important especially nowadays.
The speed and development simplicity of Codeless Platform enables companies of any size to maximize their existing resources and deliver the solutions their business requires to stay competitive.
Codeless Platform is not a no-code platform and it’s not a classic rapid application development tool either. Codeless Platform is the best of both worlds. It gives you the speed and agility of no-code and the power of traditional development. You can even decide if you want to do something without any coding or you would like to do the same thing in code.
For example you can add an event on some button in your form to open some other form in a window with a couple of clicks in Form Designer. You can do exactly the same with a couple of lines of code in your custom controller.
With Codeless Platform you don’t write any code for the majority of forms. Most of the forms with M2O/O2O relations and any number of nested children (O2M relations) do not require any coding. Most of the time you just need to specify a custom query or some custom filtering. To do this you do not need any coding you can configure this in Form Designer.
On average you write 10% of the code you would write compared to traditional coding. If the front-end and back-end are written in different technologies, this percentage is probably half of that.
It’s important to say that you don’t have any limitations as a consequence of simplicity and a low amount of code. Productivity does not sacrifice functionality or “good looking”. Even without any coding you get beautiful, responsive modern forms with a set of functionalities that overcomes traditionally created forms.