Sun released this week the initial preview version of its JavaFX SDK, a set of tools and APIs for working with the new JavaFX runtime. In this interview with Artima, Jacob Lehrbaum, Sun’s senior product line manager for JavaFX, and Param Singh, the company’s Java marketing director, explain how the JavaFX SDK can help enterprise developers build more engaging applications.
In the interview, Lehrbaum explained what’s in the JavaFX SDK:
The preview SDK provides developers and designers with tools they need to create JavaFX applications. It includes a plug-in for NetBeans that allows you to build and debug JavaFX apps directly from the IDE, it has a runtime for the desktop, compilers, 2D graphics, media tools, tutorials, API docs, and sample code.
The other key piece of what we’re launching is what we’re calling Project Nile. Project Nile allows you to use some existing design tools, such as PhotoShop and Illustrator, and we’ll have more tools we support later on. Project Nile allows you to export assets from those design tools into a format that can be used by NetBeans directly. And those assets can be incorporated into [JavaFX] code very seamlessly.
With these projects, our goal is to enable folks who are comfortable with scripting to begin creating rich, highly immersive, JavaFX applications, and to begin prototyping those for non-commercial use, leading up to our 1.0 release in the Fall.
Lehrbaum noted that JavaFX aims to provide a unified API to develop user interfaces for desktop, browser-based, and mobile applications:
The approach we’re taking is to provide a common API set that can run across all the screens of your life. One of the advantages we have with Java is that it runs across billions and billions of devices: 80% of desktops, and 95% of mobile phones have Java already, and it’s already the standard environment for the next-generation DVD format, Blue-ray. It’s a great platform in terms of being able to address all the different screens.
With JavaFX, we have a common API set. If you write to that set, you can write your code across all those devices. We’re also going to be providing additional desktop and mobile-specific extensions to allow you to optimize for functionality specific to those environments.
Initially, a lot of the JavaFX APIs are focused on how you can create rich, immersive experiences with things like 2D graphics, media support, scalable graphics, and scalable fonts, and how you can create animation, transformations, that sorts of things. The initial focus is around user experience and interactivity, and creating those rich, interactive media experiences. In that connection, one of things we announced at JavaOne this year is a video codec from a company called On2. That video codec will be available across all JavaFX devices, allowing you to have cross-platform media support.
The video support is planned for the 1.0 release… Currently, you can use native video [with JavaFX]: you can use the native decoder that’s already in the Windows or Mac environments. Those can be used from a JavaFX environment to display video. The cross-platform codec will come in version 1.0.
Lehrbaum also explained the sorts of problems the JavaFX SDK tries to solve for enterprise developers looking to create more engaging user interfaces:
With Java, you already can build much more complex applications in terms of functionality. You have advanced features that can handle complex logic, more so than any other rich Internet platform. What has been challenging in Java development is how to create very easy-to-use interfaces. It’s possible to do, but it’s more complex and requires you to really dive into the code and do some programming that requires low-level knowledge of the relevant Java APIs. With JavaFX, we’re trying to address the challenge of building on top of the existing base we have with Java, but make it easy to create rich interaction models and cinematic-quality consumer user experiences.
The other challenge we’re trying to address has to do with the workflow of how you actually create those types of applications. You usually start with visual designers who create mock-ups of the applications. They use various design tools to do so. They pass off that concept to the programmers, and the programmers usually recreate those from the bottom up. You end up of losing something in the translation. It never looks quite the same, it also takes longer to do.
Our objective is to allow different members of the product team to work together to create the applications: to allow the graphic designers to create their assets directly. Using Project Nile, they can export those assets and provide them to the scripters and programmers who then incorporate those assets directly into the applications.
Singh explained in the interview that while JavaFX can be used to add some pizzazz to existing Swing applications, the real target for the technology is new, more media-rich applications:
With JavaFX, you can directly incorporate Java code into the script. You can pull in libraries to use [existing] functionality, and create the interface using JavaFX. You can re-use all the functionality of your existing Swing application inside a JavaFX app. We will be providing common controls built into JavaFX so that you can rapidly build up an application using standard components. You can create skins for those components, and create a new face for your application, but re-using all the existing logic and libraries and engines beneath the surface.
In addition to extending existing Swing applications, we’re looking to empower new categories of applications that typically have not been done in Java before: browser applications, rich-media applications, mash-up applications. We want to empower Web scripters to be able to use JavaFX Script, which is a declarative language and provides a higher level of abstraction than Java does.
They can then deploy those applications in a browser environment, using JRE 6 Update 10, which is already in beta. So you get the benefit of not only being able to deploy a desktop application, but you can take that application and put [it] in the browser. And, because we’re running off of the same JRE, the user can interact with the application in the browser, but also break free of the browser, and drag and drop the application onto the desktop. In this way, we’re empowering a new category of Web scripters to create browser-based applications, and then they have a choice to deploy that for the desktop as well.
What do you think of JavaFX as a viable rich-client technology for enterprise applications?