Improve Oracle JDeveloper 12c Performance

To improve Oracle JDeveloper 12c IDE performance, 2 configuration files require modification:

Increase Heap size - ide.conf

1. Go to JDeveloper installation directory e.g. C:\Oracle\Middleware\jdeveloper\

2. Open the file \ide\bin\ide.conf

3. Scroll down and find the following memory entries:

# If you are getting the 'Low Memory Warning' Message Dialog while running
# JDeveloper, please increase the -Xmx value below from the default 800M to
# something greater, like 1024M or 1250M.  If after increasing the value,
# JDeveloper is no longer starting up because it fails to create a virtual
# machine, then please reduce the modified -Xmx value, or use a 64bit JDK
# which allows for very very large value for -Xmx.
#
AddVMOption  -Xms128M
AddVMOption  -Xmx768M

4. Change the memory parameters to something larger and save file:

AddVMOption  -Xms1024M
AddVMOption  -Xmx1024M


Other config changes - jdev.conf

5. Go to JDeveloper installation directory e.g. C:\Oracle\Middleware\jdeveloper\

6. Open the file \jdev\bin\jdev.conf

7. Add the following new entries at the bottom and save file:

# Added from http://onkaroracle.blogspot.co.uk/2015/10/improve-oracle-jdeveloper-12c.html
# optimize the JVM for strings / text editing
AddVMOption -XX:+UseStringCache
AddVMOption -XX:+OptimizeStringConcat
AddVMOption -XX:+UseCompressedStrings

# if on a 64-bit system, but using less than 32 GB RAM, this reduces object pointer memory size
AddVMOption -XX:+UseCompressedOops

# use an aggressive garbage collector (constant small collections)
AddVMOption -XX:+AggressiveOpts

# for multi-core machines, use multiple threads to create objects and reduce pause times
AddVMOption -XX:+UseConcMarkSweepGC
AddVMOption -DVFS_ENABLE=true
AddVMOption -Dsun.java2d.ddoffscreen=false
AddVMOption -XX:+UseParNewGC
AddVMOption -XX:+CMSIncrementalMode
AddVMOption -XX:+CMSIncrementalPacing
AddVMOption -XX:CMSIncrementalDutyCycleMin=0
AddVMOption-XX:CMSIncrementalDutyCycle=10     

7.  Start JDeveloper. If there are issues starting it, then reduce the memory settings in Step 4 to something slightly less and retry.


Credits: The above configurations have been obtained via other blog posters on the internet mainly from here. I have collated the information in one and is something I can personally refer to as well. 

Recommended Laptop specification for Oracle Fusion Middleware development

Recently, my personal development laptop was becoming slow and I thought it was time to upgrade it. I did some research on the type of Laptops my fellow Middleware developers around the world were using but didn't find much information!

After researching, I bought a HP EliteBook 8560w... but the model doesn't mean everything... Sure, you get a quality build etc, but what matters is the specification of the laptop.

 Main laptop spec:

  • i7-2820QM 2.30GHZ Quad core (8 threads)
  • 16GB RAM
  • 256GB SSD
  • 6.9 / 7.1 Windows Experience Index
Results:

  • JDeveloper 12c opens in around 5 seconds
  • Running an ADF application + Starting the WebLogicIntegratedServer instance starts up in around 15-20 seconds.
  • Deploying small sized ADF application onto local server - several seconds

I have to say that the above tech spec results in very good Middleware development performance. I was torn between a 1TB HDD or the 256GB SDD (the SDD cost more!) but I am glad I went for it, I have never experienced such speedy development in my time.

However, most developers will tell you that the more memory (RAM) you have, the better. This is true but depends on what you will be doing. If you are doing SOA development and have a local running SOA instance then you will need around 16GB for smooth performance. If you have a SOA instance + WebCenter instance in separate domains.. Then you will definitely need more! The HP EliteBook 8560w can handle up to 32GB if needed. You can pick up a decent priced one for a refurbished model.


I am currently in the process of downloading the WebCenter 11.1.1.9.0 VM (a huge 18GB download) and looking forward to seeing the performance with that! I will keep this post updated with results.

Please share your machine specs + experiences with me, I would love to know!

WebCenter Portal - Services Catalog: How to use the Announcements Task flow

This post describes how to use the Announcements taskflow from the WebCenter Portal Services Catalog within JDeveloper.

NOTE: This post has been carried out on WebCenter Portal 11.1.1.8, so instructions and screenshots may differ with your version.

Ensure you have the relevant WebCenter extensions downloaded.

1. Create a new ADF application - Fusion Web Application (ADF) and create a Test.jspx page. This application will be deployed to your WebCenter Portal server, so ensure it works before adding WebCenter taskflow components.

2. From the Resource Palette, find the Announcements task flow under WebCenter Portal - Services Catalog:


3. Drag the task flow onto the jspx page:


4. We need to enter a parent id for the announcements task flow. The id is the forum id of an announcements portal from within WebCenter Portal. We will obtain the Announcements ID in step 5, but the ID will be entered within the Parameters of the Announcements task flow from the bindings layer:


5. We need to get the ID of the Announcements section we want to show. Login to the WebCenter portal application with weblogic e.g. http://localhost:8888/webcenter.

Click Administration -> Click Portals -> Click Administer on the Portal you want to show the Announcements for.

Click Tools and Services -> Click Announcements.

The Forum ID for these Announcements is displayed on this page:


6. Take the Forum ID from step 5 and enter in the task flow parameter shown in step 4:


7. Now, we need to create a connection to the Collaboration server from the ADF application. All discussions and Announcements are hosted on the Collaboration server and is most typically installed as part of WebCentert Portal - it will be a new server in your stack: WC_Collaborations with a Port number of 8890.

8. In JDeveloper in your ADF application, under Resource Palette, click New Connection -> Discussion Forum:


9. Set Connection name as: DiscussionForum. For connection settings, enter the following:

URL: http://localhost:8890/owc_discussions
Admin User: weblogic



10. You can click Test Connection to check if server can be reached, however, when I personally did this, it did not connect but worked anyway! Click Next then Finish.

Properties for this connection are saved in the connections.xml file and can be later modified via scripting when deploying through wlst.

11. Deploy the application to the server and navigate to the jspx page the task flow is added to. NOTE: I have no security added to the page the Announcements task flow is added, the page has anonymous role.

12. You should now see all the announcements on the page, the announcements are pulled from the Portal you obtained the Announcements Forum ID from:



NOTE: The Portal that the above Announcements are from, the security is set to Public, which is why they can be seen by the anonymous user. If the portal has security, then you will see the following message where the task flow should be rendered: 'User is not authorized'. However, if you add log in functionality, and the logged in user has the rights to view the Announcements inside the Portal, then he will see them. Also, if the logged in user has admin rights, then he will see additional functionality such as 'Create new announcement'.

We are using the above anonymous functionality to show public announcements on the Login page, and for admins to control Announcements from within the WebCenter Portal application.

This should get you going, there is plenty more functionality to be explored, such as the 'Announcements - Mini View' task flow. Add that to the page and the Announcements are shown as a mini version. The screenshot below shows the Announcements Mini View task flow added below the Announcements task flow. Click on one of the Announcements and a new popup opens displaying full announcement information:






SOA and BPM options disappear after SOA/BPM 12c QuickStart installation

Recently, I was working on a BPM Project in 12c when all of a sudden JDeveloper could not render the project composite and SOA components. After further investigation, when trying to create a New Project, the options to create a new SOA or BPM application disappeared!

I could not figure out what the root cause of this was but the solution for the fix was to install the Spring components via JDeveloper Updates:

1. Click Help --> Check for updates

2. Tick all sources

3. Tick Spring

4. Click Next to install the update

5. Restart JDeveloper

The SOA and BPM options should be back!

Yet to complete.

Search the Jar a Java Class belongs to

There are many useful online resources that allow you to find the JAR a Java Class belongs to such as www.findjar.com.

However from experience, in the Fusion Middleware monster of JARs, it can be difficult finding the JAR a Java Class belongs to, especially when running applications and facing missing class exceptions.

To find the JAR and its location within Oracle Fusion Middleware Home directory, follow the instructions below.

In Windows:

1. Open a command prompt window

2. Navigate to the base folder of all the JARs

3. Enter the following command, replace classname with the Class you are searching for:

forfiles /S /M *.jar /C "cmd /c jar -tvf @file | findstr /C:"classname" && echo @path"
4. The command prompt will retrieve the name and location of all JARs that contain the searched Class.