Preamble

The first thing to understand about Oracle Java and systems running OS X 10.7 and above is that it is not an Application, so it doesn't really show up in the Software module (although two components do). The pieces of JAva that I care about are the PreferencePane and the Internet Plug-in. Also, Oracle didn't quite follow Apple's rules, they kinda faked it. 

Java is Special. 

Another item is that for OS X versions before 10.7, Java was built in; after that it is not and needs to be added. 

Further complicating things is that Apple's XProtect. XProtect is a FIle Quarentine implementation that blocks known maleware (or vulnerable versions of some applications). It is built in to OS X 10.8 and later. If you are running updated Java (1.7_55 +) and at least Snow Leopard (Mavericks is free) it shouldn't effect you in a bad way. If you have a need to run Java 1.6, then you may want to check this thread: 


http://managingosx.wordpress.com/2013/01/31/disabled-java-plugins-xprotect-updater/

http://managingosx.wordpress.com/2013/02/01/more-thoughts-on-xprotect-updater/

  http://managingosx.wordpress.com/2013/02/04/still-more-on-the-xprotect-updater/

-----------


Determining if JAVA is installed and if so, what version


Because Java is not an Application, but rather a set of plug-ins, determining the presence and the version of two compnents is key. 

	\Library\PreferencePanes\JavaControlPanel.prefPane
\Library\Internet Plug-ins\JavaAppletPlugin.plugin

To make things more complicated, the PreferencePane is a link, not a real file. It links to:

	/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy/JavaControlPanel.prefPane	

So, since that is a sub section of the JavaAppletPlugin.plugin, it is the key. 

To determine the version of the Plug-In, you can use the Get Info feature of the finder. From the command line that best way to do this is to grab it out of the Info.plist file that is found within the Plug-in bundle. 

	/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist 	

Unfortunately, this too is a link. So, the best way to determine the current version seems to be to use built in queries on the system like PlistBuddy or Defaults : 

	/usr/libexec/PlistBuddy -c "print :CFBundleVersion" "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist"

OR

	/usr/bin/defaults read /Library/Internet\ Plug-ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion


Either of which could be used as a Custom Inventory Return 

	ShellCommandTextReturn(/usr/libexec/PlistBuddy -c "print :CFBundleVersion" "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist")

Note: Using 'PlistValueReturn' to do the same thing doesn't work because the link points to either 'Enabled.plist' or 'Disabled.plist' depending on the state. 

This would work if it is Enabled...

	PlistValueReturn(/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Enabled.plist, CFBundleVersion, TEXT)	

Better yet, throw a small script on the systems and then run the script with the CI (save in /usr/local/bin/java_ver.sh)


#!/bin/bash
if [ -f "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Enabled.plist" ] ; then VERSION=$( defaults read "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Enabled.plist" CFBundleVersion )
else [ -f "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Disabled.plist" ]
   VERSION="Not installed."
fi
echo "$VERSION"

Then build out your CIR:


	ShellCommandTextReturn(/bin/bash /usr/local/bin/java_ver.sh)

Installing Java 1.7_60 b19

OK, so know we know what version is installed. If you want to make a Managed Install for Java the next step would be to make a specific Software Record for that specific version of Java. For this example I will talk about Java Standard Version 7 Update 60 (CFBundleVersion returns 1.7.60.19)


	PlistValueEquals(/Library/Internet\ Plug-ins/JavaAppletPlugin.plugin/Contents/Enabled.plist, CFBundleVersion, TEXT, 1.7.60.19) OR	PlistValueEquals(/Library/Internet\ Plug-ins/JavaAppletPlugin.plugin/Contents/Disabled.plist, CFBundleVersion, TEXT, 1.7.60.19)


Select all your 10.7 and above Operating Systems

Browse to FIle:  jre-7u60-macosx-x64.dmg




The Managed Install in Distribution is stadard for OS X. Just let it do it. :)


Bonus

Option Disable Java Auto Update: 

You could add this to the script that returns the version and it will turn off the auto update feature in Java. 

	defaults write /Library/Preferences/com.oracle.java.Java-Updater JavaAutoUpdateEnabled -bool false



Resources:


Java FAQ (Oracle):

    http://java.com/en/download/faq/java_mac.xml

XProtect re-Enable Java 6 & 7:

    https://gist.github.com/rtrouton/5560098

Managing Oracle Java Exception Site List:

    http://derflounder.wordpress.com/2014/01/16/managing-oracles-java-exception-site-list/