- Mac Java Download
- What Does Java Do For Mac File
- What Does Java Do For Mac Computers
- What Does Java Do For The Computer
Good news everyone!
You can now put your Java 8 applications onto the mac app store. How do I know? Because I put a little hackathon app I wrote on the Mac App Store. The better news is that Oracle is working on making this very simple with the JavaFX packager. You can get some of the early bits in the open source repo for OpenJFX here (building and using open source code is left as an exercise for the reader).
I got an Java application that does run under Java 1.8 without problems when I start its JAR directly. However on my Mac the JAR is wrapped within an app that demands me to install Java 1.6 - which I really do not want to do! So I'm searching the point within the app package where I could configure that my App shall use the installed Java 1.8. Learning Java is one of the smartest things you can do at the moment. The world's most popular programming language is easy to set up and install on a Mac, and there are plenty of. Just try by using echo $(/usr/libexec/javahome) command in your terminal to know the path where JAVA being installed. Also try to check the version of JAVA installed. This Beginners Tutorial gives introduction to JAVA Programming Language. It explains the use of JAVA and basic conce.
If you don't want to wait for the code to get an official release and you are comfortable doing stuff by hand then here are the steps you will need to follow.
Prepare your Environment
First you will need to be signed up as part of the Mac Develoer program at [developer.apple.com]. For this tutorial I will presume your name is Alice Duke
, that your Team ID is JJJJJJJJJJ
and that the app you are shipping is titled AwesomeJavaApp
. You will of course need to change these to real values.
Download your signing keys if you haven't done so already (here's how). You will need both the Mac App Distribution and Mac Installer Distribution, and they should automatically be placed in your keychain under the names 3rd Party Mac Developer Application: Alice Duke (JJJJJJJJJJ)
and 3rd Party Mac Developer Installer: Alice Duke (JJJJJJJJJJ)
.
You will also need an entitlements file. Read all about them at the Mac Developer Library. You will have to turn on the app-sandbox entitlement as well as any of the other entitlements you will be using. Be sure to keep track of what entitlements you grand and why they are needed. Apple will be asking you to justify every one of them.
Next, create your Mac .app
bundle the normal way you are doing with the javafxpackager, Ant, Maven, or Gradle build. Make sure this app works as it is what we will be bundling up.
Next, you will need to copy the info.plist from the existing JDK or JRE into the embedded JRE in your app. It should be either at /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Info.plist
or /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist
, but it is likely to be the first one. Copy this file to AwesomeJavaApp.app/Contents/PlugIns/jdk1.8.0.jdk/Contents/Info.plist
.
Now we need to strip a library. The Mac App Store doesn't accept apps that even mention the deprecated Quicktime API, so we will need to remove the media capabilities tom JavaFX. If your app uses the JavaFX media apis you are out of luck for the time being. There is a bug to fix this in a future release.
Free recuva download for mac. The good news is that the Java 8 license lets us fix the problem, at least when it comes to JavaFX. Remove the file libjfxmedia.dylib
.
Signing the app (in may different places) is next. Apple loves their cryptographic hashes.
First, you may need to make the JDK in the app bundle writeable. The codesign
program won't sign read-only binaries. chmod -R +w AwesomeJavaApp.app/Contents/PlugIns/jdk1.8.0.jdk
should do the trick.
You need to sign all jars, dylibs, and executable files in the bundle (with one exception). Enumerating them is left as an exercise to the reader. Any decent build tool can do it for you. You will need to sign it with both the identity you have and the entitlements you want
There is one caveat. Don't sign the main excitable of the app bundle. It is in Contents/MacOS
and has the name of your application, for example it would be AwesomeJavaApp.app/Contents/MacOS/AwesomeJavaApp
. We will get that signed another way.
Another quirk is that you can give different entitlements to each file. In the javafxpackger we sign with an entitlements file that contains only the app-sandbox
andinherit
entitlements, so they inherit all the entitlements from the main application.
Next, you will want to sign the Java directory itself. Actually you need to sign all plugins and frameworks in your app, but the overwhelming majority of java apps will only have one plugin: Java.
Finally, we can sign the application itself. Yes, we can actually shave the yak at this point.
You may or may not need all of the flags I've show with codesign
, as I have not exhaustively tested them in all the possibly combinations. You may not need the --deep
flag, but adding it will not get you out of signing all the interior jars and libraries. You may not need the -f
flag but it insures that your signature will be the only one. Finally, you may want to add a --verbose=4
flag to see all the gory details. Or not.
I bet you thought you were done? Now we need to create an installer package to send to the app store. Use the productbuld
too to generate the need file
Note that you are signing this with the second key you downloaded: the one for installers.
If you feel the need you can test the install:
Now you can load it into the Mac App store using the Application Loader tool. You will first need to go to iTunes Connect and set things up. But we have now left the Java specific part of the assembly so there are many other blog posts out there by more qualified and experienced Mac App Store developers.
There are many other potholes that you could run into. Two I hit were not having a 512x512@2x icon, and another was a dispute about copyright on an icon. I changed the icon rather than wade through the appeals process to prove that the icon was in the public domain.
I plan on keeping this post up to date with any changes or corrections, so feel free to bookmark this page.
These documentation pages are no longer current. They remain available for archival purposes. Please visit https://docs.oracle.com/javase
for the most up-to-date documentation.
Contents:
Q: How do I install Oracle Java?
A: See the JDK 7 and JRE 7 Installation Guide for the Mac.
Q: How do I install JavaFX?
A The JavaFX SDK and runtime are included in the installation of the JDK and JRE respectively, and they are integrated into the same directory structure. For information on how to work with JavaFX, see the JavaFX Documentation.
Q: Can I restore Apple Java 6 after uninstalling Oracle Java 7?
A: Go back to Apple Java 6 using the following instructions:
- Uninstall Oracle Java 7 by deleting the plug-in file. From a Terminal window enter:
- Create a symlink using the following command, entered on a single line:
Q: I am running Mountain Lion (OS X 10.8) or later and Gatekeeper is blocking an app from launching. What is going on?
A: Gatekeeper, introduced in Mountain Lion (OS X 10.8), is designed to prevent potentially malicious apps from launching. When you attempt to launch an app that doesn't meet certain criteria, Gatekeeper will block the launch. To override this, you can modify Gatekeeper's default settings, or explicitly right/control-click the application and choose Open.
Mac Java Download
To create a Java application that will launch without interruption under the default Gatekeeper settings, the app must be bundled with a JRE, use Oracle's launcher stub, and be signed with an Apple Developer ID. For more information on creating an app that satisfies these requirements, see Packaging a Java App for Distribution on a Mac.
Q: What happened to the Java Preferences app in Application -> Utilities?
A: The Java Preferences app was part of Apple Java installation and is not used by Oracle Java. Therefore, OS X releases from Apple that do not include Apple Java will not include Java Preferences.
Another quirk is that you can give different entitlements to each file. In the javafxpackger we sign with an entitlements file that contains only the app-sandbox
andinherit
entitlements, so they inherit all the entitlements from the main application.
Next, you will want to sign the Java directory itself. Actually you need to sign all plugins and frameworks in your app, but the overwhelming majority of java apps will only have one plugin: Java.
Finally, we can sign the application itself. Yes, we can actually shave the yak at this point.
You may or may not need all of the flags I've show with codesign
, as I have not exhaustively tested them in all the possibly combinations. You may not need the --deep
flag, but adding it will not get you out of signing all the interior jars and libraries. You may not need the -f
flag but it insures that your signature will be the only one. Finally, you may want to add a --verbose=4
flag to see all the gory details. Or not.
I bet you thought you were done? Now we need to create an installer package to send to the app store. Use the productbuld
too to generate the need file
Note that you are signing this with the second key you downloaded: the one for installers.
If you feel the need you can test the install:
Now you can load it into the Mac App store using the Application Loader tool. You will first need to go to iTunes Connect and set things up. But we have now left the Java specific part of the assembly so there are many other blog posts out there by more qualified and experienced Mac App Store developers.
There are many other potholes that you could run into. Two I hit were not having a 512x512@2x icon, and another was a dispute about copyright on an icon. I changed the icon rather than wade through the appeals process to prove that the icon was in the public domain.
I plan on keeping this post up to date with any changes or corrections, so feel free to bookmark this page.
xml:lang='en-US'>These documentation pages are no longer current. They remain available for archival purposes. Please visit https://docs.oracle.com/javase
for the most up-to-date documentation.
Contents:
Q: How do I install Oracle Java?
A: See the JDK 7 and JRE 7 Installation Guide for the Mac.
Q: How do I install JavaFX?
A The JavaFX SDK and runtime are included in the installation of the JDK and JRE respectively, and they are integrated into the same directory structure. For information on how to work with JavaFX, see the JavaFX Documentation.
Q: Can I restore Apple Java 6 after uninstalling Oracle Java 7?
A: Go back to Apple Java 6 using the following instructions:
- Uninstall Oracle Java 7 by deleting the plug-in file. From a Terminal window enter:
- Create a symlink using the following command, entered on a single line:
Q: I am running Mountain Lion (OS X 10.8) or later and Gatekeeper is blocking an app from launching. What is going on?
A: Gatekeeper, introduced in Mountain Lion (OS X 10.8), is designed to prevent potentially malicious apps from launching. When you attempt to launch an app that doesn't meet certain criteria, Gatekeeper will block the launch. To override this, you can modify Gatekeeper's default settings, or explicitly right/control-click the application and choose Open.
Mac Java Download
To create a Java application that will launch without interruption under the default Gatekeeper settings, the app must be bundled with a JRE, use Oracle's launcher stub, and be signed with an Apple Developer ID. For more information on creating an app that satisfies these requirements, see Packaging a Java App for Distribution on a Mac.
Q: What happened to the Java Preferences app in Application -> Utilities?
A: The Java Preferences app was part of Apple Java installation and is not used by Oracle Java. Therefore, OS X releases from Apple that do not include Apple Java will not include Java Preferences.
One of the functions of Java Preferences was to set the current version of the JRE. Under Oracle Java, only a single version of the JRE can be installed at a time. For more information, see JRE 7 Installation for Mac OS X.
To access the Java Control Panel, click the Java icon in the System Preferences panel. If the Java icon is not present (under the Other category) in System Preferences, you do not have an Oracle JRE installed.
Q: I have Oracle's version the JRE installed, but it is not listed in Java Preferences.
A: This is correct. The JRE will not show up in the Java Preferences list unless you install the full JDK.
What Does Java Do For Mac File
Q: I have Oracle's version of the JRE installed, but when I try to use java from the command line, it does not work.
What Does Java Do For Mac Computers
A: Installing a JRE from Oracle does not update java -version symlinks or add java to your path. For this functionality, you must install the full JDK.