Working version 25.11 25.08 25.05 25.02 24.11 23.11 Cloud Enterprise
Working version 25.11 25.08 25.05 25.02 24.11 23.11 Cloud Enterprise

AFL

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 define is added as a global variable); no custom inheritance data structures, HTML DOM-based UI can be attached to existing web pages.