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.

Friday Nov 21, 2014

Oracle Mobile Partner Event, Europe 2015

As an Oracle partner do you have plans for Mobile enablement?  Do you want to find out the latest application development trends?  Do you want to get hands-on with Oracle's Mobile Application Framework?  The FMW Partner Community are hosting a 4 day event on the 3-6th March 2015 in Budapest.  This event will bring together Oracle Development with the brightest Oracle partners to discuss and learn, amongst other topics, Mobile, Cloud and UX.

Grant Ronald and Frank Nimphius will be representing the Mobility and Development Tools Product Management Team, and we will be running a 2 day hands-on session.

Friday Nov 14, 2014

Oracle leaps ahead of SAP and IBM in MADP

Oracle leaps ahead of SAP and IBM in MADP

Gigom Research ranks Oracle at the top of the MADP list of vendors

[Read More]

Tuesday Nov 11, 2014

Secure Oracle MAF applications with Oracle Mobile Security Suite

The following steps illustrate how to containerize and secure the content of a MAF application using Oracle Mobile Security Suite (OMSS). 

Note: This functionality is currently supported only on the iOS platform. Support for Android is on the roadmap. Also, please note that the steps listed below are applicable to the MAF 2.0.1 release only.

Step1: Install the containerization (c14n) tool

Download :

You can download the OMSS c14n tool from Oracle Support site.

JDeveloper users : 

In the MAF 2.0.1 release, Oracle JDeveloper does not provide an option to set the path of the c14n tool in the preferences. JDeveloper expects the c14n tool to be installed in the default path. While installing the c14n tool, choose the default path provided by the installer. In future MAF releases, developers shall be able to set the path to the c14n tool in JDev preferences, and at that point, they can install the c14n tool at any location on their machine.

Default path where OMSS C14N tool is installed: /opt/Oracle/omss

Eclipse users: 

If you are using Eclipse to secure your MAF applications with Oracle Mobile Security Suite, you can install the c14n tool at any location on your machine. The MAF extension for Eclipse provides a way to set the path to the c14n tool in the Eclipse preferences.

After you install the c14n tool, you can run the following command in a terminal to ensure the c14n tool is installed properly.

c14n -version

For the MAF 2.0.1 release, the minimum supported version of the c14n tool is v3.0.2, and the maximum supported version is

Step2: Set the path for the c14n tool in JDeveloper / Eclipse preferences

JDeveloper users:

You can skip this step in the MAF 2.0.1 release, as JDeveloper always tries to look for the c14n tool in the default location. Just make sure that your c14n tool is installed in the default path suggested by the c14n installer. In future MAF releases you will be able to set the path of the c14n tool in the JDev preferences.

Eclipse users: 

You can set the path within Eclipse preferences by navigating to Oracle ----> Mobile Applications Framework ---> iOS ---> Containerize 

Step3: Enable Oracle Mobile Security Suite in the deployment profile

JDeveloper users:

Within the iOS deployment profile, check the box that says Enable Oracle Mobile Security Suite.

Eclipse users:

You can enable Oracle Mobile Security Suite within the Run Configurations menu as shown in the picture below.

Step 4: Deploy the application to iTunes

Containerization is ONLY supported for iTunes deployment. Deployment to a distribution package or to an iOS simulator will NOT invoke the c14n tool to create a containerized IPA file. See the following screenshots for examples.

JDeveloper users:

Eclipse users: 

Within the Run Configurations menu, set the iOS Deploy Target to iTunes, as shown in the picture below, and click Run.

Upon completion of this step (Deploy the application to iTunes), an IPA file secured by Oracle Mobile Security Suite will be created. Once you add this application to your device, it should appear with a lock icon on it, as in the picture shown below.

Step 5: Generate an IPA for the Workspace application based on your enterprise provisioning profile and certificate

Go through the Oracle® Fusion Middleware Customization and Branding Guide for Oracle Mobile Security Suite and follow the steps listed in the Section 1. Oracle Secure Workspace Customization for iOS. This section walks you through the steps to generate the Workspace IPA file based on your own enterprise provisioning profile and certificate.


Note: The IPA files for the containerized MAF application and the OMSS Workspace application must be generated using the same enterprise provisioning profile and certificate.

Step 6: Set up the OMSS Server Environment

Once you install Oracle Mobile Security Suite, and all the services are up and running, you will be able to move on to the next step (Configure the OMSS Container app (Workspace app)) .

Step7: Configure the OMSS Container app (Workspace app) : 

The following steps are usually performed by an end user.

  1. Launch the Workspace app.

2. Configure the Workspace app.

Enter the configuration URL and tap on the CONFIGURE button.

3. Log in.

Step 8: Make changes to the policy

The following steps are usually performed by an IT Administrator. These steps demonstrate how to make changes to a policy which is assigned to a particular user or a group of users. Learn more about the Oracle Mobile Security Suite Admin Console here

1. Select a policy.

   On the MSAC server, select the Policies tab, and from the list of policies, select the policy that you want to change.

2. Make changes to the policy and save.

   As highlighted in the screenshot below, select the Container/Apps tab, make the following changes, and click Save.

 - Disable Email (Set the email allowed option to No)

 - Disable Print functionality (Set the print allowed option to No)

 - Disable File Sharing (Set the restrict file sharing option to Yes)

 - Disable the ability to copy and paste content  (Set the restrict copy/paste option to Yes).

3. Either wait for a few seconds, OR kill the Workspace app and the containerized app .

   It usually takes a few seconds for the policy changes to get applied to the Workspace container. The alternative way to refresh the policy changes is by killing the Workspace app and restarting it.

4.  Launch the containerized app (in this example, the DeviceDemo app).

To validate the policy changes, we are using the containerized DeviceDemo sample app. You can find more details about this sample here. .Once you launch the DeviceDemo app it will launch the Workspace app. After you log in to the Workspace app, it automatically redirects and restarts the DeviceDemo app.

Step 9: Validate Data Leak Protection

The following steps demonstrate how to validate Data Leak Protection scenarios using the DeviceDemo sample app.

  1. Enable / Disable Email
  2. Enable / Disable File Sharing
  3. Enable / Disable Copy / Paste operation

  1. Enable / Disable Email: 

To validate the policy changes related to Email functionality, navigate to the Email feature, and try to send an email.  You should see the message Email is disabled, as shown below.

 2. Enable / Disable File Sharing 

To validate the policy changes related to restricted file sharing, navigate to the Attachments functionality, select a document from the dropdown list, and tap on the View button.

When the document is displayed, tap on the contextual menu shown on the right side. You should not see any options like Open or Print displayed. The restrict file sharing option controls the ability to open documents in other applications like AirDrop, Dropbox, or Box.

3. Enable / Disable the Copy-Paste operation

To validate the policy changes related to the Copy-Paste operation, navigate to the Attachments feature, select any of the documents, and tap on View. Once the document is displayed, copy the content from the document and try to paste it outside the containerized app (in this case the DeviceDemo sampe app). If the policy is successfully applied, you should not be able to paste the content outside the application.


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


« May 2015