I always had a love-hate relationship with Java on the client. I also have used C++ Builder with VCL and Qt occasionally but the company I work is mostly a Java shop.
I think is interesting to mention the embedded space where Java clients have been used for many years.
At my company we have been using Java AWT for POS devices (with a highly custom Touchscreen interface) for more than 20 years, started with PersonalJava, Java 1.1.8, Java 1.3, Java 1.6 and now Java 1.8. Over these years we have deployed +500.000 devices.
Sadly, the latest product uses HTML5 for UI (with an internal backed in Java to access peripherals and run the business logic). But we still have many customers with POS devices running Java AWT.
Neat! I've never heard of AWT running on a touch screen. I work for Codename One, which is heavily influenced by Swing (one easy way to think about it is that it is Swing for mobile), so I can imagine how this would be possible - but still neat to hear about it in action. Sorry to hear that it too has been overtaken by the new JS order :(.
Do you have any more details about the AWT system? Screen shots or other materials?
I cannot share screens due NDA. The POS uses 12" and 14" screens at 640x480 and 800x600 respectively. The use of the touchscreen is via Mouse Events, so there is nothing sophisticated with that. What I meant by "highly custom touchscreen interface" is that we don't use any of the standard AWT controls, instead we made our own controls derived from Canvas and Panel, these controls are visually designed to be used with a touchscreen.
Yes it does. I guess, I was trying to get at the fact that JavaFX was designed around the GPU, to get the max out of it. Scene graphs and shaders are at its core. Even with Swing's hardware acceleration, its design (immediate-mode 2D graphics API) is still quite bound to the CPU for layout, and rendering. I didn't want to dig to deep into the tech in this article, but that is what I was trying to express by emphasizing JavaFX's GPU acceleration. I see how it gives the false impression that Swing didn't have any acceleration itself.
I'm not sure I would call it "layout", but with a scene graph, JavaFX can basically push all of the UI elements to the GPU. Transformations can be applied to move those elements around, add effects, scale/rotate, etc.. without needing to "re-upload" them to the GPU. This opens the door to many more optimizations without taxing the CPU. This is heavy on the GPU, which, I suspect contributed to the delay in porting JavaFX to mobile as earlier mobile devices didn't have powerful enough graphics to handle it.
Excellent article!
I always had a love-hate relationship with Java on the client. I also have used C++ Builder with VCL and Qt occasionally but the company I work is mostly a Java shop.
I think is interesting to mention the embedded space where Java clients have been used for many years.
At my company we have been using Java AWT for POS devices (with a highly custom Touchscreen interface) for more than 20 years, started with PersonalJava, Java 1.1.8, Java 1.3, Java 1.6 and now Java 1.8. Over these years we have deployed +500.000 devices.
Sadly, the latest product uses HTML5 for UI (with an internal backed in Java to access peripherals and run the business logic). But we still have many customers with POS devices running Java AWT.
Neat! I've never heard of AWT running on a touch screen. I work for Codename One, which is heavily influenced by Swing (one easy way to think about it is that it is Swing for mobile), so I can imagine how this would be possible - but still neat to hear about it in action. Sorry to hear that it too has been overtaken by the new JS order :(.
Do you have any more details about the AWT system? Screen shots or other materials?
I cannot share screens due NDA. The POS uses 12" and 14" screens at 640x480 and 800x600 respectively. The use of the touchscreen is via Mouse Events, so there is nothing sophisticated with that. What I meant by "highly custom touchscreen interface" is that we don't use any of the standard AWT controls, instead we made our own controls derived from Canvas and Panel, these controls are visually designed to be used with a touchscreen.
So sad when technologies die behind corporate NDAs :(
just a typo comment... change instalment --> installment
https://grammarist.com/spelling/installment-instalment/
My computer complains. I must listen :(
Swing has GPU acceleration
Yes it does. I guess, I was trying to get at the fact that JavaFX was designed around the GPU, to get the max out of it. Scene graphs and shaders are at its core. Even with Swing's hardware acceleration, its design (immediate-mode 2D graphics API) is still quite bound to the CPU for layout, and rendering. I didn't want to dig to deep into the tech in this article, but that is what I was trying to express by emphasizing JavaFX's GPU acceleration. I see how it gives the false impression that Swing didn't have any acceleration itself.
Thanks for the insight! Does JavaFX do layout in the GPU?
I'm not sure I would call it "layout", but with a scene graph, JavaFX can basically push all of the UI elements to the GPU. Transformations can be applied to move those elements around, add effects, scale/rotate, etc.. without needing to "re-upload" them to the GPU. This opens the door to many more optimizations without taxing the CPU. This is heavy on the GPU, which, I suspect contributed to the delay in porting JavaFX to mobile as earlier mobile devices didn't have powerful enough graphics to handle it.