Rough Book

random musings of just another computer nerd

Tag: dsl

Running the JavaFX 1.1 SDK on Linux

This is an update to my instructions on running the JavaFX 1.0 SDK on Linux. Those instructions do not work on the dmg image for the 1.1 version of the SDK.

Mike (thanks Mike!) posted a comment on that blog mentioning a small change that needed to be made. To get JavaFX 1.1 on Linux, first follow the steps in the original guide. When you need to mount the dmg, you need to provide an offset. So instead of the original command, do the following:

[email protected] ~
$; sudo mount -o loop,offset=$((1024*17)) -t hfsplus javafx_sdk-1_0-macosx-universal.dmg.out javafx

The dmg should be mounted now.

Running the JavaFX 1.0 SDK on Linux

The JavaFX 1.0 SDK was released today. I’ve played with the preview SDK, so I was pretty excited to try out the 1.0 SDK. Inexplicably, and this was the case with the preview SDK as well, Sun hasn’t released a version of the SDK for Linux. However, this wasn’t a problem because it was possible to run the Mac version of the Preview SDK on Linux. The preview SDK came in the form of a zip, but the 1.0 SDK comes in the form of a dmg, so I was initially stumped. But I’ve figured out how to get the Mac version of the SDK to work on Linux. It’s a little more complicated than getting the preview SDK to work, but it works!

The thing about dmg files is that you can easily mount them on Linux since they are essentially stored in the HFS Plus filesystem format. So I immediately set about trying to mount it:

[email protected] ~
$ mkdir javafx

[email protected] ~
$ sudo mount -o loop -t hfsplus javafx_sdk-1_0-macosx-universal.dmg javafx
[sudo] password for vivin: 
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Hmm… ok, that wasn’t what I expected, so I tried to see what type of file it was:

[email protected] ~
$; file javafx_sdk-1_0-macosx-universal.dmg
javafx_sdk-1_0-macosx-universal.dmg: bzip2 compressed data, block size = 100k

Ok, so it look’s like it’s a bzipped file. All we need to do then, is bunzip it and mount it:

[email protected] ~
$ bunzip2 javafx_sdk-1_0-macosx-universal.dmg
bunzip2: Can't guess original name for javafx_sdk-1_0-macosx-universal.dmg -- using javafx_sdk-1_0-macosx-universal.dmg.out

bunzip2: javafx_sdk-1_0-macosx-universal.dmg: trailing garbage after EOF ignored

[email protected] ~
$ sudo mount -o loop -t hfsplus javafx_sdk-1_0-macosx-universal.dmg.out javafx

[email protected] ~
$ ls javafx
javafx_sdk-1_0.mpkg

Awesome! So we were able to get the dmg mounted. Now all we need to do is find were the SDK lives. After going through the dmg, I found out that the SDK is stored in a compressed (gzipped) file. You can find it at <mountpoint>/javafx_sdk-1_0.mpkg/Contents/Packages/javafxsdk.pkg/Contents/Archive.pax.gz. Copy this file into another working directory (or wherever you want your SDK to reside. I put mine in /usr/local):

[email protected] ~/working
$ cp ~/javafx/javafx_sdk-1_0.mpkg/Contents/Packages/javafxsdk.pkg/Contents/Archive.pax.gz .

[email protected] ~/working
$ gunzip Archive.pax.gz

[email protected] ~/working
$ file Archive.pax
Archive.pax: ASCII cpio archive (pre-SVR4 or odc)

When I gunzipped the file, I got Archive.pax, and I wasn’t sure what to do with it. So I ran file on it and discovered that it was a cpio file. Some quick Googling and man-page perusal later:

[email protected] ~/working
$ cpio -i <Archive.pax
65687 blocks

[email protected] ~/working
$ ls
Archive.pax  COPYRIGHT.html  lib          profiles     samples     src.zip                      timestamp
bin          docs            LICENSE.txt  README.html  servicetag  THIRDPARTYLICENSEREADME.txt

[email protected] ~/working
$ bin/javafx

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -d32          use a 32-bit data model if available

    -d64          use a 64-bit data model if available
    -client	  to select the "client" VM
    -server	  to select the "server" VM
    -hotspot	  is a synonym for the "client" VM  [deprecated]
                  The default VM is server, 
                  because you are running on a server-class machine.

    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -jre-no-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                    see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument

As you can see, you now have a working JavaFX 1.0 SDK on your Linux box!

JavaFX: The New Hotness

I went to JavaOne a few months ago. It was a pretty neat experience and I learnt a lot of cool things. One of the things Sun was touting was the JavaFX family of technologies. It allows you to create RIA (Rich Internet Applications) using JavaFX Script, a domain-specific language built on top of Java. The demos were pretty impressive and it looks like Sun’s answer to Flash and Silverlight. I went to a few JavaFX sessions and I signed up for the preview SDK, which came out a few weeks ago. Since then, I’ve been playing around with the language to see what it can do. The language is pretty neat and being dynamic, has some pretty cool features like closures, list comprehension, lazy/incremental evaluation (through binding), and triggers. In addition, it uses a declarative model (although you can still use the traditional model) for describing a GUI. The API provides Swing components, but I believe the intent is to completely move away from that and use only JavaFX GUI components.

Calendar widget

Using a language that is only in preview is pretty interesting. The API is unfinished and the language isn’t completely mature, but this is to be expected. That being said, it still looks promising and seems to be a very capable and expressive language. Also, seeing as it is built on top of Java, you have access to all of Java’s rich API in addition to the numerous third-party Java libraries and API’s that are out there. I’ve been playing around with it for the last week or so and I was able to write a small calendar widget. It simply shows a month view for the current month, with the current date highlighted. I haven’t had much experience with writing GUIs in Java, so it took me a while to figure it all out. I shamelessly stole the colour gradient background from one of the demos in the preview SDK. The only issue I have right now is the load-time of the widget. It seems to take a while when you load it first. I don’t know if it has to do with the way I coded it or not. I’m pretty sure I’m not doing it the best way, but I expect to get better once I get more familiar with the language.

Here’s a screenshot of the widget running on Firefox 3 on my Ubuntu laptop (the theme is a Leopard theme):

Calendar widget

I have more details on the project page.

Bumped Up

I bumped up my line speed from 640k/256k to 1.5M/896k. Expect faster downloads from here!

Finally Back

So I’m finally back online. I’ve moved into my new apartment and everything is set up nice and pretty. Woohoo! It took me for ever to get my DSL because the people at Qwest decided that they just didn’t feel like setting up my DSL. The trouble I went through… jeez… Well, anyway. It’s up and running now. My job at Motorola is great. I’m having so much fun.

What’s gonna be on this website? No idea… hmm… What I’m planning anyway is to get an old P3 and run the webserver on that. I want to use my current server as a desktop… Should be fun…

FreeBSD machine configured

My FreeBSD machine is configured to the Cisco 678… I just need to figure out how to configure sharity light again… Hmm… Oh yeah, I took out the 20Gb harddrive from the XP box and put it into the FreeBSD box. FreeBSD recognizes it. No surprise.

Cisco 678

Got my Cisco 678 modem today. It’s set up and seems to be running fine. Ran into a few quirks (why does this always happen to me?) but ironed it all out. Need to configure my FreeBSD machine now.

New DSL modem, a possiblity of Employment and not going to California

Qwest is sending me a Cisco 678. The 675 doesn’t work with our current line. Also, using the Intel Pro/DSL 3200 USB modem is a pain. It royally sucks. Plus, my FreeBSD machine doesn’t recognize it. If I get the 678, I can just hook it up to the uplink port of the hub and then plug all the other computers in. Also, I’m buying ip’s, so I can set up the XP and FreeBSD boxes as servers. I’ll be transferring all my stuff from Marc’s server to mine then. I’ll finally have my own webserver.

My professor just informed me that I apparently I am a selection at Motorola. However, the decision hasn’t been finalized yet, so it’s still in the air. It’s good to know though… I was beginning to wonder if I had made it.

I’m cancelling my trip to California for thanksgiving. Lab 9 is going to be hard, and I need to spend all my time on it. It sucks… but oh well. Michael and I are planning to have a little thanksgiving dinner at our place. It should be fun.

Metallica Sucks

Hey! How’s it going? My exams get over tomorrow… actually TODAY!!!… YESSSSS!!!! HAHAHAHA! Free at last… three glorious weeks of doing what I like most – ABSOLUTELY NOTHING! Except playing StarCraft and watching TV and partying and stuff like that… Oh yes… So Metallica has gone and tattled on Napster. Publicity stunt. Well, a certain someone I know, got banned because of that. But I there is a way to get around it. I believe Napster has banned people based on the IP/Username combination. If you have a dynamic IP then I guess you should have no problem. First of all, uninstall Napster and then re-install it (Beta 6 is out). When it asks you if you want to use the existing user, click “No”. Now use a different name. It should let you log in. This certain someone I know, couldn’t at first so he unplugged his DSL modem (yeah… he has a DSL modem too) and plugged it back in so that he got a new IP adress. That got him through. As a disclaimer, this information is for educational purposes only and you agree that you will not hold me responsible for the legal consequences (if any) that might arise from the use of this information. Well… I guess that’s it. So I’ll see you all after the exams… I’ll put stuff here… If I’m not having too much fun that is! 😉 Adios!

DSL Kicks Ass!

Hey everyone… Finals are here and they get over on the 10th… so you MIGHT see stuff up here. I’m thinking of doing a little work on the links page and adding some stuff here and there. I should be getting my scanner this week. HP said that they’re gonna send me a new one. You should be seeing some pics here then. As for the DSL, I must say it TOTALLY ROCKS!!! I’m doing 640kbps upstream… heheheh awesome huh? Right… I have to go now and do a CSE assignment… so I’ll see you all after the finals. Later…

All original content on these pages is fingerprinted and certified by Digiprove
%d bloggers like this: