F3 - Functional GUI Development for Java

Chris Oliver has been blogging about F3, a soon-to-be-open-sourced functional programming framework for Java. It's statically typed, comes with an Eclipse plugin, and does some pretty cool dataflow/dependency management. It reminds me of SuperGlue, from McDirmid and Hsieh.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Should a GUI be programmed at all?

F3 certainly looks interesting. While the visual output can probably be "competing or superior" to Flash and DHTML, the loading time of the applet (or the app using javawebstart) is unlikely to improve so it is not a solution for web clients, even though so many are java-enabled today.

It is definitely good to create graphics declaratively, as opposed to an imperative plate of spaghetti.

But I also wonder if it is not a more viable approach to have something existing like SVG that can be generated with any vector drawing program, and then enhance it with a few calls/hooks to link the thing to code. This duplication of effort seems awkward, and graphics design should be done by artists not programmers.

good question

I don't think Chris Stolte's research has been mentioned before on LtU. While his PhD dissertation is, unfortunately, not available on the web, his company certainly is. Stolte defines a GUI 'algebra' which can be mapped to 'relational algebra' (I read his stuff a while ago so this description may not be exact).

As far as I know, no one has done any work on taking data structures from functional programming (cons lists/sets/trees) and operations on those structures (catamorphism?) and figuring out how they can be visualized. I write this with the following in mind: according to Grust's work, the whole of SQL can be modeled by catamorphisms on monads...so interesting work like Stolte's stands to be generalized much further?

You need programming for dynamic behavior

You're absolutely right, Burak. Artists are needed to create attractive user interfaces. Currently, we have a translator from SVG to F3 which allows you to incorporate graphic elements created in vector drawing tools such as Inkscape or Illustrator directly into F3 programs.

In addition, unlike in SVG, with F3 it's also possible to create dynamic content in a declarative way (as opposed to manipulating the SVG DOM procedurally). Here's an example with a JTable, but the same approach can be applied to 2d graphics.


This release-date mystery getting to be too much :)

Loading time...


I think F3 platform is not in competition with SVG & Flash, rather it would be an interesting competitor to Rich Client delivery platforms like XAML (XML)(MS), Apollo (???)(Adobe) and Flex (Flash/???)(Adobe/Macromedia), Laszlo (???)/(OpenLaszlo).

There is a rather large segment of web based application providers and right now they don't have a viable mean of delivering and managing the deployment of that kind of client applications. AJAX is too, should I say, quirky and unmanagable as far as development and maintenance goes. The "J" part quickly becomes the bottleneck. People "like" Oracle who currently deploy their ERP application with an Applet/HTML front-end might be interested.

It'd be interesting to see the rich client landscape if SUN is able to pull off this stunt. I'm always confident of their enginnering, but their marketing and evangelism departments have issues.

On the language side, the declarative approach is novel. I'm studying the short spec Chris has published. It looks great, but I'm not really sure how large scale development would go.

Chris, do you have plans for a Flash/Matisse like GUI designer for F3 ?