Up until now, official Java releases for the Mac only came from Apple. This week Oracle released their first version of Java 7 SE update 4 for Mac OS X. Grab it from here. Instructions for the install are here.
Setting JAVA_HOME on Mac OS X
Some time ago I had set JAVA_HOME in my .profile on Mac OS X to the following:
JAVA_HOME=/Library/Java/Home; export JAVA_HOME
To some extent this works, but it doesn’t apparently pick up your preferred JDK version that you can set via the Java Preferences app in /Applications/Utilities (you set your preferred version by dragging your choice to the top of the list).
To set JAVA_HOME to be set to your preferred version, use this instead:
JAVA_HOME=`/usr/libexec/java_home`; export JAVA_HOME
This post here talks about the first approach, but there’s a comment in response to the post that points out the second point.
Oracle v Google court case started this week: in my own words, here’s a summary of the proceedings so far
If you haven’t been following, Oracle’s lawsuit against Google and their allegations that they ‘stole’ Java to develop Android is in court this week. Groklaw as usual are doing a stellar job to report on the proceedings (Monday, Tuesday, & Wednesday), although nothing earth shattering has happened so far.
Here’s the summary, wording is entirely my own, somewhat loosely based on my understanding of the facts 🙂
Ellison: you stole Java Page: no we didn't Ellison: ok, then you didn't license it Page: we didn't license it because we couldn't come to an agreement on the terms with Sun, so we developed our own version based on Apache Harmony Judge: did Apache Harmony license Java? Page: no, because they didn't agree to Sun's licensing terms either, in particular the 'field of use' restrictions that limited what types of devices a particular version (SE vs ME) of the JVM can run on, that limits SE for example to only run on desktops and not on mobile devices Ellison: but the fact is, to develop your own version of Java, you should have licensed the TCK to verify that this was/is a valid version of Java Page: but it's not Java, its Dalvik. We've never said it is Java or is called Java Ellison: ok, then you should have licensed Java to build a new version of the language using the Java API spec Page: is there a license for the API spec? The Java language API is freely available without a license, is it not? Silence.
Ok. In a nutshell this is my understanding of where the discussions are so far. There seems to be a disagreement whether a license is required or even available to take the API spec for Java and develop your own version of the language. Based on the summaries from the Groklaw site, I get the impression Ellison’s team are accusing Page of things that they’re not sure of themselves – is a license available and/or required to use/read the Java language API spec? I’m not sure, but this is what seems to be the current discussion point.
Also if you build something that is functionally similar to Java, but you don’t call it Java and you don’t pretend to even call it Java, is it Java? If you haven’t blatantly copied copyright code, you rewrote the code again yourself in a cleanroom environment, then have you broken the law? Stay tuned as the court case continues in the coming days (weeks… months….)
Troubleshooting your app on Red Hat’s OpenShift
My hosted server seems to not be responding or I’m getting a blank page instead of seeing my app:
- Try tailing your server log and then hit your app to see if you’re getting errors:
rhc-tail-files -l your_account_id -a your_app_name
- Give your account password and/or ssh passphrase when prompted
If you’re seeing exceptions from your app, this should give you a clue what’g going wrong.
If you’re seeing a a line in the log like this:
2012/04/03 13:08:59,601 INFO [org.jboss.as.jpa] (MSC service thread 1-2) JBAS011403: Stopping Persistence Unit Service 'ROOT.war#persistenceUnit' 2012/04/03 13:09:00,152 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment ROOT.war in 20354ms
… then for some reason your app was stopped, and needs to be restarted manually. There are some ongoing issues in the OpenShift environment currently that Red Hat is investigating where apps are left in a stopped state (possibly related t your deployment taking too long and timing out).
Can I browse through my log files on the server?
- ssh to your server, by getting the URL to your app from the online Console: https://openshift.redhat.com/app/console/applications
- Click on the Details button for your app, and if the git repo looks like this:
ssh://long_string_here@your_app_name-your_domain_name.rhcloud.com/~/git/your_app_name.git/
… then the url to ssh to your server is this part:
long_string_here@your_app_name-your_domain_name.rhcloud.com
Ssh like this:
ssh long_string_here@your_app_name-your_domain_name.rhcloud.com
… enter your ssh passphrase when prompted. Your log files are in your_app_name/logs/ – the current log is server.log and there are copies of each log for each previous day. You can use common utils like vi/less/more/cat etc to view your files.
How do I check on the status of my app?
- rhc-ctl-app -l your_acount_id -a your_app_name -c status
… this will show the status, either RUNNING, STOPPED, or if there is maintenance currently in progress you may see this message:
MESSAGES: OpenShift is currently being upgraded, some services may be unavailable.
How do I manually restart or start my app?
- rhc-ctl-app -l your_acount_id -a your_app_name -c restart | start