5. 5
“The evolution is already there in today’s UI5 codebase and can be
used for applications: declare your dependencies, use the new
asynchronous APIs and orchestrate your code execution!”
6. 6
“To carefully split our codebase in a compatible way, to provide a
state-of-the-art build and development tooling and to redefine the
individual layers to make them usable in a more fine granular way.”
7. 7
“UI5 today is quite monolithic! Although it has been designed for
modularization, there is a tight coupling between and within the
Core, the Rendering & Controls and the Programming Model!”
8. 8
“Split the different parts of UI5 into distinct yet modular layers: the
Core, the Rendering & Controls and the Programming Model and
allow for an individual and fine-modular consumption!”
11. 11
“Establish a future-proof foundation for code organization and
dependency management, enabling applications to run with just the
minimum amount of resources!”
12. 12
“Collection of
Bricks”
Restructure the Core
modules by splitting
them into a more fine
granular module set
for individual use.
Introduce AMD-like
module syntax to
enforce dependency
declaration and to get
rid of Globals. Applies
also to controls and
libraries.
Universal
JavaScript
Independence of DOM
and jQuery. Lower
layers of the Core are
usable in DOM-less
environments like
Node.js or Workers to
enable e.g. compile-
time pre-processing
of XMLViews.
Higher layers incl.
controls could get rid
of jQuery.
MODULAR CORE
17. Get rid of sync XHR (typically via synchronous API).
They block the main thread, disallow execution of code in
the meantime or of other requests.
Task
…
Task
…Pending
Promise
Task
…
Promise
Task
…
Async APIs
18. 18
“Collection of
Bricks”
Restructure the Core
modules by splitting
them into a more fine
granular module set
for individual use.
Introduce AMD-like
module syntax to
enforce dependency
declaration and to get
rid of Globals. Applies
also to controls and
libraries.
Asynchronous
APIs & Loader
Deprecate sync XHR!
Establish asynchro-
nous APIs for loading
Libraries,Components,
Views & Controllers,
i18n files. Async
XMLView processing.
Enable module loader
to be basically AMD
compatible. Become
ready for latest web
features.
Universal
JavaScript
Independence of DOM
and jQuery. Lower
layers of the Core are
usable in DOM-less
environments like
Node.js or Workers to
enable e.g. compile-
time pre-processing
of XMLViews.
Higher layers incl.
controls could get rid
of jQuery.
Emerging
technologies
Allow for evolving
features such as ES6
modules or ES6
language features.
Be open to support
TypeScript for upper
levels or support
transpiled code.
For the framework we
are mainly locked to
ES5 due to browser
shipment matrix.
MODULAR CORE
41. 41
§Do not use jQuery.sap.declare or jQuery.sap.require anymore
§Use sap.ui.define and sap.ui.require instead
§sap.ui.define: Dependencies are loaded in advance before executing the defined
module (static Dependencies)
§sap.ui.require: Dependencies are resolved on demand after the initial module
execution (when the user interact with app) (Dynamic Dependencies)
AMD-like module definition