The Application Foundation Layers (AFL) are designed for developing multi-tier applications and is a key part of the NexJ CRM interface definition. It consists of multiple frameworks, toolkits and libraries organized into dynamically loaded reusable modules.
The AFL modules include the following subsystems:
-
A cross-platform UI framework using a semantic, mostly-declarative API, with client-side state management and a stateless server tier to support scalability.
-
A cross-platform UI toolkit providing common UI controls.
-
A DOM-based UI toolkit plug-in for browser rendering with theme support.
-
Android and iOS bridges for running ECMAScript in mobile devices, dynamic bidirectional communication with native code, and implementing native UI rendering without the need for proxies, stubs, or IDL.
-
A context bus plug-in for portal-driven communication between UI components.
-
The NexJ Portal API bridge.
-
An RPC framework with asynchronous batch request support for counteracting network latency.
-
UI plug-ins for accessing the NexJ SOA and Object models through RPC.
-
A business logic framework that provides a Service-Oriented Architecture for implementing server-side functionality.
-
A configurable component factory framework with dependency injection.
-
A dynamic module loader that implements a complete run-time application assembly to ensures only the required dependencies are retrieved.
-
Object-oriented and functional programming libraries, including mix-in support.
-
A date/time calculation API with complete time zone support and tools for automatic time zone database generation.
-
An internationalization (I18N) framework with configurable formatters and parsers for common data types, and support for custom data formatting and parsing of inflected languages and bidirectional fonts.
-
A framework for cross-platform unit testing, integration testing, and end-to-end testing. This includes UI testing through event simulation and visual verification.
-
A build framework allowing application code organization into multiple source code projects.
All of these subsystems are reusable, support concurrent programming, and (with the exception of platform-specific bridges and UI renderers) can run in a server.
AFL also has the following technical features:
-
It is implemented with ECMAScript 3, (JavaScript). This allows for portability. For example, AFL can run in a web browser or in an application server such as node.js.
-
It features a small code footprint. A UI application using core UI elements with HTML DOM rendering will typically require AFL modules with fewer than 10 000 lines of source code, and a download side of less than 40 KB. The optional time zone database is only an additional 20 KB.
-
The only external dependency is for certain components in the test framework and the native bridges.
-
Excellent coexistence with 3rd-party frameworks, toolkits and libraries: no standard objects are modified (except for emulation of missing standard ECMAScript 5.1 methods); no global namespace pollution (only
defineis added as a global variable); no custom inheritance data structures, HTML DOM-based UI can be attached to existing web pages.