Uniface is a 4GL programming language distributed and developed by Compuware.
With Uniface, one can develop applications with a SOA (Service Oriented Architecture (also known as 'Component Based Development')) in a MDA (Model Driven Architecture) way. Uniface has been around since the early 1990s.
It stores model information and code into a repository, with which one can create forms, reports, services, session services and entity services. Each component written derives its metadata from the repository (including keys, relations, table layout, field layout, etc.). By drawing entities within entities on a component, Uniface automatically takes care of foreign key transport and retrieval of 1 to many relations. This way, a so-called 'fast form' can be written in minutes.
Using templates for components and fields, one can write new programs rapidly by inheriting the code from the model and template. Changes in the model and on the templates are automatically transported to the components that use them.
The database abstraction layer in Uniface makes many different databases transparent to the developer. Field types in Uniface are automatically mapped to the right ones in the Database.
The represention layer is designed to be platform independent, which means that one can develop on a main platform and execute on many other platforms.
The Universal Request Broker of Uniface is capable of dealing with many current protocols, including CORBA, Tuxedo, and call-in and -out for many languages and protocols (ActiveX, .NET, C(++), Java, COBOL, RPG, etc.). Reuse of legacy code is one of the strong points of Uniface.
The URouter/UServer principal of Uniface makes it scalable, balanceable and gives one the ability to run processes asynchronically. UServer is a server with 3 modes:
Uniface is highly configurable and can seamlessly adapt to many platforms. Runtime versions are available for Windows, Unix, Linux, VMS, etc.