New Features in Oracle Mobile Application Framework 2.1.0


Java 8 (compact2 profile) support
MAF 2.1.0 contains a 64 bit Java 8 VM, enabling the use of Java's more recent improvements and meeting the Apple App Store's 64-bit requirements. Support for Java 8 allows developers to leverage features like Lambda Expressions, Collections using generics, Base64Encoder/Decoder and more.
 
More details on the Java 8 compact2 profile can be found at: http://docs.oracle.com/javase/8/docs/technotes/guides/compactprofiles/compactprofiles.html.

Cordova upgrade
MAF 2.1.0 uses Cordova 3.6.3 for Android and 3.7.0 for iOS, which dramatically increases the number of available plugins that can be incorporated into MAF apps.
 
New Cordova plugin support
MAF 2.1.0 greatly simplifies the use of Cordova plugins. The JDeveloper MAF extension makes uses of the plugman command-line interface to build and incorporate any compatible plugin into a MAF app. MAF app developers need only specify the location of a plugin's source code, having developed the plugin themselves or having downloaded it from a plugin repository.

Xcode 6 support
MAF 2.1.0 requires Xcode 6, which provides the ability to build, test and deploy applications to iOS 8.1 devices and simulators.
 
Android 5.0 support
MAF 2.1.0 is built using the Android 5.0 SDK, which provides the ability to build, test and deploy applications to Android 5.0 devices and emulators.

Support for accessing MAF container JavaScript APIs from remote URLs
MAF 2.1.0 enables server-rendered web apps that are displayed in a MAF container to access JavaScript APIs within the MAF container. This enables developers to call APIs to set and get EL expressions, call Cordova plugin APIs to access device functionality and more. MAF container Java APIs can also be accessed via the invokeMethod JavaScript API.

Support for limiting pageFlowScope variables to task flow boundaries
MAF 2.1.0 provides the ability to restrict the scope of a pageFlowScope variable to the bounded task flow only. Any updates to the variable in one bounded task flow would not impact a pageFlowScope variable with the same name in another bounded task flow. To force this behaviour, the following flag must be set:

<page-flow-scope-behavior>
    <push-new/>
</page-flow-scope-behavior>

Without this flag, the default behavior matching previous MAF releases will be enforced, such that changes made to the variable in the second bounded task flow would impact the variable in the first bounded task flow.