JDK in Mac OS X - macos

I found two JDK in my Mac,
one is in the path:'/System/Library/Java/JavaVirtualMachines/1.6.0jdk'
another is in the path:'/Library/Java/JavaVirtualMachines/1.7.0jdk'
what's the different? why there are two?

The /System/Library/Java/JavaVirtualMachines/1.6.0jdk is the JDK that Apple used to distribute with their operating system. They have since stopped providing a JDK and have left it up to the owner of the Java platform, Oracle, to provide the latest JDK and /Library/Java/JavaVirtualMachines/1.7.0jdk is the JDK provided by Oracle.
The difference is simply the version and vendor (provider) of the JDK. It's perfectly fine to have multiple JDKs on your system.

Related

codenameone Cant Open Designer or Settings

I've a new computer with Debian 9 / 64bits.
After installing Netbeans 8.2 and Codename Plugin 5.0 if i try to open "CodenameOne Settings" or "CodenameOne Designer" nothing happens.
I've checked JRE_JAVA and JDK_JAVA and PATH environment variables and them points to the correct path.
I don't see any error message but the tools dont start.
I dont know what happens but i remember a similar issue in the old computer with Debian 6 / 32bits.
Can anybody help me?
Thanks a lot
Ramon Garcia
The default version of Java on Linux systems is OpenJDK which is a bit problematic due to its lack of JavaFX support. With newer JDKs we updated Codename One to download JavaFX dynamically as it was removed from the JDK but since the dynamic download only works with JDK 10 or newer (due to the way the people at Oracle compiled JavaFX) this would be the minimum version of OpenJDK.
So you can either install Oracle JDK 8 or Open JDK 11 to keep compatibility.
Notice you can track this issue by running the designer/gui builder from the command line and seeing the point of failure: https://www.codenameone.com/blog/tip-track-designer-guibuilder-issues.html

ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver on OS X Yosemite

I use the version of Java 7 that comes with OS X Yosemite. My understanding is that Oracle by now ships Java DB (i.e. Derby) with Java, so perhaps I have it already installed.
I currently get a ClassNotFoundException when attempting Class.forName("org.apache.derby.jdbc.EmbeddedDriver").
Am I supposed to somehow add the driver from a local directory, or do I have to get it extra (e.g. because OS X comes with a JRE but not JDK)?
If the second is true, where should I get it from (i.e. are there any differences between drivers from Apache and Oracle)?
Although Derby (or JavaDB) is installed together with the JDK (at least with Java 7, not sure if they still do with Java 8), it is not part of Java itself. This means you still need to include it in the classpath yourself.

How can I run JRE 7 on Mac 10.6

This may be a longshot, but I NEED to get Java JRE 7 running on Mac 10.6. The official documentation states
Mac OS X System Requirements
Intel-based Mac running Mac OS X 10.7.3 (Lion) or later.
Administrator privileges for installation 64-bit browser
Is there any way I can trick the java JRE 7 into installing itself on OSX 10.6? Is there some community version of a JRE 7?
It can be done, just follow what this answer suggests. I successfully installed JDK 7 update 11 a couple of weeks ago. However I have only used it for some development, and am not sure if it runs e.g. Swing apps without issues.
No.
Easiest is most likely to install virtual box and run Ubuntu inside.
EDIT: The comments indicate that this is not for hobby use but a client. I would personally never base a commercial solution on unsupported software, and I hope it has been made absolutely clear to the client what this can result in.
A better solution might be recompiling your Java program for Java 6 (use the Eclipse compiler with -source and -target) and run it under Java 6. If you cannot do this - as you said NEED - then open a new question asking how to backport that facility to Java 6.

Java 7 installer for Mac/Windows

I am programming software in Java 7. The users of the software are not all up to date (especially the Mac users). Therefore I need an installer (Windows/OSX) that can be easily integrated with the software installation. There is a normal installer for Windows 7 so I am especially focused on finding one for the Mac. Bonus points if it can check for XCode and other requirements too).
I am thinking another option would be to just use some of the libraries from Java 7 (for example the file-system library). However, I think this might not be possible due to the version number in the compiled classes? I couldn't use a Java 6 compiler to compile these libraries either (because they are Java 7 code).
I don't think I am the only one with this problem. There must be a solution somewhere, but I haven't found it.
Any help would be appreciated.
For the best user experience I would recommend using PackageMaker to create a .pkg file which you can then give to your Mac users. That allows them to do a single click-to-install of your app.
Within the package you would bundle your app archive (JAR file), any necessary resources and two scripts, one to check for the existence of Java 7 on the target system, and the other to install it if not found. I would recommend bundling the latest version of OpenJDK7 with your pkg, at least until an official Java 7 SDK is released for the Mac.
JAva 7 is not yet officially supported on Mac OS X, if you are looking for a JAva 7 installer for mac Os X take a look at openjdk-osx-build project on Google Code.
Update: You shouldn't need Java 7 for what your doing.
A better solution is to use Java 6 + Third party JNI libraries (i.e: JNotify,JavaXT...)
Directory listener in Java using JNotify
as for Last Accessed Date you might need to write tiny bit of Objective-C and pass it back via JNI
JNI Development on Mac OS X
Mac OS X already comes with Java runtime on Snow Leopard (JRE6)
On Lion it will automatically download JRE6 if application needs it's
You can of course download preview release of JDK7 from Oracle, but remember this is preview software there are some parts still not working yet (for example: Java Web Start)
Oracle JDK7u4 Mac OS X Port Developer Preview Release
Edit: Oracle JDK 1.7 Preview Release only supports Mac OS X Lion

Does Apple support Java 6 yet?

A while back I released an application in Java. While I targetted it for Java 6, I realized that there was a significant Macintosh user base. At the time, Apple had not gotten around to creating a JRE 6 for their users, so I had to make the application compatible with both Java 5 and 6.
Now I've returned to that project and realize that I can't support those users any more; Sun won't let me download the JDK 5 anymore because it's end of life. So I'm caught at a crossroads; as far as I can tell, PPC Mac users still don't have a JRE 6 to use.
So I ask this question: How do I resolve this predicament? I still want to support those users, but I simply don't have a JDK with which to build. Has Apple released a JRE 6 for their PPC users? Is there an alternate way to get JDK 5 (other than becoming a business member of Sun)? Is there some alternative recommendation to supporting these users?
Regards,
-- Shirik
EDIT: Some additional info, if Apple has released Java 6 for PPC, how easy is it to get? I ask this because I'm still constantly seeing logs from my users which indicate PPC architecture with a Java 5 VM.
You could use -target 1.5 -source 1.5 with your Java 6 JDK, to generate 1.5-compatible class files.
You can download Java 5 from Sun. You just have to look in the right place.
http://java.sun.com/javase/downloads/previous.jsp - J2SE 5.0, 1.4.2, 1.3.1
http://java.sun.com/products/archive/ - all releases going back to JDK 1.1
Note that these are all existing public releases. The material you got from Sun would have said there would be no new public releases of Java 5.0. They were pointing out that if you needed patches for recently discovered security issues and other bug fixes for Java 5.0 etc, you would have to pay for them.
Obviously, JDKs for Apple platforms are not available from Sun, but this is nothing to do with the fact that Sun have "end-of-lifed" Java 5.0. The fact is that they have never been available from Sun ...
Having said that, in the long term you need to be able to migrate your application to Java 6.0, 7.0 (due out later this year) and so on. At some point you are going to have to draw the line and say "sorry ... no more updates" for the shrinking number of users with old PPC and 32-bit Intel Macs.
As far as I know, Apple has only released Java 6 for x86-64, and I'd be willing to bet my hat that they will never release Java 6 for either PPC or for plain old 32-bit x86 (note that every Mac released after about mid-2007 or so is x86-64).
Soylatte might work (I have not tried it myself).
If you want to support older platforms, including PowerPC macs, it is a good idea to write code that can run on older Java releases. These days Java 5 is a relatively safe bet, but you may want to go even further and e.g. use retroweaver to generate Java 1.4.
You can download a version of the OpenJDK 1.7 from intricatesoftware.com
it is, unfortunately, a headless build of the JDK; i.e., can't open a display, and hence can't use to run IntelliJ, but Eclipse runs on it just fine.
I'm running it on 10.5.8, on a PPC ("cheese grater",) with Eclipse 4.3.2 / Kepler, and it all seems to work fine. :-)
(though, in honesty, a new configuration on the box, so we'll see how it goes over time)

Resources