We switched a vector editor which used swing to JavaFX (using a standard called 
ARINC 661), and we have no problems of performance in the Editor even for 
thousands of nodes. But I agree that you should not use the obvious 
Swing-converted way to do the same thing in JavaFX.

Hervé

Sent from my iPhone

On 24 juil. 2013, at 09:19, Daniel Zwolenski <zon...@gmail.com> wrote:

> I think the below comment makes it sound more straight forward than it is. In 
> building a diagramming tool there is much more to it than just the rendering 
> frame rate. 
> 
> This topic about CAD-like apps and 'performant' highly visual jfx apps in 
> general has been raised here and in the forums before, without any clear 
> resolution. Chris, the closest we've come to an answer is that it certainly 
> isn't straight forward to do and there are many areas where the intuitive 
> solution (especially for us ex-swing devs) gives results that are horribly 
> unusable. 
> 
> There *might* be a way to get jfx to do this but there's no clear guidelines 
> on how to achieve a 'performant' result. This is why I +1'd your question and 
> added areas I feel need clarification from the jfx team. Unfortunately I'm 
> not entirely sure they know the answers themselves and it generally comes 
> back as a 'you try it and let us know how it goes'. 
> 
> The last time we raised a similar topic it led to an attempt to build a Tower 
> Defender game (led by Richard) in order to 'see how it goes', which revealed 
> some pretty significant problems and the game quickly stalled as a result. 
> 
> Having built a prototype floor plan tool in JFX2 before I can say it did not 
> go smoothly. The things I've listed as wanting best practices for are all 
> areas where I struggled to make jfx achieve decent results in terms of 
> responsiveness, animation speed/smoothness, rendering quality and simplicity 
> and cleanliness of code. 
> 
> The one area where I'd say it did hold up well (as far as I could tell) was 
> frame rate but that didn't help me at all and I doubt would be much 
> consolation for you after you make the massive effort needed to convert your 
> app. 
> 
> 
> 
> On 24/07/2013, at 4:29 PM, Joseph Andresen <joseph.andre...@oracle.com> wrote:
> 
>> I believe JavaFx could do cad, first step would be to provide a simple data 
>> set and boil it down to the best render paths in JavaFX. 
>> 
>> As far as I know it shouldn't be any worse than swing with the slowest 
>> render paths.
>> 
>> -Joe
>> 
>> On Jul 23, 2013, at 8:47 AM, Chris Gay <chris.gay5...@gmail.com> wrote:
>> 
>>> Hello all.
>>> 
>>> Please could someone advise if it is even feasible for me to consider 
>>> re-factoring the following Swing application, so that it becomes a JavaFX 
>>> one. From trying to read about JavaFX, I get the feeling that Oracle never 
>>> intended Java FX for the purpose I need.
>>> 
>>> I have a large Java Swing desktop CAD application which makes heavy use of 
>>> the Java 2D API, and concurrency. It is a Menu Bar driven application, with 
>>> a Toolbar for Tools, and a few buttons, but 99% of the user activity 
>>> concerns selecting and manipulating vector graphical objects in a 
>>> traditional manner using one Tool at a time (think Inkscape or LibreOffice 
>>> Drawing apps). The application has multiple drawings open at the same time 
>>> (but only one is visible), and each Drawing contains it's own Drawing and 
>>> Processing threads (in addition to sharing the Main and Event Threads), 
>>> which keeps the Event Thread lively. Each Drawing contains an ArrayList, 
>>> acting as a Display List of all graphical objects, and each graphical 
>>> object can be a tree structure. In many cases I use simple iteration 
>>> instead of Iterators, simply for speed, and to avoid garbage. The graphical 
>>> objects are lightweight, in that they do not carry references to events and 
>>> handlers. All they carry is their basic geometric data and properties, a 
>>> bounding box which they can lend as Read Only, and a boolean flag to 
>>> indicate selection, which means there can be millions of the objects, with 
>>> a minimum memory footprint. To support them, there are many hundreds of 
>>> methods, which the tools interact with. There can be multiple Drawing 
>>> Windows active on a single drawing, where each Window is backed up by an 
>>> offscreen image, which handles the zoom and sliding buffer behaviour for 
>>> fast scrolling, to allow rapid bit-blt's to the actual window. Lastly, the 
>>> user manipulates the Drawing (Display List), using one of many Tools, where 
>>> the active Tool receives events from the event queue, and then manipulates 
>>> selected and/or unselected graphical objects, by using XOR Mode graphics 
>>> onto the offscreen buffer, generally using callbacks.
>>> 
>>> The system is fast and very responsive on large data sets, but what I do 
>>> not know is whether JavaFX will help me make a better implementation, or 
>>> whether it will fight me all the way. With JavaFX claiming hardware 
>>> acceleration, I do not understand whether it depends on transferring the 
>>> very large data sets into graphics hardware to render, and what happens if 
>>> the hardware cannot cope. So far, I have found little in the way of 
>>> discussions that help me get a mental picture of how JavaFX is intended to 
>>> work. Should I stick with Swing?
>>> 
>>> Regards,
>>> 
>>> Chris
>>> 

Reply via email to