FX Experience Has Gone Read-Only
I've been maintaining FX Experience for a really long time now, and I love hearing from people who enjoy my weekly links roundup. One thing I've noticed recently is that maintaining two sites (FX Experience and JonathanGiles.net) takes more time than ideal, and splits the audience up. Therefore, FX Experience will become read-only for new blog posts, but weekly posts will continue to be published on JonathanGiles.net. If you follow @FXExperience on Twitter, I suggest you also follow @JonathanGiles. This is not the end - just a consolidation of my online presence to make my life a little easier!
tl;dr: Follow me on Twitter and check for the latest news on JonathanGiles.net.
by Jonathan Giles | Nov 27, 2011 | Links
A heap of interesting links this week, so I’m going to skip the introduction and get right into it. Enjoy! π
That’s all folks. Keep up all the great work and I’ll be back in a weeks time to cover everything that happens this coming week! π
by Jonathan Giles | Nov 20, 2011 | Links
Welcome to another week! π There is a heap of good links this week – it seems the quality of blog posts is certainly increasing these days! Keep it up folks π As always, I hope you enjoy some of the links below, and always feel free to email me links to include.
- I mentioned last week that the ThingsFX Swing-in-JavaFX project didn’t support key events, but that it was coming soon. In actual fact, I was wrong – it is already supported.
- Speaking of ThingsFX, one of the members of that team, Roman Kennke, blogged elsewhere about the Swing in JavaFX integration, and even put up a demo applet that shows the current implementation. As you’ll note, it is a little slow, but it shows a lot of promise once faster options are made available.
- Tom Schindl has released e(fx)clipse 0.0.8, and now e(fx)clipse also has an official website. This project is very exciting, so if you are an eclipse user and want top-notch JavaFX tooling support, you should check this out and provide feedback.
- Zonski continues blogging about his research and development with JavaFX 2.0. This week he talks about file downloading in JavaFX 2.0 (over HTTP).
- Johan Vos has blogged about visualizing REST XML data in JavaFX controls, making use of the DataFX project.
- Tom Eugelink follows up his JavaFX 2.0 bubblemark explorations after being told of a runtime switch for JavaFX 2.0 that removes the 60fps limit that JavaFX imposes.
- The slide deck that Stephen Chin and Peter Pilgrim used at Devoxx 2011 for their “JavaFX 2.0 – A Developer’s Guide” session is available online for those interested.
- Patrick Champion blogged about extending a JavaFX 2.0 control to add functionality. I should probably add that their are simpler ways to doing this in many cases, which I covered in a JavaOne talk called “Custom UI Controls and Charts with JavaFX 2.0“.
- Andre Hogenkamp has posted a second blog post about running JavaFX 2.0 in Linux (whilst awaiting official support from Oracle).
- Scott Hommel has blogged about using the JavaFX Screen API to determine the dimensions of the users screen.
- Eric Bruno blogged about JavaFX 2.0 binding APIs. Whilst it is a good blog to cover the main concepts of binding in JavaFX, it skips over some simpler options that are possible for the specific use case mentioned in the post. For example, rather than bind the TableView width/height to the scene width/height properties (and place them inside a Group layout), if a StackPane is used instead the TableView will grow automatically without needing any bindings. Similarly, some controls have their max width/height set to the pref width/height, so it is simply a matter of calling, say, button.setMaxHeight(Double.MAX_VALUE) to have them grow automatically when placed in a relevant layout.
- I’ve come across two JavaFX-related projects on GitHub that people may be interested in, but unfortunately no related websites for further details. Firstly, user ‘nahi’ has JRubyFX, and user ‘skrb’ has SVGLoader. Fortunately the project names are fairly self-explanatory π
Keep up the great work folks. Catch you all in a weeks time.
by Jonathan Giles | Nov 13, 2011 | Links
Here we go again – this week there are a heap of JavaFX links, so I’m just going to get right in to it – enjoy! π
- Kai TΓΆdter has blogged about ‘Eclipse 4.x RCP + JavaFX Renderer‘. Of particular interest is the three screenshots, that show quite different styling in JavaFX that is achieved with minimal changes to the CSS.
- Mario Torre did a quick status update blog post about the work he and his colleagues are doing to allow for Swing to be embedded within a JavaFX scene. The latest post indicates that they now have proper focus support, and that they are next planning on adding keyboard events.
- In a separate post, Mario showed a small demo application he created that shows JavaFX creating 3D scenes (in the sense that you’ll need 3D glasses to see the effect).
- Roman Kennke created a HyperTree renderer in JavaFX. Both the source code, and a live demo, are available for your viewing pleasure.
- Niklas Hofmann has put up a PDF detailing the JavaFX properties and binding API.
- Rob Mayhew has blogged about JavaFX 2.0 layout using MigLayout / MigPane.
- Tom Eugelink has ported the bubblemark benchmark to JavaFX 2.0, and has some interesting findings.
- Lawrence McAlpin has blogged about ‘cooler javaFX kreations‘, which demonstrates use of animation, controls and FXML.
- Andre Hogenkamp has blogged about a (hacky) way of getting JavaFX 2.0 to work in Linux, whilst the official support is still forthcoming. It involves using Wine, and obviously has limitations.
- Bertrand Goetzmann has put up another video showcasing his Grezi application, this time making use of GraphViz to lay out nodes in the scene.
- Johan Vos and I put up a new release of DataFX, taking the release version to 0.0.3. This release has updated RedFX support, as well as the TableViewFactory class that can help auto-configure a TableView for you. I plan to continue to improve this class as time allows, as it is very minimal right now.
Well, that’s it for another week. Hope you found something useful. Catch you in a weeks time! π
by Jonathan Giles | Nov 6, 2011 | Links
Another week, another round of links from the JavaFX world. I hope you all find something of interest. Enjoy! π
- Continuing on from last weeks mention of the OpenJFX project being ‘formally discussed’, it has now been formally proposed as an OpenJDK project. Voting is currently underway, with voting closing on November 16. Following this, if everything goes to plan, the first release of JavaFX source code (the UI controls library) will follow shortly thereafter.
- A new JavaFX 2.0 Mac OS Developer Preview release came out last week, taking the build number up to 07.
- The ThingsFX project was launched this week by Robert
Branchat, Mario Torre, and Roman Kennke. This project is the new home of the link I blogged about last week where they have enabled embedding Swing inside JavaFX (the opposite of what is supported natively in JavaFX). They also put up a few blogs about this feature. Firstly, they demonstrated embedding a Swing button inside JavaFX, then JFreeChart inside JavaFX, and finally an image processing example.
- Tori Wieldt, blogging for The Java Source, has blogged on the topic of ‘What is JavaFX?‘. Of particular interest to many, she links to a number of upcoming talks at various conferences.
- FXForm2, a dynamic JavaFX 2.0 form generation library, has been updated.
- Zonski continues his explorations of JavaFX with FXML in a blog post titled ‘Client Server with JavaFX 2 and Hessian (+Guice +FXML)‘.
- Wayne Young has a post about configuring JDeveloper for JavaFX 2.0 development.
- Gail Anderson continues her series of blog posts, this week her post covers adding animation with JavaFX.
- Peter Pilgrim has put online a video walkthrough of using ScalaFX.
- Narayan has blogged about a way to enable saving a JavaFX node or scene to an image file.
That’s all for another week. Keep up the great work folks and I’ll be back in a weeks time to highlight everything you’ve been up to! π
by Jonathan Giles | Oct 30, 2011 | Links
Here we go for another week! π It seems the number of JavaFX links is really starting to pick up after JavaOne. The most notable news this week was that Oracle has started the open source discussion. Find all the details, and plenty of other interesting links, in this weeks JavaFX links roundup!
- This week we made our next move along the road of open sourcing JavaFX, with Richard Bair posting a message to the OpenJDK discuss mailing list. Additionally, he blogged about the plans. As we’ve mentioned, we really encourage your feedback and participation in this project!
- Zonski continues his series of blogs on FXML and controller injection (with Guice). This week there are four blog posts from him: “Multiple Controllers with Shared Resources“, “Views within Views, Controllers within Controllers“, “Generic Controllers“, and “Better Controller Injection with Guice“.
- Mario Torre blogged about work he and two colleagues have been doing to enable embedding Swing inside a JavaFX application (the opposite of what is officially supported in JavaFX 2.0 using the JFXPanel component).
Whilst not available currently You can see their work over at their GitHub repo, and elsewhere they have announced a willingness to contribute this back in to the open source JavaFX project.
- Tom Eugelink has announced an updated release of MigLayoutFX2 (also known as MigPane). This release adds support for the final JavaFX 2.0 release.
- Kai TΓΆdter has shown off the power of the JavaFX CSS styling functionality by making a dark style and showing how little CSS is required.
- The JavaFX team has its ears to the ground – we hear your feedback! The most recent example of this is the changes we’ve made to the need to have an OTN account to download the JavaFX 2.0 SDK. As announced earlier this week, this is no longer required.
- Along the same lines, the JavaFX documentation team is seeking your feedback on what you want them to write about. These guys do an amazing job, and they are always trying to find new documentation topics. If you feel something is under-documented, talk to them and you may just find a whole heap more documentation will start appearing on this topic.
- Steve Northover (previously involved with SWT, now working in the JavaFX team) has a talk at EclipseCon Europe 2011 on “JavaFX Past, Present and Future and Interop with SWT and Swing”. The talk is next week.
- Stephen Chin discusses JavaFX and the state of client-side Java in a YouTube video posted by O’Reilly.
- Gail Anderson has put up a blog post on building a JavaFX ‘Sketch Pad’ application using custom binding.
- Wayne Young has been playing around with JavaFX, most notably creating a JavaFX application that integrates JBox2D physics, a side scrollerΒ (with update), and a ‘crazy bookshelf‘. In all cases the code is there for you to explore and experiment with.
Hope you all enjoyed the links – catch you all in a weeks time! π
by Richard Bair | Oct 27, 2011 | Uncategorized
I just sent the following letter to the OpenJDK community “discuss” mailing list:
Hi OpenJDK community!
As announced at JavaOne we (Oracle) would love to contribute JavaFX into OpenJDK as a new project called “JFX”. For some who have been following along, we’ve talked about this for a long time but finally (finally!) we’re ready to act on it and open source the platform. We are not just interested in open sourcing the code, however, we also want to move into an open development model. We already have an open bug database[1]. The project uses Mercurial, so we should fit in pretty well into OpenJDK.
Our basic motivation for wanting to open source JFX is to built a community and ecosystem support and adoption around JavaFX by increasing transparency. Of course we are also interested in getting patches and early feedback from the community[2]! Our goal is to provide the next-generation Java client toolkit, and JFX would be the next step along that path, which hopefully culminates in a JSR for the Java 9 timeframe and including JFX as proper part of the JDK. I would be the initial Project lead for JFX.
A little bit about our project:
It is a significant contribution to the corpus of open source code
It includes over 6000+ public API members (methods / constructors / etc)
It includes over 11,500 unit tests
Core libraries such as observable collections and binding
Scene graph, effects, graphics
CSS support for JavaFX
Media
WebView
Prism (hardware accelerated graphics, including openGL and D3D and java2D implementations)
Glass (windowing system, base porting layer, including mac, linux, and windows implementations)
UI Controls and Charts
Our builds are all Ant, with JUnit for testing (there is some ‘make’ in there for native parts). We also have NetBeans projects setup for each area. There is a lot of code that we’ll be releasing, so as a matter of practicality we’re going to release different parts of JavaFX over the course of the next few months, starting with UI controls followed by charts. We’ll put up a full roadmap onto our project pages, should we be approved to become part of OpenJDK. We’ll make sure that the open source code is always fully buildable by anybody using the sources + a binary plug (which will become unnecessary as we open source the remaining pieces). All of the above listed modules will be open sourced and fully buildable.
What do you think? I’d love to hear any issues and hopefully be able to resolve those prior to requesting an official vote.
Thanks
Richard
[1] http://javafx-jira.kenai.com
[2] A good example of the sort of interesting stuff going on out there can be found here: http://jroller.com/neugens/entry/embed_swing_inside_javafx_2
This is the first step towards open sourcing JavaFX into OpenJDK. First I wanted to talk with the community about it, and if it looks favorable, I’ll follow up with an official project proposal. Here’s hoping! If you are a subscriber to “discuss”, please go and throw in some good word for the idea and if you have any questions I’d like to hear those too. If you aren’t a member of “discuss”, go join :-). You can do so here.
It feels good to finally be getting this all out in the open source!
by Jonathan Giles | Oct 24, 2011 | Links
Having been traveling for the last three weeks, I’ve not been able to post the weekly JavaFX links roundup. Today I’m trying to make up for this by posting all the links I gathered as I was traveling (and on vacation). There are two problems with this approach: 1) what follows is basically information overload, and 2) I almost certainly missed links. I hope you can all forgive me for this one time, and I also hope you find a heap of interesting links in this post (it took me a looonnggg time to write this week!).
Whilst I’m here, I must note that it was great meeting so many people at JavaOne. The number of times I was speaking to someone who didn’t know me, only to see my name badge and know exactly who I was because of this blog was actually very impressive. I’m surprised so many of you read this blog! Anyway, with that (and because this post is already long enough) let’s get straight into it… π
- The big news out of JavaOne for JavaFX was the general availability release of JavaFX 2.0 for Windows, and the beta release of JavaFX 2.0 for Mac OS X. A number of sites posted articles relevant to this.
- Following hot on the heels of the JavaFX 2.0 release is JavaFX 2.0.1, which is a security-only update released in-sync with all other Java security updates (which explains why it was released so soon after 2.0).
- We’ve also put out another build of JavaFX 2.0 beta for Mac OS X, taking the build number up to version 5.
- My partners in crime here at FX Experience, Richard Bair and Jasper Potts, have been busily blogging, including posts titled “Don’t use impl!“, “JavaFX Technical Keynote at JavaOne Video“, “JavaFX sessions at JavaOne 2011 online“, “FXML: Why It Rocks, And The Next Phase“, and “Correctly Checking KeyEvents“.
- A number of blogs have appeared online related to JavaFX FXML being used in conjunction with dependency injection frameworks. Firstly, Tom Schindl has blogged about JavaFX FXML and Google Guice. Following this, Richard Bair blogged about exactly the same topic. Finally, Zonski has blogged about JavaFX FXML and Spring, and in a separate post, ‘better controller injection‘.
- Speaking of Jasper, he was recently interviewed by the Java Spotlight podcast regarding the JavaFX 2.0 release.
- The Oracle Media Network has five videos related to JavaFX 2.0 features: graphics, UI controls, animation, effects, and embedding web content.
- Tom Schindl has also been very busy on his e(fx)clipse project, putting out version 0.0.7, which includes a number of new features, including new wizards, live preview support for editing his ‘FXGraph’ DSL, auto-completion of FXGraph, support for dependency injection, and the start of an application framework.
- Mr LoNee has blogged about a similar feature as mentioned above – a ‘NodeCodeEditor‘ that live previews what is happening as code is being edited (although there are constraints, so be sure to read the blog post completely).
- Jide Software has released a free-to-use JavaFX RangeSlider control (that is, a Slider that has two thumbs rather than one). All I can say is keep up the great work! I want to see a thriving 3rd party controls ecosystem in JavaFX! π
- At JavaOne we demonstrated JavaFX running on various tablet devices. Whilst this is not in any public roadmaps yet, there have been a few writeups on this demonstration that may be of interest.
- Another big JavaOne announcement was the plan to open source the entire JavaFX stack through the OpenJDK.
- One of the talks I gave at JavaOne (along with Johan Vos) was about our DataFX project, related to simplifying the population and rendering of ListView/TreeView/TableView controls. Just today I did a better write-up explaining what the project is, and (hopefully) enticing more people to play around with it.
- All JavaOne slides appear to be online for public consumption. I posted a blog post that links to the three talks I gave, as well as a link to the content catalog where you may download all other slide decks.
- Roman Kennke has posted about “JavaFX 2 β The new Swing ?Β (!)“.
- Bertrand Goetzmann has updated his Grezi application with JavaFX 2.0 GA support, and now uses the latest GroovyFX release. He has put up a video that demonstrates the HTML 5 slideshows feature.
- Patrick Webster has ported a Pac-Man clone that was originally written for JavaFX 1.3.1 to use the new JavaFX 2.0 release.
- Dustin has blogged about the NetBeans 7.1 beta, and how it can be used for developing JavaFX 2.0 applications.
- Hamilton Matos has blogged about ‘Building JSF 2.0 Composite Components Based on JavaFX with NetBeans‘.
- Gail Anderson has two new JavaFX 2.0 blog posts online, both about animation and binding. The first post creates a simple countdown timer, whilst the second post extends the first by adding a progress bar into the mix.
Phew! That’s that for another week. I’ll get back into the regular schedule starting next week, so hopefully next weeks posting won’t be as great an ordeal (for you and me!) next week. Catch you all in a weeks time folks π
by Jonathan Giles | Oct 23, 2011 | Controls, General, Links
One of the projects I worked on leading up to JavaOne 2011 was the DataFX project, which, as I wrote on the website, “is an open source project that intends to make retrieving, massaging, populating, viewing, and editing data in JavaFX UI controls easier. Itβs all that boring kludge work you have to do between getting user requirements and delivering a rich user experience.”
DataFX is a project Johan Vos and I have been working on for many months now, and it has gone through a number of iterations in that time. At JavaOne 2011 we put out a first release (let’s call it version 0.0.1 for lack of an official version number), and today I want to briefly introduce it for those of you who didn’t attend JavaOne. However, even if you didn’t attend JavaOne, we’ve put the slides online.
To be very clear, DataFX is not an Oracle project! Johan and I both developed this in our own time, and it does not necessarily represent the future plans of the official JavaFX project. This project was built to make many of the UI controls I develop easier to work with by filling in the gaps as of the current JavaFX 2.0 release. Oracle may or may not have future plans in the same area as DataFX, but for now DataFX exists to fill the gap. For more details, check out the DataFX FAQ.
To make things easier to understand let’s conceptually split DataFX into two sub-projects which attack a common problem from two different angles.
(more…)
by Jonathan Giles | Oct 23, 2011 | JavaOne, Links
I’ve just returned back from three weeks in the US, and one thing I was asked very frequently during JavaOne was if I’d be making my slides available. It turns out that I don’t even need to upload the slides manually this year – Oracle has put them all up online already. If you want to find slides for (I assume) any of the JavaOne sessions, you can search the content catalog.
However, for those interested in my sessions, the three talks I gave were the following:
- UI Controls and Charts: Drag-and-Drop, Filtering, Sorting, Table Hookup with Charts.
Paru Somashekar and Jonathan Giles.
Download slides.
- JavaFX Datasources: Getting Real-World Data into JavaFX Controls.
Johan Vos and Jonathan Giles.
Download slides. For more information, visit the DataFX website.
- Custom UI Controls and Charts with JavaFX 2.0.
Jasper Potts and Jonathan Giles.
Download slides.
by Richard Bair | Oct 21, 2011 | Uncategorized
There has been a very interesting thread in the JavaFX OTN forums about FXML and dependency injection. I went and downloaded Google Guice and wrote a small sample to try it all out. Things are not perfect quite yet (I still need full Unified Expression Language support added to FXML), but so very, very, very close!
What I ultimately hope to accomplish with FXML and CSS in JavaFX enterprise applications is that we (a) fully separate the visuals from the “controller”, (b) are left with a very simple “controller” that is highly testable, and (c) everything is highly modular.
CSS allows the designer to come in after the fact and modify the look of a UI without the developer’s help, and without a full build cycle. FXML allows a developer or designer to alter the structure of the view without a full build cycle. So (a) should be well in hand, especially if the controller itself can be injected rather than declared directly in the FXML file as it is today. (I’m OK with, even prefer, saying “I would like to have a FooController for this FXML file, if you please”, but what would really rock is if the FooController were an interface or abstract class rather than always being a concrete class, such that a DI framework like Guice could find the appropriate implementation and supply it).
(more…)