The document discusses Java desktop application development. It summarizes a presentation about issues with Java rich client applications and introduces solutions like NetBeans RCP and SwingLabs. The presentation discusses the speaker's qualifications and experience with the blueMarine project, a photographic workflow application. It demonstrates NetBeans RCP features and components like explorers, viewers, and actions. The presentation concludes that most challenges for shipping desktop apps are now history and developers can be creative in using frameworks beyond Swing.
3. Overall Presentation Goal
Talk about issues with
Java Rich Client Applications
A real project perspective
Enumerate and introduce solutions
www.javapolis.com
4. Speaker’s Qualifications
Senior Java Architect with 12 years of Java
experience
Project leading, mentoring, teaching
Member of JUG Milano, NetBeans Dream
Team
Speaker at JavaPolis, Jazoon, JavaOne,
Jini Meeting
Writer for NetBeans Magazine, Mokabyte
Blogger at Java.Net
www.javapolis.com
5. Java is mature for
Rich Desktop Applications.
Just look beyond Swing.
www.javapolis.com
6. Java is mature for
Rich Desktop Applications.
Just look beyond Swing.
(beyond - not in another direction)
www.javapolis.com
7. The blueMarine project
Whole photographic workflow
Be creative with technology
Be open - more than some scripting APIs
FLOSS is not (only) a matter of freedom...
... but of better stuff
Do special things for special communities
e.g. amateur astrophotographers, birdwatchers, ...
It all started in 2003
www.javapolis.com
14. If you can just remember four points...
NetBeans RCP
NetBeans Visual Library
SwingLabs
NASA World Wind for Java
www.javapolis.com
15. OpenBlueSky
Where generic stuff spins off blueMarine
Can be used for other applications
Consolidated stuff will be submitted for
standard APIs enhancement
www.javapolis.com
19. Question
What do you expect from a (desktop)
framework?
www.javapolis.com
20. Desktop frameworks
Solid foundation to base your application
APIs working together, well tested
Service discovery and provider
Plugin support
Messaging infrastructure (via events)
Integrated help system
And more
20
21. Swing is not a framework
Missing sophisticated components
date picker, tree+table, etc...
Neither service discovery nor providers
No plugins
No messaging (only simple listeners)
Threading issues
JSR-296 (Swing Application Framework) not
good for large applications
21
24. What is NetBeans RCP?
NetBeans { NetBeans IDE
NetBeans RCP
Your Desktop Application
24
25. NetBeans RCP
You start with a skeleton application
You populate it
panels, views
actions, menus, toolbars
etc..
Often declaratively
Based on Swing
You can integrate third parties' components
You can control the Look&Feel
25
28. Lookup
Plays a fundamental role in many APIs
Repository for a bag of objects
Locator for services
Service service =
Lookup.getDefault().lookup(Service.class);
Fires events
“Global” lookup can be used as a simple
“event bus”
28
37. Some points
You don't need to always use everything
E.g. just Nodes, no DataObjects
Can use them “incrementally”
NetBeans RCP keeps objects in sync
E.g. updating a DataObject → bound Nodes
E.g. Nodes bound to the same DataObject
37
38. NetBeans RCP stuff can be extended
What about a “cover flow” view?
Use JOGL for fast 3D
Just extend and create a new View
TimingFramework for animating stuff
38
40. Update Centers
NetBeans components (.nbm)
can be added / removed on the fly
can declare dependencies
can be versioned
can add actions, menus, toolbars
Pretty good for plugins
(See demo in a few minutes)
40
42. NetBeans Visual Library
Support for graph- add screenshot
oriented modeling from UML or MIDP
designer
Nodes
Arcs
Routing
Interaction
Can be creatively used
Whiteboard paradigm
Use interactivity: touch, drag, change objects
PS Can be used with plain Swing apps
42
45. JXMapViewer
A generic 2D, tile-based map renderer
See Joshua Marinacci's blog
Retrieves tiles from the web (or locally)
Part of Swing-WS (SwingLabs)
Can stick objects
to the map
Hint: integrate it with
the Visual Library
www.javapolis.com
47. NASA World Wind for Java
Java version of NASA World Wind
3D software that renders the Earth
NASA terrain imagery
Other data sets can be plugged in
if legal stuff is ok...
Based on JOGL
47
50. Java Imaging APIs
Many options (and dispersive?)
Java2D, JAI, ImageJ, JMagick, JHLabs, ...
Some too difficult
Wild behaviour and performance differences
Parallel Computing is a must
Multi Core
Small, local mini-grids
Massive Grid Computing
There's not a global community
www.javapolis.com
51. Mistral: fix 'em up
Imaging meta-framework
Multiple APIs can
be used together
Simplifies APIs
Supports multicore,
Jini, Sun Grid
www.javapolis.com
52. Open Problems for blueMarine
Java still misses something on the desktop
e.g. video streaming, USB support
Can be worked around with JNI/JNA
Java 7 is not too far
Some NB RCP stuff not fully customizable
Better integration NB RCP SwingLabs
Compliance to Apple HIG
Linux + JOGL issues
No JAI native support for Mac OS X
52
54. Be efficient with innovation
“Cool stuff„ often means complexity
Go quickly from idea to prototype
Integrate easily others' stuff
NIH isn't a killer-idea, but an idea-killer
Build cool demonstrators
... and cool applications soon after
(stay tuned for some new cool stuff)
54
56. Concluding statement
Most showstoppers are history now.
You CAN ship destkop apps.
www.javapolis.com
57. Concluding statement
Most showstoppers are history now.
You CAN ship destkop apps.
There's a world beyond Swing.
www.javapolis.com
58. Concluding statement
Most showstoppers are history now.
You CAN ship destkop apps.
There's a world beyond Swing.
(SwingLabs, NetBeans RCP, etc...)
www.javapolis.com
59. Concluding statement
Most showstoppers are history now.
You CAN ship destkop apps.
There's a world beyond Swing.
(SwingLabs, NetBeans RCP, etc...)
Be creative. Mix 'em up.
www.javapolis.com