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 | Oct 26, 2014 | Links
Heaps of links – enjoy 🙂
- ControlsFX 8.20.8 was released this week, primarily as a bug fix release, but it also included a few nice new controls – so get downloading if you use ControlsFX in your project!
- Hendrik Ebbers and Johan Vos have announced the release of DataFX 8.0. For anyone doing anything remotely interesting with JavaFX, you should definitely check out DataFX.
- Speaking of Johan, he has put up the JavaFX Ensemble application, with unchanged code, into the Android Play Store, as a proof of concept of what is now possible based on his hard work.
- Hendrik Ebbers extreme gui makeover presentation from JavaOne is now available online at Parleys (along with a bunch of other sessions).
- Tom Schindl has pulled out the JavaFX / e(fx)clipse related sessions that are going to be presented at EclipseCon this year – in case you’ll be there.
- Florian Brunner has announced that Drombler FX 0.5 has been released. Drombler FX is a “modular Rich Client Platform for JavaFX based on OSGi and Maven (POM-first).”
- Carl Dea has open sourced the FX Playground project he demonstrated at JavaOne. As he puts it, FX Playground “allows a JavaFX or Html5 developer to run code on the fly without needing to compile a Java project.”
- Adam Bien has posted a video showing how to create a composite view in JavaFX with Scene Builder and dependency injection.
- Jim Laskey has posted part one of his series on ‘porting from the browser to Nashorn/JavaFX‘.
- The SnapCode blog has details about a new feature in SnapCode – interactive exercises.
- Sébastien Bordes has written tip #3 for the JRebirth library: how to never write ‘new Thread()’ again.
- Michael Simons has posted about ‘getting started with JavaFX 8: developing a REST client application from scratch‘.
- Carl has two posts this week. Firstly, tabbed navigation in Java FX, and secondly, the delegate pattern and JavaFX.
Catch you next week 🙂
by Jonathan Giles | Oct 19, 2014 | ControlsFX
Hot on the heels of the 8.20.7 release, I am pleased to announce the release of ControlsFX 8.20.8. This release is primarily a bug fix release (to smooth some of the rough edges from 8.20.7), but there are also a couple of new features in this release to keep things interesting. The main bug fixes include:
- ControlsFX 8.20.7 only worked on JavaFX 8u20. This has been fixed so ControlsFX 8.20.8 works on JavaFX 8u20 and later (such as the just-released 8u25).
- ControlsFX-Samples was not executable because we changed our build scripts in 8.20.7 and forgot to include the relevant manifest attributes. This has been fixed.
- SpreadsheetView continues to receive bug fixes (and unit tests).
- It was not possible to use the Notifications API in an OSGi environment – now it is.
- And of course a bunch of other useful bug fixes!
The two main features in this release were both contributed by Dirk Lemmermann. They are:
TaskProgressView
The task progress view is used to visualize the progress of long running tasks. These tasks are created via the Task
class. This view manages a list of such tasks and displays each one of them with their name, progress, and update messages.
An optional graphic factory can be set to place a graphic in each row. This allows the user to more easily distinguish between different types of tasks.
ListSelectionView
A control used to perform a multi-selection via the help of two list views. Items can be moved from one list (source) to the other (target). This can be done by either double clicking on the list items or by using one of the “move” buttons between the two lists. Each list can be decorated with a header and a footer node. The default header nodes are simply two labels (“Available”, “Selected”).
If you are unfamiliar with ControlsFX, you can get an overview of the main features. As always, you can download the latest release from controlsfx.org, as well as find the latest release and hourly snapshot builds on Maven Central.
by Jonathan Giles | Oct 19, 2014 | Links
A heap of links this week, enjoy! 🙂
That’s all folks – back to work for me! Catch you next week 🙂
by Jonathan Giles | Oct 12, 2014 | Links
Sorry for the few weeks of radio silence – I had the JavaOne distraction followed by a week of catching up on everything that needed me during the JavaOne week. I’m only just surfacing again now, and there are a huge number of links to cover, so pardon the succinctness – we have a lot to get through! I’ll also note that I’ve bound to have missed some links, so apologies for that. Now, on to the links – enjoy 🙂
- Soon the JavaFX sessions will have their audio and slides posted to Parleys, but until then the slides are available for download from the JavaOne site – just search the content catalog. I’ll post my slides sometime along with further commentary about the session, but until then, you can find the slides for my sessions here: custom JavaFX controls, Scenic View, ControlsFX, and DataFX.
- During JavaOne I announced the release of two projects: Scenic View 8.0.0 and ControlsFX 8.20.7. These are both major releases with a bunch of new functionality and bug fixes, so get downloading!
- Johan Vos made a big splash at JavaOne this year. Firstly, he won a Dukes Choice award for his JavaFX port to Android. Secondly, he has an article up in Java Magazine that covers how to use this port to write a JavaFX application that runs on Android. Thirdly, it was announced at JavaOne that the JavaFX ports project will be working to make Java 8 (and therefore JavaFX 8) available on both Android and iOS devices. I’ll be posting an interview with Johan and Niklas in the coming week.
- Hendrik Ebbers has a bunch of blog posts, including on the topics of ‘JavaOne 2014 Slides‘, ‘Iconify your application the resolution independent way‘, ‘The View Objects Pattern & automated tests with TestFX‘, ‘How to integrate custom fonts in your JavaFX application by using CSS‘, and ‘Enrich your List UI by using the MediaListCell‘.
- Hendrik Ebbers has also posted the slides that he, Johan Vos, and I presented at JavaOne regarding the DataFX project.
- Tomas Mikula has created another JavaFX-related library, this time called WellBehavedFX, which consists of ‘composable event handlers and skin scaffolding for JavaFX controls’.
- Tom Schindl has a post about e4 on JavaFX and OpenDolphin.
- Rob Terpilowski has posted a few screenshots and a video of the Zoi Capital ZQ Trader software written in JavaFX.
- Sébastien Bordes has announced the release of JRebirth Application Framework 7.7.4.
- Dirk Lemmermann has been very busy with his (commercial) FlexGanttFX library. Firstly, he has published it for sale on ComponentSource (as he states, for those unfamiliar with ComponentSource, it is an international reseller of software components, basically the “App Store” of custom controls). Secondly, he has released version 1.1.0 which includes a number of new features and bug fixes. Thirdly, he has been working hard on writing high quality documentation for the control.
- Andres Almiray has posted that “It’s time for a Desktop Application Framework JSR“. If you are interested in being involved, be sure to get in touch with him.
- The dooApp blog has two posts. Firstly, they’ve posted details about how they’ve created a sampler application based on the ControlsFX FXSampler component. Secondly, they have a post on ‘JavaFX persistence made easy with JCROMfx‘.
- Carlos Martins has posted about how to developed a JavaFX websocket client application that is deployed via Webstart JNLP.
- Christian Schudt has posted about Babbler – an XMPP library for Java – and more specifically, a visual XMPP viewer coming in the next release.
- Mik Arber has created a new JavaFX layout container he calls RefPoint. He states in the post that “it’s principal is simple as you define one node position or two points node relatively to some reference points.”
Phew! That took a while to write out! I hope you enjoyed the links from the past few weeks – and I’ll catch you again next week! 🙂
by Jonathan Giles | Sep 30, 2014 | ControlsFX
It’s time for another ControlsFX release, this time taking the version number on another jump up the scale and finally settling on version 8.20.7. What this version number represents is the fact that this release requires JavaFX 8u20 and will not work with earlier versions. If you want to use ControlsFX with JavaFX 8.0, you will need to use ControlsFX 8.0.6.
Why the delay?
This release has been brewing since 8.0.6 was released on May 29th – so basically four months. This is not typical for us (we normally have much quicker releases), but Eugene and I were both distracted on a major undertaking – elevating the ControlsFX dialogs API and implementation into the next release of JavaFX itself (it’ll be appearing in JavaFX 8u40, although the API is vastly different than what you see in ControlsFX 8.0.6). The end result is that we iterated through a bunch of API design work (see RT-12643) and none of that benefited ControlsFX, but it took up all our time.
Once JavaFX 8u40 dialogs were API complete (which was only mid-August), we developed a plan for how to proceed with ControlsFX dialogs. In essence we didn’t feel that it was wise to maintain a dialogs API in ControlsFX that was so divergent than what will ship in JavaFX 8u40. Therefore, the plan that we developed was to deprecate the old ControlsFX API, fork the JavaFX dialogs API into a new project called openjfx-dialogs, and to recreate the additional features that ControlsFX includes (but are lacking in JavaFX itself) using the new API (this includes dialogs like progress, font chooser, command link, login, etc). The end result is two-fold:
- ControlsFX 8.20.7 has an external dependency on openjfx-dialogs, but this will only be the case until we baseline on JavaFX 8u40, at which point it can be removed.
- ControlsFX 8.20.7 ships with two dialogs APIs! The saving grace is that the old one is still fully functional but deprecated – hopefully that will give you enough of a hint that the old API will go away in a future release.
The nice thing about openjfx-dialogs is that people wanting to use the new JavaFX dialogs API in 8u20 can do so – just download the jar (or set it as a dependency) and you can use the API (and implementation) exactly as it will be in 8u40. This is great for me – it gives me more testers of the JavaFX dialogs API and implementation – hopefully you can file bugs if you run into them.
What else is new in ControlsFX 8.20.7?
On top of the already mentioned dialog classes, the major new features in ControlsFX 8.20.7 are a new Wizard API (again, built using the new dialog API) and a StatusBar control:
Wizard
The wizard was implemented by Eugene and myself. I think it strikes a really nice balance between simplicity and flexibility, but I am sure that over time we will continue to tweak the API as we get more user feedback. The thing I like most about the API is its simplicity. In the common use cases, you can simply specify the pages you want to show, and that’s it. Once the dialog is closed by the user (or in fact, at any time), you can query a Map to retrieve the input that the user has put into all fields of the wizard. The Wizard knows how to extract values from most commonly used controls, and if it can’t, you can easily add support for custom value extractors. On top of this, the wizard supports linear and conditionally branching page flows. Here’s a screenshot from our simple test wizard:
StatusBar
The status bar control was contributed by Dirk Lemmermann. It is normally placed at the bottom of a window. It is used to display various types of application status information. This can be a text message, the progress of a task, or any other kind of status (e.g. red / green / yellow lights). By default the status bar contains a label for displaying plain text and a progress bar for long running tasks. Additional controls / nodes can be placed on the left and right sides.
The picture below shows the default appearance of the StatusBar control:
The following picture shows the status bar reporting progress of a task:
The last picture shows the status bar with a couple of extra items added to the left and right:
Miscellaneous Improvements
Of course, on top of the major new features / changes, there is a bucket load of small improvements, including the following:
- Improved glyph font support, including support for the latest FontAwesome release.
- Improved build system – we now have just one gradle project that can work with ControlsFX, ControlsFX-samples, and FX Sampler.
- Action and Dialogs API refinement, based on our work moving dialogs up to JavaFX 8u40.
- New CSS tab in FX Sampler – now FX Sampler can not only syntax highlight the code of a sample, it can also syntax highlight the CSS of the control.
- The validation API now supports regular expressions and predicates.
- Improved internationalisation support – we are fully integrated with Transifex, and the community is always welcome to help translate.
- Big performance improvements in SpreadsheetView.
- Support for any span in SpreadsheetView fixed row/columns
- RangeSlider is now a lot less finicky about setting min / max / high / low values.
- Lots of bug fixes, particularly in Dialogs, Actions, SpreadsheetView, as well as the Check* controls (CheckListView / CheckTreeView / CheckComboBox).
That’s all for this release – we hope you appreciate all the hard work that the team is putting in to ControlsFX, and that you might consider offering bug fixes or bug reports. If you want to get involved, check out our documentation that describes everything that you need to know to get started.
by Jonathan Giles | Sep 29, 2014 | Scenic View
It’s been a really long time in the making, but I’m pleased to announce the final release of Scenic View 8.0.0. This release is the culmination of a huge amount of work, and whilst not perfect, is a good starting point for further discussion and refinement. The other big aspect of this release is the fact that Scenic View is now open source – yay! 🙂
Given the large number of developer preview releases there should be no surprises as to what to expect in this release – it is just bug fixing at this point. However, now that 8.0.0 is out I hope that we can accelerate the development of the project by getting more people into the code base and helping to refine, improve, and simplify it. Please, take it for a spin and be sure to file bugs over at the new bug tracker.
Finally, here’s a sneak peak of what might be coming up in a future release of Scenic View:
Go forth and download! I know the release isn’t wart-free, but I need your help to diagnose and resolve the issues. Thanks!
by Jonathan Giles | Sep 21, 2014 | Links
It’s one week until JavaOne kicks off – I can’t wait to get over there and to catch up with a bunch of you. This week there are a bunch of good links too, so enjoy! 🙂
That’s all folks. If everything goes to plan, the next post will be done from San Francisco sometime around the start of JavaOne. For those that are attending – safe travels and I look forward to seeing you there. For those that are not, follow along on twitter 🙂
by Jonathan Giles | Sep 18, 2014 | Interviews
Today I have an interview with Sean Phillips. For those new to this series, here are the people who have been interviewed so far:
Hi there. Thanks for taking the time to do this quick interview. Can you please introduce yourself?
Hey I am Sean Phillips and I live near Washington DC, USA. I work for a.i. solutions inc and we are a major NASA corporate partner. Additionally I am the founder of the free open source JavaFX 3D library F(X)yz. I received a 2013 Duke’s Choice award for my GEONS Ground Support System software.
Recently I contributed, along with Gerrit Grunwald, Mark Heckler, Jose Pereda and Carl Dea, to the book titled ‘JavaFX 8 Introduction by Example‘ by Apress publishing.
Is this your first time presenting at JavaOne, or are you a JavaOne veteran?
This will be my third JavaOne and second presenting. I suppose that makes me a veteran… I still have a free t-shirt with SUN logos on them from my first JavaOne. I presented at several sessions last year and was extremely fortunate to present live during the community keynote.
What was presenting at the keynote like compared to the technical sessions?
Well we had rehearsal and practiced our timing the night before. Henrik Stahl was the host for my portion and he’s great. Really sharp and quick on his feet up there. I was presenting NASA mission software so I thought I would have the coolest section but I was bookended by James Gosling’s Underwater Robots and Aditya Gupta’s exploding flying Minecraft Pigs. I had no chance! How can you compete with that??
What are you going to talk about at JavaOne this year?
This year I have a mix of sessions, ranging from JavaFX 3D to Lessons Learned in Mission Critical systems.
I am excited by my NASA Software Development on the Eights session where a team of my colleagues and I will be discussing and demonstrating some of the software we develop for our NASA missions.
What type of missions are you working on?
The team I am bringing and my company a.i. solutions provide support for a long list of missions and launches ranging from James Webb Space Telescope to the International Space Station. A strong cross-section of those missions will be discussed at JavaOne by us this year.
Do you have any big announcements or releases planned leading up to (or at) JavaOne? Can you give any hints?
No hints, I will just tell you. Jason Pollastrini (@jdub1581, Co-founder of F(X)yz) and I have just open sourced our JavaFX 3D library. Unfortunately Jason couldn’t make JavaOne this year but I will be demonstrating the new features that provide a lot of support that JavaFX 3D does have within its base packages. We are really proud of the work and we moving ahead towards making everything from better 3D data visualizations to all the basics of a 3D Game engine. A shout out to Jason: He’s really bumped the project forward. Anybody on the west coast in need of a graphics/3D guy he’s fantastic!
Is there anything else you’d like to discuss?
Find me at the Taylor Street cafe after 2pm!
by Jonathan Giles | Sep 16, 2014 | Interviews
Today I have an interview with Hendrik Ebbers. For those new to this series, here are the people who have been interviewed so far:
Hi there. Thanks for taking the time to do this quick interview. Can you please introduce yourself?
Sure 🙂
I’m Hendrik Ebbers and live in Dortmund, Germany and work for Canoo Engineering AG. In addition I’m the lead of JUG Dortmund. My main focus is primarily in the areas of JavaFX, Middleware and DevOps. I have a website (www.guigarage.com) on that I try to blog about UI related topics. In the last time most of the post are about JavaFX and enterprise development. If you are interested in this you should visit my blog or follow me 🙂 (@hendrikEbbers)
For JavaOne 2014 JavaFX is my core topic. As a Featured Speaker I will have 6 talks at JavaOne this year. Next to this Oracle Press released my “Mastering JavaFX 8 Controls” book this summer.
Is this your first time presenting at JavaOne, or are you a JavaOne veteran?
No to both 🙂
I was speaking at JavaOne last year the first time. I had 3 talks about JavaFX. It was an awesome week and I can’t wait to be there again.
What are you going to talk about at JavaOne?
As already said my main topic will be JavaFX. I’ve prepared some talks that introduce different subtopics like JavaFX enterprise development or styling with CSS. A complete list of all my talks can be found at my blog: http://www.guigarage.com/2014/08/javaone-2014-sessions/
In addition I try to give some previews and sneak peek of my talks at guigarage. Currently there are two previews:
http://www.guigarage.com/2014/09/javaone-2014-preview/
http://www.guigarage.com/2014/09/javaone-preview-enterprise-javafx/
Do you have any big announcements or releases planned leading up to (or at) JavaOne? Can you give any hints? 😉
Let’s start talking about releases. We plan to release DataFX 8 at JavaOne. With version 8 DataFX will contain 5 modules: core, data reader, flow, injection & web socket. We have a DataFX 8 talk at JavaOne in that we want to introduce all the features and show some demos. I hope that the JavaFX community will like what we did the last year.
In addition I created a collection of small but helpful JavaFX modules. This set of modules is called “Guigarage JavaFX Collections“ and I will release a first version at JavaOne. In all of my talks at minimum one of the modules is used to code some cool demos. I don’t want to talk to much about the content of this project because I will introduce it in my talks. But I can say that there are modules for animations, styling, custom controls and some other core topics.
Is there anything else you’d like to discuss?
Come to JavaOne! It’s the biggest and coolest Java Conference in the world. Oh, and visit my talks 😀
For all the people who can’t visit JavaOne I plan to release all demos and slides directly after the conference. In addition I’m currently writing some descriptions for the modules of the “Guigarage JavaXF Collections” set that will be released on guigarge after JavaOne.
Thanks for taking time out of your day to answer these questions! All the best for your JavaOne talks!
by Jonathan Giles | Sep 14, 2014 | Links
Two weeks until JavaOne – now I’m starting to get excited (and also overwhelmed by how much preparation I still have to do!). On with the links! 🙂
JavaFX
- Danno Ferrin has announced the release of version 8.1 of the Maven JavaFX Plugin.
- Jens Deters has released MQTT.fx 0.0.9.
- Vinumeris has announced that an alpha version of Lighthouse is now open source. Lighthouse is a “decentralised, peer to peer crowdfunding application that uses the smart contracts features of the Bitcoin protocol. It lets you create projects and pledge to those projects.” They have also announced the open sourcing of UpdateFX, which is a “small, simple automatic online update framework for JavaFX applications.”
- I published another JavaOne interview, this time with Johan Vos.
- I posted a quick book review of the Mastering JavaFX 8 Controls book that was recently published.
- Gerrit Grunwald has posted about another ‘Friday Fun Component’ he has built: a ‘minimal clock‘.
- Canoo staff have posted video summaries of what they will be presenting at JavaOne, including Dierk Koenig, Michael Heinrichs, and Hendrik Ebbers.
- With JavaOne now less than two weeks away, people are continuing to post on their sessions, as well as sessions they are looking forward to. Some links I’ve found include: Hendrik Ebbers talking about his sessions (it’s a different video than above), Hendrik Ebbers giving a sneak peak at his ‘Enterprise JavaFX’ session demonstration, and Michael Hoffer has a post summarising his sessions.
- This week I came across FXDesktopSearch, a desktop search application written in Java / JavaFX.
Catch you all next week.