Of course this is just an academic technical exercise and cannot be really used due to legal restrictions of the CDF license.
On Linux and Windows with JLink this seems to work easily:
[rolfm@localhost cdffun]$ cat CDFFun.java
/********************************************************
* CDFFun.java
* ************************************************************/
import com.wolfram.jlink.*;
public class CDFFun{
public static void main(String[] argv) {
KernelLink ml = null;
try {
ml = MathLinkFactory.createKernelLink(argv);
ml.discardAnswer();
} catch (MathLinkException e) {
System.out.println("Fatal error opening link: " + e.getMessage());
return;
}
{
String version = ml.evaluateToOutputForm("$Version", 0);
System.out.println("$Version = " + version);
String instdir = ml.evaluateToOutputForm("$InstallationDirectory", 0);
System.out.println("$InstallationDirectory= " + instdir);
String syslen = ml.evaluateToOutputForm("Length[Names[\"System`*\"]]", 0);
System.out.println("Length[Names[\"System`*\"] = " + syslen);
String instjava = ml.evaluateToOutputForm("{Needs[\"JLink`\"]; JLink`InstallJava[]}", 0);
System.out.println("InstallaJava[] = " + instjava);
String packagesloaded = ml.evaluateToOutputForm("$Packages", 0);
System.out.println("$Packages = " + packagesloaded);
}
{
ml.close();
}
}
}
[rolfm@localhost cdffun]$ cat comp.sh
#!/bin/bash
javac -classpath
.:/usr/local/Wolfram/CDFPlayer/9.0/SystemFiles/Links/JLink/JLink.jar CDFFun.java
[rolfm@localhost cdffun]$ ./comp.sh
[rolfm@localhost cdffun]$ cat run.sh
#!/bin/bash
java -classpath
.:/usr/local/Wolfram/CDFPlayer/9.0/SystemFiles/Links/JLink/JLink.jar
CDFFun -linkmode launch -linkname
'/usr/local/Wolfram/CDFPlayer/9.0/Executables/math -mathlink'
[rolfm@localhost cdffun]$ ./run.sh
$Version = 9.0 for Linux x86 (64-bit) (December 19, 2012)
$InstallationDirectory= /usr/local/Wolfram/CDFPlayer/9.0
Length[Names["System`*"] = 4529
InstallaJava[] =
{LinkObject['/usr/local/Wolfram/CDFPlayer/9.0/SystemFiles/Java/Linux-x86-64/bin/java'
-classpath "/usr/local/Wolfram/CDFPlayer/9.0/SystemFiles/Links/JLink/JLink.jar"
-Xmx256m -Djava.system.class.loader=com.wolfram.jlink.JLinkSystemClassLoader
-Djava.util.prefs.PreferencesFactory=com.wolfram.jlink.DisabledPreferencesFactory
com.wolfram.jlink.Install -init "/tmp/m000001113431", 51, 2]}
$Packages = {JLink`, ResourceLocator`, PacletManager`, QuantityUnits`,
Parallel`NullMaster`, Parallel`, System`, Global`}
[rolfm@localhost cdffun]$
Windows (with cygwin, starting from the CDF Player/9.0 folder with the same CDFFun.java):
$ SystemFiles/Java/Windows/bin/javac -classpath ".;SystemFiles\Links\JLink\JLink.jar" CDFFun.java
Rolf Mertig@merkur /cygdrive/c/Program Files (x86)/Wolfram Research/Wolfram CDF Player/9.0
$ SystemFiles/Java/Windows/bin/java -classpath ".;SystemFiles\Links\JLink\JLink.jar" CDFFun -linkmode launch -linkname ./MathKernel.exe
$Version = 9.0 for Microsoft Windows (32-bit) (December 19, 2012)
$InstallationDirectory= C:\Program Files (x86)\Wolfram Research\Wolfram CDF Player\9.0
Length[Names["System`*"] = 4530
InstallaJava[] = {LinkObject["C:\Program Files (x86)\Wolfram Research\Wolfram CDF Player\9.0\SystemFiles\Java\Windows\bin\javaw" -classpath "C:\Program Files (x86)\Wolfram Research\Wolfram CDF Player\9.0\SystemFiles\Links\JLink\JLink.jar" -Xmx256m -Djava.system.class.loader=com.wolfram.jlink.JLinkSystemClassLoader com.wolfram.jlink.Install -init "C:\cygwin\tmp\m-4a0c30df-9187-4b01-bad2-7e04d22230c1", 50, 2]}
$Packages = {JLink`, ResourceLocator`, PacletManager`, QuantityUnits`, Parallel`NullMaster`, Parallel`, System`, Global`}