Sunday Feb 01, 2015

Oracle's MAF helps you keep up with the Apple mobile bullet train

It's fairly easy to argue that the mobile world moves at a much faster pace to the enterprise world. Apple and Google are constantly releasing updates, sometimes several a year for their respective mobile platforms. This certainly creates pain for enterprises trying to build mobile apps, how do you keep up, or more importantly how do you make sure your mobile apps keep up with the latest mobile platform requirements?

Of note late last year Apple announced that all new apps released to the Apple App Store must include 64-bit support and be built with iOS 8+ SDK by February 1st 2015 - today! And any existing apps must meet the same requirements if updated after June 1st 2015.

Luckily if you're using Oracle's Mobile Application Framework v2.1 it is designed to specifically to meet Apple's latest requirements. Rest assured Oracle has you covered.

To take advantage of these updates, ensure to download the latest MAF extension from inside JDeveloper 12.1.3, or alternatively you can download the extension from the JDeveloper extension page. Instructions for how to install and configure JDeveloper + MAF 2.1 can be found here.

Monday Jan 26, 2015

Announcing Oracle Mobile Application Framework 2.1 - Now Available

The Oracle Mobile Team is happy to announce the release of Oracle Mobile Application Framework 2.1 - a major update to Oracle's mobile development framework.

This new version focuses on upgrading the framework's infrastructure and includes the following new features:

  • Support for Java 8 - Java is the language used for business logic development on Oracle MAF, in fact Oracle MAF is the only solution out there that will run the same Java code on both iOS and Android.  Now developers can leverage the latest features of the Java language - such as Lambda expressions, Collections with Generics and more - while running on a 64bit JVM that supports the Java 8 Compact2 profile.
  • Cordova 3 support - Cordova is used in Oracle MAF to provide access to device features. Oracle MAF 2.1 updates the Cordova version to 3.6.3 on Android and 3.7 for iOS, dramatically increasing the number of available plugins that developers can leverage.
  • Simpler Cordova Plugin integration - Oracle MAF leverages the plugman command line to build and incorporate plugins into Oracle MAF apps.
  • Xcode 6 and Android 5 support - use the latest SDKs to compile and deploy your MAF applications across multiple devices.

You can get Oracle MAF 2.1 by downloading the new Oracle MAF extension through the JDeveloper Help->Check for Updates functionality.

We highly recommend that you read the installation guide and migration guide before you start your upgrade process. The setup might be a bit tricky because you'll need JDK7 to run JDeveloper but JDK8 to use the extension - so follow the instructions carefully. 

Have questions? - join us on the Oracle MAF discussion forum on OTN

Friday Dec 12, 2014

Interview with Northumbrian Water

Earlier in the year Grant Ronald, from the Oracle Mobile Product Management team, went up to Durham in the UK to interview James Robbins the CIO of Northumbrian Water on their mobile strategy and their use of Oracle's mobile framework. This video is a nice insight into a key utilities company's mobile strategy and how Oracle technology supported them.

Thursday Dec 11, 2014

How do I install 2 versions of the same version of JDeveloper?

This has been covered before by other Oracle blogs, but for our mobile customers it’s worth restating.

From time to time the requirement comes up from our customers, how do I install 2 separate versions of JDeveloper? And sometimes more specifically how do I install two instances of the same version of JDeveloper?

Let’s address the first question.

How to install 2 *different* versions of JDeveloper?

If you want to install 2 separate versions of JDeveloper, say JDeveloper and, this can be easily achieved at installation time. On installing each version of JDeveloper, when the installation wizard prompts you, specify a *different* installation directory for each.

What you should not do is install them in the same directory.

Important to the discussion coming up, it’s worth noting that each JDeveloper installation maintains its “System” directory, that is a directory containing it’s temporary files & configuration files, by default in separate locations. As such if you have JDev and installed separately, under Windows 7+ you will have the following directories:


And under a Mac these directories:


How to install 2 versions of the *same* version of JDeveloper?

Sometimes rather than using 2 different versions of JDeveloper, we want to install the same version twice, essentially 2 instances. A common reason for doing this is you maybe using JDeveloper with multiple extensions, and you want to maintain separate JDeveloper instances for each extension. For example you might want to support 2 different versions of the MAF extension which are currently both on JDeveloper

To achieve this is a little more tricky because of the “System” directory we talked about in the previous section. While different versions of JDev have their own default System directory with a specific version number for that release, two instances of the same version of JDeveloper will clash as they will attempt to use the same versioned default System directory.

The following steps will show you how to install a JDeveloper instance such that it doesn’t use the default System directory, but one of your choosing, nicely avoiding the clash. We’ll assume you’re installing JDeveloper twice.

1. Install JDeveloper the usual way, but ensure the JDeveloper installation directory is unique for the installation. For example under Windows I might choose to install two instances of JDev under:


And alternatively under a Mac:


You might want to use better names than Instance 1 & 2, but it will serve our purpose in describing the steps here.

2. When the installation process is complete, *dont* allow JDeveloper to start, just complete the installation process and allow it to close naturally.

3. Via your Windows Explorer or Mac Finder, create an alternative directory for where the JDev instance’s System directory will go.

e.g. For Windows:


e.g. For Mac:


4. In the JDeveloper home, locate /jdev/bin/jdev.boot and open it in your favourite text editor

5. Locate the ‘ide.user.dir.var’ property, and rename it to ‘ide.user.dir’ (yes, drop the dot var)

6. Change the value for ‘ide.user.dir’ to include the directory you created in the previous step, using backslashes for the directory path regardless if it’s for Windows or Mac.

e.g. For Windows

ide.user.dir= C:/Users/chris/AppData/Roaming/JDev121300Instance1

e.g. For Mac


7. Save your changes and close the file

8. Start JDeveloper

That’s all that needs to be done. Once JDeveloper has started and opened to the default start page, it’s worthwhile checking in your new System directory for that JDeveloper instance, that you can see JDeveloper is using that directory and creating files. For JDeveloper for example we would expect to see that under the directory you created, for example /Users/chris/.jdeveloper121300Instance1 on Mac, you can now see a subdirectory system12. If that directory exists, JDeveloper is correctly setup.

From here you are now in a position to install your 2nd JDeveloper instance following the same steps above.

Once done you are now free to download and maintain separate extensions for each JDeveloper instance. Just make sure you don’t get confused which JDeveloper you’re running!

One side effect of changing the ide.user.dir option in the jdev.boot file, is JDeveloper’s ‘mywork’ directory will now be defaulted to the new System directory you specified.

Sunday Dec 07, 2014

Rethink Mobile: Beyond Mobile First with Oracle


December 17, 2014 - Mark your calendars to get an update on Oracle's mobile strategy: Rethink Mobile: Beyond Mobile First with Oracle. We will be available to answer your questions via live chats. The Oracle guest lineup includes: Suhas Uliyar, Vice President, Mobile Strategy, Product Management, Laurent Pacalin, Group Vice President, Product Management, Jeanne Lowell, Vice President, E-Business Suite, and Rimi Bewtra, Sr. Director of Product Marketing.

And if you happen to be at Gartner AADI this week (Las Vegas!) stop by and say hello.  I'll give you a mobile tour at no extra charge and perhaps some free poker lessons. ;-) 

Here's a great trailer for the main event you do not want to miss.

Monday Dec 01, 2014

How do I install multiple Xcodes on my Mac?

On the OTN MAF forums we're seeing a few questions about if MAF 2.0.1 only supports Xcode 5.1.1, but MAF 2.0.1 also supports iOS 8 applications, how do you test MAF apps on an iOS 8 Simulator when that's only available in Xcode 6+ and you can only have one XCode installed at anyone time?

(Phew, that's likely the most complex sentence I've ever written).

Firstly it is correct to say only Xcode 6+ includes an iOS 8 Simulator (and 7.0 and 7.1 for the record as a separate download), but Xcode 5.1.1 only supports upto iOS 7.1.

However it is incorrect to say a Mac can only have one Xcode version installed.

Let's discuss what you need to know to install a second Xcode.

Installing multiple Xcodes

Typically Xcode is installed via the Apple App Store, and this will install the most recent version (at the time of writing this was Xcode 6.1). Now Oracle MAF 2.0.1 customers will have Xcode 5.1.1 installed, and likely was installed via the same App Store route, just you haven't upgraded yet.

So you may have 5.1.1 installed, or 6.1 installed, but not both. Whichever is installed will be found under /Applications/

If you currently have 5.1.1 installed and you want to also install 6.1, follow these steps:

a) Close Xcode if running
b) Rename /Applications/ to /Applications/
c) Enter the admin password when prompted
d) Goto the Apple App Store and download Xcode again
e) Once downloaded, before running it, change the new /Applications/ that was just installed to /Application/

There is a couple of confusing things that will happen during step "d". When you go to the App Store, the button will show "Upgrade" rather than "Install". You can ignore this, the App Stores doesn't know you've moved the currently installed Xcode. Then while the app is downloading you may notice in the Mac Launchpad that it can get confused and it shows the original Xcode icon getting upgraded rather than a separate install. You can ignore this too, this will right itself eventually and you'll end up with two Xcode icons, Xcode5 & Xcode6.

For customer's that already have Xcode 6.1 installed, but not 5.1.1, the steps for you are slightly longer as the App Store doesn't allow you to download previous versions of software. For this we need to use the Apple Developer Center

a) Close Xcode if running
b) Rename /Applications/ to /Applications/
c) Enter the admin password when prompted
d) Login to the Apple Developer Center Member Center (you will need an Apple Developer Account to do this)
e) Access the Downloads page
f) Search for the relevant Xcode version (e.g. Xcode 5.1.1)
g) Download the .dmg file
h) Once download execute the .dmg file to install Xcode
i) Once Xcode is installed, ensure it is closed
j) Rename the new /Applications/ to /Applications/

That's it.

What can go wrong?

If you've already JDeveloper and MAF 2.0.1 installed & have been using it successfully on your Mac to test iOS apps, you need to remember that the Preferences -> Mobile Application Framework -> iOS settings are still pointing to the old /Applications/ You need to change this to /Applications/ otherwise you can't build your application.

DO NOT change this to, MAF 2.0.1 does not support Xcode 6. An upcoming MAF version will.

But how do I test with the iOS 8 Simulator then?

MAF will support Xcode 6+ in an upcoming release which will mean you can deploy from MAF straight to an iOS 8 Simulator. For the moment with the above dual Xcode setup you need to do the following:


a) In JDeveloper with your current MAF 2.0.1 installation which uses Xcode 5, select the Build menu Clean All option
b) Deploy your application to the iOS Simulator via the Deploy menu as you would normally

This will open the iOS 7.X simulator attached to Xcode 5.1.1. We're not actually interested in this, rather the previous step forced JDeveloper to build the temporary iOS project for us which we'll use next.

c) Close JDeveloper down
d) Close the simulator
e) Close Xcode if running
f) Open Xcode6
g) Select Open Project
h) In the file dialog locate the base directory of your app's source code on the local Mac file system, then select deploy/iOS1/temporary_xcode_project/Oracle_ADFmc_Container_Template.xcodeproj (note the iOS1 directory name depends on your deployment profile names, this may differ in your application)
i) In the Xcode 6 IDE, select the same named project in the left Project Navigator
j) Via the Product menu Destination options, select an iOS 8.X device under the iOS Simulator heading (e.g. iPhone 5s (8.1))
k) Via the Product menu select Run
l) The app will build, and after sometime the iOS 8 Simulator will launch with your app starting automatically

When you return to JDeveloper + MAF, ensure to do a Build menu Clean All in your application before testing again especially through the previous version 5 of Xcode. This is necessary because as you've just executed a build under Xcode 6, incorrect versioned artifacts may have been created in the temporary_xcode_project directory. Amongst Oracle staff we use the Clean All function religiously.

Caveat emptor

This article was written when MAF was the current version of MAF. In future versions when we support different Xcodes obviously the versions talked about in this article, that is JDeveloper, MAF, Xcode and iOS versions will change.

This blog is is dedicated to announcements,tips and tricks and other items related to developing, integrating, securing, and managing mobile applications using Oracle's Mobile Platform. It is created and maintained by the Oracle Mobile product development team.

Archive of past entries

Even More Mobile Development Blogs

Oracle A-Team Site - Mobile Related Entries

Code samples from the Community

Fusion Middleware Blogs


« August 2015