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.

As I promised last week in my interview with Tom Schindl, today I have an interview with Felipe Heidrich. Felipe is an Oracle employee responsible for a number of things in the JavaFX area, but the reason why I wanted to interview Felipe is because his work is what enabled Tom to create the styled text editor he announced last week. I’ll leave it to Felipe to introduce himself, so without further ado, let’s get into it! Enjoy 🙂

Hi Felipe – could you please introduce yourself?Felipe Heidrich
My name is Felipe Heidrich, I was born and raised in Brazil. After receiving my Bachelor degree in CS from the Federal University of Santa Catarina I moved to Ottawa, Canada for an internship position with Object Technology International (OTI). The following year OTI was fully integrated by IBM Canada where I worked for the next 10 years.

In 2012, I decided it was time for a new adventure (and better weather) so I moved to Santa Clara, California to work for Oracle on the JavaFX project.

Before joining Oracle you had a lot to do with Eclipse – can you clarify what exactly you did there?
I worked on the Eclipse Platform for over 10 years. More specifically on the Standard Widget Toolkit (SWT) where I had the opportunity to work on virtually everything it takes to build a widget toolkit, from accessibility to input methods to printing. My areas of responsibility also included the StyledText and everything related to it. In my last year there I worked on the Orion project where I was responsible for designing  and implementing the text editor component. We had a great team in Ottawa and an amazing community around Eclipse and Orion, it was a great run.

You’ve been at Oracle for around a year now. What have you done during this time?
I’m currently working in the graphics team. I spend most of my time working with text. Our first challenge was to add unicode support and after that it was to design and implement rich text support. Being at the bottom of the stack I get to interact with nearly all other parts of the system and I always try to contribute and participate in the entire product.

I guess the main contribution out of what you’ve listed here is rich text support in JavaFX. What is the state of that in JavaFX 8.0, and where do you want it to go?
Correct. It is important to keep in mind that the text node in JavaFX is very powerful, it supports fill and stroke operation as well as effects and animations. The new support we added in JavaFX 8.0, TextFlow, allows the application to use this text node (and other nodes) as building blocks for even more powerful text layouts. There are a number of different cool things I would like to add to the current text support such as content flow and regions, inclusion and exclusion, advance typography, etc.


Another area that has been mentioned previously by Richard Bair is that we want to move away from t2k text rendering to instead using the native text rendering on the underlying operating system. Can you give us an overview into the technical complexities you’re facing here, and how far along the process you are?
There are several reasons to move away from T2K, but that is very complex task since our current implementation was designed to fit the way T2K works. I would like to use native text APIs for all the low level work: font lookup, glyph generation and to rasterize glyph images. The majority of the work I would like to have full control over in order to provide features (which might not be available on the underlying operating system) and to give an edge on performance by better integrating with the rest of the system.

On the Mac I have a working prototype using CoreText but on Windows and Linux I’m still evaluating different technologies. On Windows we will probably use DirectWrite and on Linux either Pango or Harfbuzz.

Will native text rendering yield any performance gains?
At the graphics level our text rendering performance is already very good. We have caches in our system so we only rasterize the glyph image one time, therefore using T2K or something else will not have much of an impact on our overall performance.

My main goal for this work is rendering quality and superior user experience, not performance.

What is a normal day like for you? What is your preferred IDE for developing JavaFX?
When I started at Oracle almost every body was using Netbeans so I decided to be consistent and to use Netbeans myself. A few months later I gave up and I switched over to Eclipse and I never looked back. I’m glad I made this decision, as we open source more of JavaFX the more we expect other developers to contribute to the project and I feel I’m on a better position to help other Eclipse users to get setup to work on the JavaFX code base.

As for my normal day I believe it is pretty typical, always trying to not let my inbox to take me down, leaving as much time as possible for hacking code.


What kind of things would you like to see in future JavaFX releases?
JavaFX already has a pretty awesome feature set and I have already said a lot of things I’d like to see in the area of graphics for text.

But If I had one wish it probably would be a Rich Text editor based on TextFlow 😉
Either a sweet contribution from the community (hint hint) or something you and I can work together one day 😉 or a mix of the two.

(Note from Jonathan: for readers not familiar with my role inside the JavaFX team, I’m the tech lead on UI controls, so Felipe’s comment above about he and I working together is simply related to the fact that rich text editing would be something handled by both he and someone from the UI controls team, such as myself).

Thanks so much for your time Felipe. Is there anything else you’d like to add?
Thank you Jonathan, I would like to finish by saying that JavaFX is the coolest innovation I have seen in Java in a long time I’m very happy of being part of it!