NexJ Logo

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.