Platform comparison

Development speed
Name
ERP
RDBMS + UI
ORM + UI
RAD
Electronic tables
lsFusion
Subtype
SQL-style
ORM-style
Doc-style
Commercial
Free
Examples
SAP

SAP supports both development styles: SQL by default and ORM for specific tasks (since it's less convenient in most cases).

info
Axapta, SAP

SAP supports both development styles: SQL by default and ORM for specific tasks (since it's less convenient in most cases).

info
1C 8.2 or later
Oracle + (Oracle Forms / ADF), MS SQL + (Wrms)
Postgres, MySQL, Firebird
Java Spring, J2EE, .NET
MS Access, Foxpro, Delphi, 1C 8.1 or earlier
Excel, 
Google Docs
lsFusion
Single language for data

The platform is free from the object-relational semantic gap, so developers don't need to constantly choose between "rapid" SQL queries and a "convenient" imperative language. Both of these approaches are almost fully abstracted and united. Each developer always works with data using a single paradigm, while the platform takes care of how and where to do all the remaining work.

info

Although 4GL languages (ABAP, C #, Foxpro, etc.) provide native support for SQL, they still operate with concepts from relational algebra such as tables, groups, joins, etc.

info

Although 4GL languages (ABAP, C #, Foxpro, etc.) provide native support for SQL, they still operate with concepts from relational algebra such as tables, groups, joins, etc.

info

Although 4GL languages (ABAP, C #, Foxpro, etc.) provide native support for SQL, they still operate with concepts from relational algebra such as tables, groups, joins, etc.

info

Although 4GL languages (ABAP, C #, Foxpro, etc.) provide native support for SQL, they still operate with concepts from relational algebra such as tables, groups, joins, etc.

info

Although 4GL languages (ABAP, C #, Foxpro, etc.) provide native support for SQL, they still operate with concepts from relational algebra such as tables, groups, joins, etc.

info

Although 4GL languages (ABAP, C #, Foxpro, etc.) provide native support for SQL, they still operate with concepts from relational algebra such as tables, groups, joins, etc.

info

Although 4GL languages (ABAP, C #, Foxpro, etc.) provide native support for SQL, they still operate with concepts from relational algebra such as tables, groups, joins, etc.

info
Single paradigm for UI

The platform doesn't split the user interface into interactive forms and reports. Any form can contain both primary and calculated data and can be displayed in a print (like a classic report) or interactive (editable) view. Accordingly, users can not only see the data they need to make a decision, but also immediately enter the decision they've made through the same UI.

info
Server-to-client access

The platform doesn't split business logic into server and client sides, which allows developers to request modal interaction with the user at any time. When this happens, the platform automatically pauses the current action, sends a request to the user, and resumes the action as soon as a response is received.

info
No ORM, Yes SQL

When a certain action requires data processing for many objects at once, the platform tries, whenever possible, to perform this processing on the database server through a single request (i.e. for all objects at once). In this case, all of the queries generated are optimized as much as possible depending on the features of the database server.

info
Data change events

The platform allows you to create event handlers for any changes in any data (even computed data). This mechanism can significantly increase the modularity of the solutions created.

info

Triggers (events) only for data materialized in a single table (class).

info

Triggers (events) only for data materialized in a single table (class).

info

Triggers (events) only for data materialized in a single table (class).

info

Triggers (events) only for data materialized in a single table (class).

info

Triggers (events) only for data materialized in a single table (class).

info

Triggers (events) only for data materialized in a single table (class).

info
Dynamic physical model

The platform allows you to materialize any existing indicators in the system at any time, add new tables or delete existing ones, or change the location of materialized indicators in these tables.

info

There is no transparent data materialization - only objects and their fields can be mapped to tables with a single key (i.e. you can only handle tables with two or more keys directly through SQL).

info

There is no transparent data materialization - only objects and their fields can be mapped to tables with a single key (i.e. you can only handle tables with two or more keys directly through SQL).

info

There is no transparent data materialization - only objects and their fields can be mapped to tables with one or two keys (i.e. you can only handle tables with three or more keys directly through SQL)

info
Constraints on any data

The platform allows you to create constraints for the values of any data (even computed data), and all such constraints (as with events) are global, so inexperienced users or developers cannot bypass them with an invalid transaction.

info

Constraints only for formulas involving data materialized in a single table

info

Constraints only for formulas involving data materialized in a single table

info
Absolute reactivity

All computed data is automatically updated once the data it uses is changed. This rule applies always and everywhere, whether you're displaying interactive forms or simply accessing data inside the action being executed.

info

In the UI for special cases involving input data.

info

In the UI for special cases involving input data.

info

In the UI for special cases involving input data.

info

There are some reactive elements in the materialized (indexed) view mechanism.

info

There are some reactive elements in the materialized (indexed) view mechanism.

info

In the UI for special cases involving input data.

info

In the UI for special cases involving input data.

info
Cross-platform server

Supports any OS for which JVM is implemented, as well as the most popular relational databases.

info

No optimizers for adapting queries to the features of specific databases (e.g. lack of certain optimizations in free databases such as predicate push-down, various handlings for custom aggregate functions and recursions, etc.). In fact, all of these platforms are simply translators into the corresponding syntax.

info

No optimizers for adapting queries to the features of specific databases (e.g. lack of certain optimizations in free databases such as predicate push-down, various handlings for custom aggregate functions and recursions, etc.). In fact, all of these platforms are simply translators into the corresponding syntax.

info

No optimizers for adapting queries to the features of specific databases (e.g. lack of certain optimizations in free databases such as predicate push-down, various handlings for custom aggregate functions and recursions, etc.). In fact, all of these platforms are simply translators into the corresponding syntax.

info

No optimizers for adapting queries to the features of specific databases (e.g. lack of certain optimizations in free databases such as predicate push-down, various handlings for custom aggregate functions and recursions, etc.). In fact, all of these platforms are simply translators into the corresponding syntax.

info
Open database structure

The mapping of logic to the database is absolutely transparent, and developers can manage this process on their own. Forget about auto generated names and surrogate tables.

info
Cross-platform client

The platform supports both desktop and Web clients with any OS for which JVM implementations are available. And since relative (rather than absolute) positioning is used for the components, they are rendered in the Web client natively using CSS (without JavaScript), which significantly increases UI responsiveness in the Web client. In addition, neither the desktop nor the Web client contain any application logic, which greatly simplifies their deployment (i.e. you can use the same client for any logic).

info

It depends on the specific UI. However, using the desktop and Web versions simultaneously is not supported.

info

It depends on the specific UI. However, using the desktop and Web versions simultaneously is not supported.

info

It depends on the specific UI. However, using the desktop and Web versions simultaneously is not supported.

info
Declarative handling of external formats

Any form can be shown to the user interactively or printed out or exported in most popular data formats (JSON, XML, CSV, XLS, DBF, etc.). This operation is symmetrical - you can also import data from a file to a form in any of these formats. Both processes are absolutely declarative and use the same concepts as the UI, which greatly simplifies interaction with external systems.

info

Handling of external formats is strictly imperative (with small signs of declarativeness in certain mechanisms such as those for handling XML for remote calls in Web services using WSDL) and is performed in a separate paradigm (unrelated to the UI).

info

Handling of external formats is strictly imperative (with small signs of declarativeness in certain mechanisms such as those for handling XML for remote calls in Web services using WSDL) and is performed in a separate paradigm (unrelated to the UI).

info

Handling of external formats is strictly imperative (with small signs of declarativeness in certain mechanisms such as those for handling XML for remote calls in Web services using WSDL) and is performed in a separate paradigm (unrelated to the UI).

info

Handling of external formats is strictly imperative (with small signs of declarativeness in certain mechanisms such as those for handling XML for remote calls in Web services using WSDL) and is performed in a separate paradigm (unrelated to the UI).

info

Handling of external formats is strictly imperative (with small signs of declarativeness in certain mechanisms such as those for handling XML for remote calls in Web services using WSDL) and is performed in a separate paradigm (unrelated to the UI).

info

Handling of hierarchical formats (JSON and XML) is usually declarative, but is performed in a separate paradigm (unrelated to the UI).

info

Handling of external formats is strictly imperative (with small signs of declarativeness in certain mechanisms such as those for handling XML for remote calls in Web services using WSDL) and is performed in a separate paradigm (unrelated to the UI).

info

Handling of external formats is strictly imperative (with small signs of declarativeness in certain mechanisms such as those for handling XML for remote calls in Web services using WSDL) and is performed in a separate paradigm (unrelated to the UI).

info
Efficient client-server communication

Client-server communication at the physical level minimizes synchronous round-trip calls (i.e. each user action leads to a single - usually asynchronous - request/response pair). The desktop client also archives and encrypts all transferred data (when necessary). During client-server communication (via TCP/IP for the desktop client or HTTP for the Web client), the platform provides guarantee of delivery - it resends any lost requests and ensures that they are processed in the correct order. All these features help the platform run efficiently even on low-bandwidth, unstable, or high-latency communication channels.

info
Transparent integration

The platform supports access to the system through the most common general-purpose application protocol (HTTP), while the access interface can execute not only certain actions (with automatic parsing of arguments), but also lsFusion code (as when accessing SQL servers). In addition, the platform supports access to any external systems at the language level via HTTP, as well as SQL servers, other lsFusion systems, etc. And, since the server itself is implemented as a Spring bean, you can manage its life cycle using a standard Spring IoC container. All these features allow you to use lsFusion not only as a full-fledged development platform, but also as a database or even a Java library.

info

No code execution (as in SQL servers). All communications are performed either through HTTP without parsing any arguments or through WSDL (XML) with parsing arguments. Cannot be loaded as a library.

info

No code execution (as in SQL servers). All communications are performed either through HTTP without parsing any arguments or through WSDL (XML) with parsing arguments. Cannot be loaded as a library.

info

No code execution (as in SQL servers). All communications are performed either through HTTP without parsing any arguments or through WSDL (XML) with parsing arguments. Cannot be loaded as a library.

info

Cannot be loaded as a library.

info

Cannot be loaded as a library.

info

Code execution (as in SQL servers) is not supported.

info
CI in ACID right out of the box

The platform can properly roll back the application server to the state it was in before any data transaction had begun. This allows you to use the native integrity tools of modern SQL servers, which not only significantly reduces labor costs and human error when developing a system for a highly concurrent environment, but also makes such a system much more scalable (provided that versioning databases are used).

info
Seamless linking of Java libraries/SQL functions

The application server runs on a Java virtual machine (JVM) and can thus be integrated with countless Java libraries. To do this, just create your own action in Java, register it in the platform, and then use it just like any action built into the platform or written on the platform's built-in language. Accordingly, you can seamlessly connect custom SQL functions of the database server you're using.

info
Everything as code

All elements of the system, from events to form design, are written in the lsFusion language and stored in ordinary text files (without any shared repositories with an unknown structure). This allows you to use popular version control systems (Git, Subversion) and project-building tools (Maven in IDEs) when working with projects. In addition, this approach simplifies the support and deployment of the system you develop - you can use an ordinary text editor to view and quickly modify the logic when necessary and also easily identify any element in the system by file name and line number in this file.

info

Forms and other metadata (tables, ledgers, etc.) are usually created interactively and stored in binary form in a shared repository or file (data export is possible, but not in formats that allow convenient editing/viewing such as XML).

info

Forms and other metadata (tables, ledgers, etc.) are usually created interactively and stored in binary form in a shared repository or file (data export is possible, but not in formats that allow convenient editing/viewing such as XML).

info

Forms and other metadata (tables, ledgers, etc.) are usually created interactively and stored in binary form in a shared repository or file (data export is possible, but not in formats that allow convenient editing/viewing such as XML).

info

Basically, the database theoretically allows you to work with the database's structure as with code - you can create scripts marked "CREATE OR REPLACE" and/or with versions and ADD/DELETE commands, then remember the previous version of the database to deploy or roll back changes between these versions, but by default this is not part of the database itself and should be organized directly by developers.

info

Basically, the database theoretically allows you to work with the database's structure as with code - you can create scripts marked "CREATE OR REPLACE" and/or with versions and ADD/DELETE commands, then remember the previous version of the database to deploy or roll back changes between these versions, but by default this is not part of the database itself and should be organized directly by developers.

info
Easy-to-use language

The platform allows you to group element names into namespaces and consider names in the same namespace as having higher priority when searching for elements. In most cases, you only need to enter the "short" name of the element you're searching for and eventually write more concise and readable code. In addition, you can specify a class for each parameter in the code, and this class will also be taken into account during a search (i.e. explicit types are supported). This also makes your code shorter and simpler and ensures early error detection, smart auto-completion, and lots of other useful features.

info

The databases support namespaces, but do not support explicit typing (because they work with tables rather than functions, i.e. they do not support any parameters at all).

info

The databases support namespaces, but do not support explicit typing (because they work with tables rather than functions, i.e. they do not support any parameters at all).

info
Easy-to-use IDE

Intellij IDEA-based IDE with everything developers could ever need: search for uses, code/error highlighting, smart auto-completion, go to declarations, class structure, renaming of elements, usage tree, data change breakpoints, debuggers, and more.

info

In general, two different specialized IDEs are used (one for the client and one for the database server), so no calls between the server and client are supported at all (i.e. they are not visible in uses, renaming, etc.).

info

In general, two different specialized IDEs are used (one for the client and one for the database server), so no calls between the server and client are supported at all (i.e. they are not visible in uses, renaming, etc.).

info
Metaprogramming

Do you want to create your own high-level operator, or maybe you just don't know how to generalize the logic, but want to reuse it? The platform provides full support for automatic code generation, from both the server side and IDE.

info
Three-tier architecture

The platform executes the imperative part of the system logic (i.e. everything related to data changes) on application servers and the declarative part (i.e. everything related to data calculations) on database servers. This separation simplifies the scaling of the system you develop and strengthens its fault tolerance due to the different nature of workload on these servers (e.g. using swap on an application server is much more dangerous than on a database server).

info

Technically, the third tier (application server) is implemented by either the Web client or the database server.

info

Technically, the third tier (application server) is implemented by either the Web client or the database server.

info
Clustering

Since the application servers don't have any shared data, you can easily add as many of them as you need. In addition, the platform can transfer user data between database servers asynchronously, which, in turn, allows you to dynamically distribute the workload among them (e.g. when you add data to the database and need to use ACID, you can switch this processing to the master server or [in other cases] to the least busy slave servers).

info

In addition to the database, yet another bottleneck and a potential point of failure is the lock manager, which also makes clustering harder.

info

In addition to the database, yet another bottleneck and a potential point of failure is the lock manager, which also makes clustering harder.

info

In addition to the database, yet another bottleneck and a potential point of failure is the lock manager, which also makes clustering harder.

info
Extensions

The extension technique allows developers to extend the functionality of one module in another (e.g. they can modify forms or classes created in another module). This mechanism makes the solutions you create much more modular.

info

Only procedures and forms are expandable. The mechanism itself is all about customization rather than modularity (i.e. the mechanism is based on a solution and one of its extensions, but not on the graph of modules).

info
Asynchrony

The platform tries, whenever possible, to perform all operations asynchronously (i.e. return control to the user before the operation completes), including most input operations and handling of local events.

info
Polymorphism and aggregations

The platform supports inheritance (including multiple inheritance) and polymorphism (including multiple polymorphism). And, if inheritance isn't enough for you for whatever reason, the platform also provides an aggregation mechanism that, together with inheritance, allows you to implement almost any polymorphic logic.

info

Only single inheritance of tables (object classes) and single polymorphism are supported.

info

Only single inheritance of tables (object classes) and single polymorphism are supported.

info

Only single inheritance of tables (object classes) and single polymorphism are supported.

info

Only single inheritance of tables (object classes) and single polymorphism are supported.

info

Only single inheritance of tables (object classes) and single polymorphism are supported.

info
WYSIWYG

In almost all cases, the user gets lots of features right out of the box, including quick editing of any visible data and any visible objects (bulk editing), copy and paste (e.g. to/from Excel), merging/canceling/saving changes, and other WYSIWYG features.

info
Internationalization

Within any string literal (e.g. an element title or string constant) the platform allows the use of IDs (in brackets) to which you can then assign different texts for different languages. Accordingly, when accessing this literal, the platform automatically localizes it depending on the language settings of the target user.

info
Retroactive changes

The platform allows users to change any previously-entered data (e.g. to fix input errors) and only updates the data that is actually needed without thousands of related reversal operations, long reposting, or global database locks. In addition, the platform allows the simultaneous editing of the same data (e.g. the same document), which is useful for teamwork and rapidly inputting large amounts of data.

info

You have to re-post the whole document, which is inefficient and can violate multiple contracts/constraints. This approach is therefore not used in the latest solutions (it is implemented manually). For example, there is no simultaneous input of documents either.

info
Advanced tools for administrators

The platform provides a complete set of administration tools for systems that are already running: interpreter (executes lsFusion code), process monitor (receives detailed information about processes that are running, e.g. call start time, stack, user, etc.), scheduler (executes periodic or scheduled actions), profiler (measures the performance of all actions executed for all/given users, e.g. builds a graph of calls, sharing time between the application server and the database server, etc.), messenger (for internal notifications/communication with users in the system), and numerous logs (connections, errors, etc.).

info
Advanced interactive UIs

When interacting with a user, the platform can display any data not only as individual objects and lists, but also as trees, both flat ("nested") and recursive (e.g. classifiers). In addition, the platform allows you to group various form blocks into folders (tabs) for structuring large quantities of data. When the data is not visible to the user, it is not read/calculated (e.g. all lists are dynamic by default, i.e. only a limited number of objects are read initially, while the rest of them are read as the current object in the table is changed).

info

Trees are only recursive and only for explicit (not computed) hierarchies. Dynamic lists are implemented manually by writing special queries.

info

Trees are only recursive and only for explicit (not computed) hierarchies. Dynamic lists are implemented manually by writing special queries.

info

Trees are only recursive and only for explicit (not computed) hierarchies. Dynamic lists are implemented manually by writing special queries.

info

Trees are only recursive and only for explicit (not computed) hierarchies. Dynamic lists are implemented manually by writing special queries.

info
Security policy

A flexible security policy allows you to define data access restrictions for both individual forms and specific actions/indicators. Then users won't be able to see this data or even know that it exists.

info
Open source code

The open source code of the platform and IDE allows developers to study the internal mechanisms of the platform independently, create pull requests or custom builds, and license their own solutions for use in case of strict security requirements.

info
Deep user customization

Users can customize any form, e.g. add custom selections and sorting rules or add/remove/reorder columns, and also perform basic analysis such as grouping visible data or calculating sums/maximums and other aggregated indicators. In addition to the UI settings, users can also add logging, fill-in control, or notifications about any data changes (including calculated data).

info

Only basic UI settings (design, selections, ordering) are supported.

info

Only basic UI settings (design, selections, ordering) are supported.

info

Only basic UI settings (design, selections, ordering) are supported.

info

Only basic UI settings (design, selections, ordering) are supported.

info
Free license

The platform is licensed under LGPL v3, which allows you to freely use, distribute, and modify the platform as you wish.

info
For everyone
NFR
ERP
RDBMS + UI
ORM + UI
RAD
Electronic tables
lsFusion
Examples
SAP, Axapta, 1C 8.2 or later
Oracle, MS SQL, Postgres + UI (Java, .Net, Delphi)
Java Spring, .NET
MS Access, Foxpro, Delphi, 1C 8.1 or earlier
Excel, Google Docs
lsFusion
Common types of systems
Multi-functional low-load systems with structured data
Multi-functional high-load systems with structured data
Specialized ultra-high-load systems
Specialized low-load systems with structured data
Specialized low-load systems with unstructured data
Any system with structured data (except ultra-high-load systems)
Common industries
Business applications (manufacturing, wholesale)
Business applications (banking, retail)
Web applications (websites, online services, portals)
Business applications
Any industry
Any industry
Development speed
4
3
2
4
3
10
Development simplicity
4
3
2
4
3
10
Modularity
3
3
5
3
1
10
Flexibility
4
7
10
5
3
7
Portability
4
3
9
3
3
10
Supportability
8
6
6
3
2
10
Openness
4
7
10
4
4
10
Usability
6
5
3
5
7
10
Performance
3
9
3
3
3
10
Integrity
4
7
4
4
2
10
Scalability
4
6
10
3
2
8
Security
8
8
6
3
2
10
Internationalization
10
6
10
4
4
10
Cost
4
6
10
8
8
10
NFR
ERP
RDBMS + UI
ORM + UI
RAD
Electronic tables
lsFusion
Examples
SAP, Axapta, 1C 8.2 or later
Oracle, MS SQL, Postgres + UI (Java, .Net, Delphi)
Java Spring, .NET
MS Access, Foxpro, Delphi, 1C 8.1 or earlier
Excel, Google docs
lsFusion
For developers
4
3
2
4
2
10
For administrators
5
4
4
4
2
10
For users
5
3
3
3
5
10
For businesses
4
3
5
4
5
10