JavaFX graphics performance and suitability for advanced animations

steve.x.northover at oracle.com steve.x.northover at oracle.com
Fri May 31 07:31:09 PDT 2013


Like I say, ignore this.

Steve

On 31/05/2013 10:20 AM, steve.x.northover at oracle.com wrote:
> Hi John,
>
> Let's get very specific.  Can you post a small example where the 
> animation performs poorly?  Then we can all get to the bottom of it.
>
> Thanks,
> Steve
>
> On 31/05/2013 8:30 AM, John C. Turnbull wrote:
>> Hi Richard,
>>
>> Let me start by saying that on re-reading my last post I realised 
>> that it
>> had a "tone" which was not intended and may have appeared overly 
>> critical or
>> negative.  If you or anyone on the JavaFX development team were 
>> offended in
>> any way then I am sorry.  All I can say in my defence was that it was 
>> posted
>> after midnight at the end of a very long day...
>>
>> Anyway, I want you to know that I am not here to engage in gratuitous 
>> JavaFX
>> bashing or trolling.  In fact, I am one of the strongest supporters and
>> proponents of JavaFX that there is.  I am in the process of bringing 
>> JavaFX
>> into my (large corporate) workplace and am involved in a private project
>> which I take very seriously that will also be using JavaFX. 
>> Consequently I
>> have more at stake and more interest in having JavaFX succeed than 
>> most.  If
>> everything goes according to "plan", I will be focussing on Java and
>> especially JavaFX for the next 10 years or so.
>>
>> >From my perspective it is important to address the features or 
>> issues with
>> JavaFX that the competitors perceive as weaknesses and reasons why the
>> technology is a "dead duck".  The JavaFX community is vibrant with many
>> well-known evangelists who are doing a very good job of promoting 
>> JavaFX and
>> highlighting its many benefits but it is rare for them to say anything
>> negative about it.
>>
>> Is this because there are no "negatives" with JavaFX or is just that 
>> they
>> steer clear of them?  I tend to think that they prefer to concentrate 
>> on the
>> pros rather than the cons and that's fair enough, they are there to 
>> further
>> the cause of JavaFX rather than detract from it.
>>
>> I am someone who has been told tends to "say the things that other 
>> people
>> think but are afraid to say".  I am not out to  win any popularity 
>> contests
>> and will call a spade a spade.  As I said, when it comes to JavaFX, I am
>> doing this because we need a balanced argument that confronts the 
>> opposition
>> head on.  Many of the criticisms levelled at JavaFX by competitors 
>> have a
>> valid foundation and as community we need to be able to respond to them.
>> The issues I highlighted in my last post are real and I very much 
>> believe
>> that if solutions are not found then JavaFX is going to struggle in the
>> "real world" in the longer term.
>>
>> The market for graphics toolkits and cross-platform developer tools is
>> extremely competitive and cut-throat and no one is going to give 
>> JavaFX a
>> break.  I am merely trying to bring these issues up within the JavaFX
>> community so we can address them as soon as possible.  As I said, I 
>> am very
>> much *for* JavaFX.  I both want it to succeed and *need* it to succeed.
>>
>> As Daniel Zwolenski has posted, animations which I have found to perform
>> quite poorly in JavaFX work very well inside a web page with JavaScript
>> (with or without Canvas) on the exact same machine.  Clearly then 
>> there must
>> be something fundamentally different in the way these competing 
>> technologies
>> are handling animations.  To me this says that it must be possible for
>> JavaFX to achieve similar levels of performance as other technologies 
>> are
>> able to extract better performance out of the same OS and hardware.
>>
>> This says to me that developers who are not necessarily tied to the Java
>> language for any reason would obviously choose a technology that 
>> performs
>> better.  This is the concern.  This is the kind of thing we need to 
>> redress.
>>
>> Whilst my comments may be seen to be unnecessarily critical, I am 
>> being far
>> kinder than our competitors.  New features can be added to JavaFX but 
>> if the
>> "core" features are not working as well as the other products on the 
>> market
>> then clearly there is a real problem.
>>
>> I made a comment along the lines that I feel the animations in the 
>> Ensemble
>> demos do very little to promote JavaFX and, as harsh as it may sound, I
>> stand by that.  Scott Palmer has echoed those sentiments with his recent
>> commentary on Brick Breaker.  While obviously it's a lot of work, JavaFX
>> needs at least one truly awesome demo that showcases everything it 
>> has to
>> offer.  If such a demo is not possible with JavaFX as it currently 
>> stands
>> then that tells us something.
>>
>> My own personal feelings about JavaFX are that it is an absolutely 
>> awesome
>> product with amazing potential.  It is a vast improvement over Swing 
>> and,
>> although not many people outside the Java community realise this, it has
>> features and capabilities that other competing products simply don't 
>> have.
>> If we can get the basics working better, JavaFX has the potential to 
>> be a
>> very significant player and not just for developers who have 
>> traditionally
>> programmed in Java.  For me, they are the people we should really be
>> targeting.
>>
>> Also, I think the JavaFX development team are doing a first class 
>> job.  Even
>> though I think I made this clear, none of my critical commentary is 
>> directed
>> at them.  I also acknowledge that my references to the policies of 
>> Oracle
>> management are not particularly helpful in this forum as clearly 
>> nothing I
>> say here is going to change anything in that respect.  Such comments
>> probably only serve to frustrate the development team even more than 
>> they
>> are already are.
>>
>> So, in summary, I am here to help.  Whilst you may not agree with my
>> methods, please know that I have the best interests of JavaFX and the
>> community in mind.  I am prepared to do whatever it takes to ensure the
>> success of JavaFX on a vast variety of platforms and for as long as
>> possible.  I am going to devote some time into building OpenJFX and 
>> trying
>> to get to the bottom of the performance issues I have informally 
>> reported.
>>
>> If other products can achieve high-quality and high-performance 
>> animations
>> on my computers then why can't JavaFX?  The answers must be out there...
>>
>> -jct
>>
>> -----Original Message-----
>> From: Richard Bair [mailto:richard.bair at oracle.com]
>> Sent: Friday, 31 May 2013 01:12
>> To: John C. Turnbull
>> Cc: openjfx-dev at openjdk.java.net
>> Subject: Re: JavaFX graphics performance and suitability for advanced
>> animations
>>
>> Hi John,
>>
>>> Graphics?  Yes, to a point.  But my post was really about graphics and
>>> the issues related to performance.  Again, unless those issues are
>>> resolved then it's not appropriate to state that JavaFX is suitable for
>> "graphics".
>>
>> You asked what the "full range of applications for which JavaFX is or 
>> will
>> be suitable for".
>>
>>> Then you mention Halo 5.  I have to say the subtext here troubles me
>>> greatly.  If I read you correctly then you are saying that JavaFX is
>>> not really suitable for games (at least anything beyond the demands of
>>> something like Solitaire).  As someone else pointed out, what is point
>>> of developing 3D support in JavaFX if it is not really suitable for
>>> games?  To say it is not suitable for games implies that it is not
>>> really suitable for *any* application that requires performant
>>> animations and visualisations.  What use then is the 3D API?
>> That's not fair at all. There are a *lot* of enterprise use cases for 
>> 3D,
>> and we get these requests all the time. Whether we're taking about 3D
>> visualizations for medical or engineering applications or consumer
>> applications (product display, etc), there is a requirement for 3D 
>> that are
>> broader than real time first person shooters.
>>
>> Game engines often have very specialized scene graphs (sometimes 
>> several of
>> them) as well as very specialized tricks for getting the most out of 
>> their
>> graphics cards. When we expose API that allows people to hammer the card
>> directly, then it would be possible for somebody to build some of the 
>> UI in
>> FX and let their game engine be hand written (in Unity or JOGL or 
>> whatever).
>>
>>>>> 4.       Is JavaFX more targeted at form-based UIs rather than high
>>>>> performance graphics?
>>>> No.
>>> Again, good to know but where are all the high-performance JavaFX
>>> apps?  So far I have seen nothing but form-based apps. Wouldn't it be
>>> prudent for Oracle to include a "showcase" app or game that shows us
>>> the full capabilities of JavaFX with high-performance graphics?
>>>
>>> I am sure I am not alone in feeling that the animation examples in
>>> Ensemble do very little to promote the graphics capabilities of JavaFX.
>> Are you offering to contribute? :-)
>>
>>>> Are your slow examples reproducible? If so we need the test case. Is
>>>> there
>>> an issue filed? We can't fix things we can't reproduce.
>>>> We spend a *considerable* amount of time and energy on performance
>>>> and for
>>> the things we're measuring we're doing well.
>>>> As the saying goes "what's measured, improves". After the switch to
>>>> gradle
>>> and the new project layout, one thing I'm going to
>>>> look at is using JMH[2] in OpenJFX so we can write micro benchmarks
>>>> and
>>> have them easy for everybody to run and
>>>> contribute to. Our current set of micro benchmarks are based on the
>>> predecessor of JMH which was the
>>>> JRockit benchmark suite and was proprietary (hence we cannot just
>>>> open
>>> source our existing benchmarks without doing some rewrite).
>>>
>>> All good points.
>>>
>>> However, I am not sure that having me preparing "reproducible" test
>>> cases will actually help.  In my experience, the Ensemble app already
>>> serves this purpose.  The choppiness I describe is *always* prevalent
>>> when I run the animations and transitions in Ensemble (including
>>> Ensemble 8).  The only variation is in the degree of that choppiness.
>> Then start with that, something absolutely dead simple like a path 
>> animation
>> or rotate transition and lets figure out how to measure the jitter 
>> and get
>> it into our benchmark suite.
>>
>> Richard=
>>
>



More information about the openjfx-dev mailing list