TechBrew

Informative geekery on software and technology

Slick JavaFX Demo

June 20th, 2007 by Mark Woodman

Music PinboardSome remarkable apps written in JavaFX are starting to appear in the wild, seemingly proving the promise of rich application interfaces with short development times. One I came across this morning is the Canoo Music Pinboard, a proof-of-concept that gets its inspiration from Apple iTunes.

According to the Canoo blog, the developers built the app in 8 days with no prior experience in JavaFX proper.

You start by typing in the name of an artist, and it will load matching albums from Amazon, photos from Flickr, and videos from YouTube into a flip-cover style interface. The photos can be clicked to show a larger size, and the videos can be played inline as well. Very slick for 8 days work.

The Canoo teams described their efforts in a blog entry:

We should stress at this point that the purpose of music pinboard is definitively not to compete with the likes of musictonic and iTunes – the two applications, which inspired music pinboard’s design and scope. This was pure technology exploration.

So what did we conclude from our experience with music pinboard?

The short conclusion is: Yes, it definitely is possible to create high-impact applications in a short time-frame with JavaFX Script, especially when given an opportunity to exploit existing code, as well as some of the great web-services that are out there in cyberspace.

Music Pinboard is available here via Java WebStart (5.4MB): Java WebStart

Trackback URI | Tags: News

8 responses so far ↓

  • 1 Garth // Jul 6, 2007 at 5:21 am

    It is slow loading and then errors out before executing..

  • 2 Mark Woodman // Jul 6, 2007 at 7:56 am

    Not sure why. If you haven’t run Java WebStart apps before, you should make sure you have the latest JRE, etc. I haven’t run into anybody else who has a problem, but it might help to talk to the Canoo folks about it.

  • 3 Garth // Jul 6, 2007 at 10:48 am

    Hello,
    I have run Web Start many times. I have also run other JavaFX demos. I am excited about the technology. I am running jdk 1.5.0_09. I am getting following error.
    It may be a firewall issue.

    java.lang.reflect.InvocationTargetException
    at java.awt.EventQueue.invokeAndWait(Unknown Source)
    at javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
    at net.java.javafx.typeImpl.F3Shell.main(F3Shell.java:36)
    at net.java.javafx.FXShell.main(FXShell.java:6)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
    at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
    at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.defineClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.access$100(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at net.java.javafx.typeImpl.TypeFactoryImpl$ModuleImpl.getTypeInternal(TypeFactoryImpl.java:6331)
    at net.java.javafx.typeImpl.TypeFactoryImpl$ModuleImpl.getTypeInternal(TypeFactoryImpl.java:6289)
    at net.java.javafx.typeImpl.TypeFactoryImpl$ModuleImpl.getType(TypeFactoryImpl.java:6227)
    at net.java.javafx.typeImpl.Compilation.buildCompilationUnit(Compilation.java:1009)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl$2.resolveType(Compilation.java:286)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl$2.resolveType(Compilation.java:333)
    at net.java.javafx.typeImpl.ExpressionParser.getType(ExpressionParser.java:386)
    at net.java.javafx.typeImpl.ExpressionParser.localOperationDefinition(ExpressionParser.java:6906)
    at net.java.javafx.typeImpl.ExpressionParser.objectLiteral(ExpressionParser.java:2161)
    at net.java.javafx.typeImpl.ExpressionParser.allocationExpression(ExpressionParser.java:4069)
    at net.java.javafx.typeImpl.ExpressionParser.primaryExpression(ExpressionParser.java:7556)
    at net.java.javafx.typeImpl.ExpressionParser.postfixExpression(ExpressionParser.java:4977)
    at net.java.javafx.typeImpl.ExpressionParser.unaryExpression(ExpressionParser.java:4852)
    at net.java.javafx.typeImpl.ExpressionParser.multiplicativeExpression(ExpressionParser.java:4759)
    at net.java.javafx.typeImpl.ExpressionParser.additiveExpression(ExpressionParser.java:4727)
    at net.java.javafx.typeImpl.ExpressionParser.relationalExpression(ExpressionParser.java:4694)
    at net.java.javafx.typeImpl.ExpressionParser.instanceOfExpression(ExpressionParser.java:4668)
    at net.java.javafx.typeImpl.ExpressionParser.logicalExpression(ExpressionParser.java:4636)
    at net.java.javafx.typeImpl.ExpressionParser.expression(ExpressionParser.java:4365)
    at net.java.javafx.typeImpl.ExpressionParser.expressionList(ExpressionParser.java:4114)
    at net.java.javafx.typeImpl.ExpressionParser.allocationExpression(ExpressionParser.java:4046)
    at net.java.javafx.typeImpl.ExpressionParser.primaryExpression(ExpressionParser.java:7556)
    at net.java.javafx.typeImpl.ExpressionParser.postfixExpression(ExpressionParser.java:4977)
    at net.java.javafx.typeImpl.ExpressionParser.unaryExpression(ExpressionParser.java:4852)
    at net.java.javafx.typeImpl.ExpressionParser.multiplicativeExpression(ExpressionParser.java:4759)
    at net.java.javafx.typeImpl.ExpressionParser.additiveExpression(ExpressionParser.java:4727)
    at net.java.javafx.typeImpl.ExpressionParser.relationalExpression(ExpressionParser.java:4694)
    at net.java.javafx.typeImpl.ExpressionParser.instanceOfExpression(ExpressionParser.java:4668)
    at net.java.javafx.typeImpl.ExpressionParser.logicalExpression(ExpressionParser.java:4636)
    at net.java.javafx.typeImpl.ExpressionParser.expression(ExpressionParser.java:4365)
    at net.java.javafx.typeImpl.ExpressionParser.variableDeclaration(ExpressionParser.java:762)
    at net.java.javafx.typeImpl.ExpressionParser.statement(ExpressionParser.java:1196)
    at net.java.javafx.typeImpl.ExpressionParser.statementList(ExpressionParser.java:676)
    at net.java.javafx.typeImpl.ExpressionParser.operationDefinition(ExpressionParser.java:6613)
    at net.java.javafx.typeImpl.ExpressionParser.modelStatement(ExpressionParser.java:2888)
    at net.java.javafx.typeImpl.ExpressionParser.modelStatements(ExpressionParser.java:2857)
    at net.java.javafx.typeImpl.F3ParserImpl.modelStatements(F3ParserImpl.java:104)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl.parse(Compilation.java:625)
    at net.java.javafx.typeImpl.Compilation.declareAndParseUnits(Compilation.java:691)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl$2.resolveType(Compilation.java:289)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl$2.resolveType(Compilation.java:333)
    at net.java.javafx.typeImpl.ExpressionParser.getType(ExpressionParser.java:386)
    at net.java.javafx.typeImpl.ExpressionParser.attributeDecl(ExpressionParser.java:3797)
    at net.java.javafx.typeImpl.ExpressionParser.typeDefinition(ExpressionParser.java:3952)
    at net.java.javafx.typeImpl.ExpressionParser.modelStatement(ExpressionParser.java:2972)
    at net.java.javafx.typeImpl.ExpressionParser.modelStatements(ExpressionParser.java:2857)
    at net.java.javafx.typeImpl.F3ParserImpl.modelStatements(F3ParserImpl.java:104)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl.parse(Compilation.java:625)
    at net.java.javafx.typeImpl.Compilation.declareAndParseUnits(Compilation.java:691)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl$2.resolveType(Compilation.java:263)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl$2.resolveType(Compilation.java:333)
    at net.java.javafx.typeImpl.ExpressionParser.getType(ExpressionParser.java:386)
    at net.java.javafx.typeImpl.ExpressionParser.attributeDecl(ExpressionParser.java:3797)
    at net.java.javafx.typeImpl.ExpressionParser.typeDefinition(ExpressionParser.java:3952)
    at net.java.javafx.typeImpl.ExpressionParser.modelStatement(ExpressionParser.java:2972)
    at net.java.javafx.typeImpl.ExpressionParser.modelStatements(ExpressionParser.java:2857)
    at net.java.javafx.typeImpl.F3ParserImpl.modelStatements(F3ParserImpl.java:104)
    at net.java.javafx.typeImpl.Compilation$CompilationUnitImpl.parse(Compilation.java:625)
    at net.java.javafx.typeImpl.Compilation.declareAndParseUnits(Compilation.java:691)
    at net.java.javafx.typeImpl.Compilation.doCompile(Compilation.java:947)
    at net.java.javafx.typeImpl.Compilation.compile(Compilation.java:749)
    at net.java.javafx.typeImpl.Compilation.compile(Compilation.java:731)
    at net.java.javafx.typeImpl.F3Shell$1.run(F3Shell.java:93)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

  • 4 Mark Woodman // Jul 6, 2007 at 2:27 pm

    Looks like you should talk to the Canoo guys about this. (I didn’t have anything to do with developing this, so I can’t do much to troubleshoot it, sorry.)

  • 5 sudarshan // Aug 8, 2007 at 10:55 am

    Hi Garth
    You need java 1.6 .
    I have 1.6.0-beta2 and it works fine

  • 6 SVA Search // Aug 1, 2008 at 5:10 am

    But i feel it takes a little too long to load up !

  • 7 Blog Xebia France - Revue de Presse Xebia // Aug 4, 2008 at 10:02 am

    [...] Slick JavaFX Demo [...]

  • 8 Confluence: Informatics Users // Aug 7, 2008 at 1:31 am

    Continuity Idea…

    Continuity idea Using JavaFX !ContinuityIdea.png thumbnail! Have links to previously used components on the left where the ‘Similar’ list is On the left where they have ’similar’ we could have links to last used components…….

Leave a Comment