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.