Software development has been evolving since the invention of the first computer programming language.

At the very beginning, computer programmers entered the code as machine instructions in binary. Later, having programming languages like FORTRAN, they just needed to write the programs as text. After several improvements in languages and technologies, programmers started using Integrated Development Environments (IDE), and that eventually created the first RAD IDE (Rapid Application Development).

Borland Delphi (RAD Studio) evolved from the Turbo Pascal IDE and became one of the most successful development environment of the 1990s. The logic of the program was still text, but the user interface had a visual designer, and non-visual components encapsulated database access and many other useful objects. RAD Studio keeps its "rapid" attribute until now.

The success of RAD Studio was the result of a long evolution creating applications for the Windows desktop.

On the other hand, the original language of the Web, HTML, started its journey in 1990 as a static hypertext language. Even after almost 30 years, there is nothing equivalent to the simplicity and elegance of RAD Studio for creating Web applications. Of course, that is a matter of opinion, but when a Web developer tries to port the functionality of a desktop application to the Web, he needs to learn several programming languages and tools for tying everything together; many of these projects fail catastrophically.

The latest versions of RAD Studio allow creating multi-platform applications, always taking advantage of the RAD concept. However, the underlying framework supporting that ability was always targeting a local device (PC, tablet, smartphone), not the Web.

It is worth mentioning that Web applications and desktop-like experiences like Single Page Applications are now the focus of the IT industry. The Web UI is improving every day, but it still lacks the simplicity of the desktop development.

A modern Web application is different from a local application. The biggest difference is that it must serve multiple remote users. However, what poses significant difficulties is that the user interacts with the application using a browser which executes JavaScript code (following the HTML5 standard).

Developers love programming, and some development environments encourage this kind of behavior. For example, Visual Studio comes with several visual designers, but many developers become polyglots.

As good as it is to enjoy your work, a Software Engineer or developer has a primary goal: to deliver the requested solution or application. If there is a shortest path for achieving this aim, it will be best to use it. Is it possible to have a RAD environment for creating Web applications? Yes, it is already here.

RAD Studio + Sencha Ext JS + uniGUI

This solution needs to integrate several pieces:

RAD Studio provides a RAD environment with components supporting several target platforms.

The user interface, accessible with a web browser, must be as rich as current desktop applications. Sencha Ext JS includes more than 115 components; some of them are equivalent to those used on the desktop, others are just for the Web platform, but many of them are more powerful than the original Delphi components.

Another tool must be the glue between RAD Studio and Sencha Ext JS.

How to join RAD Studio and Sencha Ext JS to be able to create and deploy Web applications?

This new tool will introduce several functionalities:

A new kind of project for Web applications. A new form designer and wizards for creating the user interface. A full set of Web components available as Delphi components in the usual palettes which, at run-time, will dynamically generate the JavaScript code and Ext JS components. A run-time framework which will allow the application to run as a Web server and resolve remote client requests by returning HTML5 pages with the corresponding JavaScript code.

In short, this tool must provide a mapping between Sencha and Delphi components, and a framework for deploying and running the application on the Web.

This last piece is uniGUI. It is the result of more than seven years of development, with a community which used it in real applications and provided feedback, helping shape the final product.

uniGUI main features

As a typical desktop application is single-user, while web applications are multi-user, uniGUI provides a framework which manages multiple sessions and the most significant resources. These changes are natural to a Delphi developer, and they help during the process of porting or creating a new application.

uniGUI Wizards provide the means to create forms and data modules. As a result, the framework manages them at run-time.

Neither forms nor data modules use global variables (allowing multi-user access to these resources).

Next releases of uniGUI will add more features related to automatic resource management.

In addition to the framework supporting the web application at run-time, uniGUI exposes the Sencha Ext JS components as native Delphi components in several control palettes.

There is no need to know JavaScript, Ext JS, or details about how to use Sencha components.

Power users can still use JavaScript code for accessing Sencha components at run-time, and for executing Ajax calls back to the server.

It is possible to create new components by inheriting from existing components or converting frames.

It is also possible to create new components based on 3rd-party Ext JS vendors (like Bryntum).

The ability to deploy the web application in several ways facilitate development and simplify its use in production environments:

The Standalone deployment allows easier debugging by running the application locally.

deployment allows easier debugging by running the application locally. The Windows Service option could be useful for small and medium applications.

option could be useful for small and medium applications. Deploying the application as an ISAPI module allows the customer to use any compatible server host (like Internet Information Server).

allows the customer to use any compatible server host (like Internet Information Server). The oncoming HyperServer can limit the number of sessions per process. If the Delphi application has issues with concurrency, each session could run alone in a process.

As uniGUI maps Sencha components as Delphi controls and provides a framework for supporting the application at run-time, it also leaves plenty of space for expansion on top of it.

It is a marketplace for uniGUI-compatible controls. Even existing Ext JS controls can be customized using the Web canvas with HTML/CSS/JS.

for uniGUI-compatible controls. Even existing Ext JS controls can be customized using the Web canvas with HTML/CSS/JS. It could be possible to model web applications using custom editors or RAD Studio Architect modeling support to focus the framework on database-centric applications with robust and widely used high-end controls.

with robust and widely used high-end controls. Creating big web applications like those in the Healthcare or ERP industries require an additional layer on top of uniGUI (to be provided by the customers, consulting companies, tool vendors, or Embarcadero itself).

Conclusion

One important uniGUI feature is its ability to create a layer on top of the web technologies, hiding those details from developers. This will highly reduce the need for repetitive tasks such as generating code for JS, CSS and various other details. In this sense, it can be said that uniGUI is to Web technologies what VCL & Delphi is to Windows API. This will help developers to keep their focus on developing business logic rather than working on details about web technologies.

In today's IT world, web technologies are evolving faster than anything in the past. Each month we hear about a new JS framework or some other cool new technology. It is expected, as web application development is still far from perfect. There are still unnecessary levels of complexity and too many repetitive tasks for each new project. We need a tool which can reduce this complexity and take care of those repetitive tasks. Isn't it the main reason that we need computers in the first place? Delphi did it for the Windows desktop back in the mid-90s. It would be totally unreasonable to think that we cannot do the same for the web!

uniGUI bridges the huge gap between desktop and web applications. It gives Delphi developers, the long-desired ability to continue using the same RAD environment for Web Development.

It currently works in the familiar VCL designer, even though it could be possible to use a different designer, capable of rendering all Sencha components correctly (like FieldSets).

It allows existing Delphi based desktop applications to be converted in place, so they can run on the Web. A feat no one else has accomplished so cleanly anywhere in the software industry.

Adding uniGUI to Delphi makes it the fastest path to the Web