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.

JavaFX links of the week, November 26

Hey everyone – welcome to yet another week of links! Enjoy πŸ™‚

That’s all for this week. Catch you again next week folks, and keep up the amazing work! πŸ™‚

JavaFX links of the week, November 19

Welcome to yet another weeks worth of JavaFX links. Thanks to Neil for his guest editing of last weeks post – I know it isn’t overly fun writing these posts, so I really appreciate his time and contribution. Now, on with the news.

That’s us for another week – catch you in a weeks time! πŸ™‚

Announcing Scenic View 1.3.0

After a little over a month since the release of Scenic View 1.2.0, Ander Ruiz and I are back with the news that Scenic View 1.3.0 is available for immediate download! This release brings with it a number of bug fixes, major performance improvements, much improved CSS support, Mac OS X native menubar integration, an update checker, and an early preview of the animation tracer feature. I highly recommend that all users of Scenic View download this latest version and take it for a spin – hopefully you’ll like what you see. As always the help page has been updated to include the details of the new release Enjoy πŸ™‚

JavaFX links of the week, November 12

Since Jonathan is traveling for Devoxx he allowed me to act as a guest editor this week for JavaFX links of the week post. My short introduction is at the bottom of this post. Lately I have been working on one of my personal projects in JavaFX so I am a regular follower of this blog. Everyday I have to head towards JavaFx forum or stackoverflowfor my queries.

  • Pedro Duque Vieira has blogged about how to create checkboxes with a metro theme using JMetro.
  • Randahl Fink Isaksen described the problems he faced due to unavailibility of interface classes for JavaFx control classes and suggested a potential workarround for the same .
  • NotZed blogged about Quick and Dirty image viewer using JavaFx with basics features like pan and zoom and flicking through a set of images.
  • Find out how you can test JavaFX user interface in your application using JemmyFX in JemmyFX Getting Started Guide
  • Andres Almiray blogged about how to change language (i18n content) in JavaFx applications on the fly without re-launching it.
  • Leon Atherton gave a quick overview of the differences between Java3D and JavaFX. He mentioned how JavaFx can be used to emulate some of the Java3D features till full 3D support comes in the next versions.
  • rjahn got inspiration from the JavaOne Technical Keynote and blogged about Beagleboard xm.
  • JavaFX Scene Builder 1.1 Developer Preview is now available for download.
  • Mark Heckler created MonologFX which is a flexible JavaFx dialoge component.
  • Tom Schindl posted about how to implement an editor using Xtext and JavaFX shader language.
  • Thomas Bolz posted about his mortgage calculator called Finanzierungsrechner which is created using JavFx.This is exactly what I was looking for last month to analyze my own loan statement πŸ™‚
  • Pedro Duque Vieira announced Modellus X 0.2 Release Candidate released.Modellus is a freely available software package that enables students and teachers (high school and college) to use mathematics to create or explore models interactively.
  • November/December issue of Java Magazine is published and can be downloaded for free.
  • Gerrit Grunwald showed JavaFx on BeagleBoard-xM during the night hacking tour streaming interview.
  • NetBeans IDE 7.3 Beta 2 got released.

Neil Ghosh works for Oracle Corporation as a project leader in the Technology Initiative team. Neil graduated from University College of Engineering, Burla with Computer Science and Engnieering as major and has over 6 years of experience in ERP, Web services and Web application development. He has contributed to various financial software and mobile projects with his expertise in Oracle, Java, J2EE, jQuery, PHP and MySQL. Neil is also chair of IEEE GOLD affinity group of Hyderabad section. He is also a co-organizer of Java User groups Hyderabad. Apart from programming his interest involves astronomy and cricket and other outdoor activities.

Retina Display MacBook Pro

I am presently typing away on a new Retina Display MacBook Pro, and it is an interesting experience. The visual clarity is stunning. It is akin to the feeling of going from Atari to Nintendo, or Nintendo to Nintendo 64, or standard def to Hi-Def. I just didn’t realize what kind of poor quality I was looking at before.

But it isn’t all rainbows and sunshine. All of Apple’s applications look stunning. But many 3rd party apps look bad (including Java apps), and web browsing is horrific. The problem is high-DPI, and how Apple went about solving the HDPI problem.

On Retina MacBook Pro displays, there are some 220 pixels per inch. If you rendered everything 1-to-1 on such a display, the text (and everything else) would look tiny. You’d need a bionic eye (or a magnifying glass) to read anything on the screen. Or at least, really young eyes. So instead, everything needs to be scaled up.

For vector graphics and text, this is pretty straightforward. You just scale things up and render at the higher resolution and things look great. But for images it isn’t so simply. Scaling images produces a blurry result. And that, in fact, is the experience of using a retina display when browsing websites. You will come to some websites where the text is crisp and the images are all blurry. Other websites have some crisp text and some blurry text, ostensibly either because intentionally or unintentionally the web site is rendering text to an image and then the image is being scaled. And it makes for a horrendous user experience.

In Apple’s applications (starting with the iPhone and iPad with their retina displays), the solution to the problem is for the application developer to supply two images instead of one for each image asset. For example, the splash screen will be supplied with two images, one at normal resolution and one at 2x the resolution. The files are named the same but the 2x one is named according to some convention, such that at runtime the platform will lookup the 2x version on retina behind the scenes. In such a way, your application says “fooImage.png” but “fooImage@2x.png” is looked up instead when on a machine with a retina display.

At the moment, all Java applications (including FX) are pixel-doubled, such that everything (text, images — everything) are doubled and look blurry. But since I’m going to be working on a retina MacBook for the next several years, we’ve got to fix this situation. Driving me UP THE WALL. Our plan is to follow Apple’s lead, and automatically attempt to load the @2x image if one is available, and to otherwise signal to Mac OS X that we’re a high-DPI aware application and it shouldn’t pixel double everything on us.

One thing to be aware of here is that Canvas and ImageWriter are not going to be able to deal with high-DPI right off the bat. Your application is written as if it is on a normal display, but Canvas ends up needing to be pixel doubled. In the future we’ll add API so you can detect this situation and draw into a larger canvas (or automatically scale everything up for you).

I can’t wait for FX to be in hi-res!