Download - blueMarine photographic workflow with Java
![Page 1: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/1.jpg)
![Page 2: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/2.jpg)
blueMarinephotographic workflow with Java
or Why You Should Really Ship
Swing Applications
Fabrizio GiudiciSenior Java Architect
![Page 3: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/3.jpg)
www.javapolis.com
Overall Presentation Goal
Talk about issues withJava Rich Client Applications
A real project perspective
Enumerate and introduce solutions
![Page 4: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/4.jpg)
www.javapolis.com
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
![Page 5: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/5.jpg)
www.javapolis.com
Java is mature forRich Desktop Applications.
Just look beyond Swing.
![Page 6: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/6.jpg)
www.javapolis.com
Java is mature forRich Desktop Applications.
Just look beyond Swing.
(beyond - not in another direction)
![Page 7: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/7.jpg)
www.javapolis.com
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
![Page 8: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/8.jpg)
DEMO
Splash
![Page 9: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/9.jpg)
www.javapolis.com
Java for Desktop Readiness Phases
Phase -1: prior 2005 Slow, poorly integrated, ugly L&F
Phase 0: 2005 JDK 5 spreads, “Extreme GUI Makeover” starts
Phase +1: 2006-2007 JDK 6, Aerith, SwingLabs matures TimingFramework, Nimbus, Filthy Rich Clients
Phase +2: 2008 Add NetBeans RCP: Filthy Rich Platform Clients Ready for complex applications - anyone?
![Page 10: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/10.jpg)
www.javapolis.com
Java for Desktop Readiness Phases
Phase -1: prior 2005 Slow, poorly integrated, ugly L&F
Phase 0: 2005 JDK 5 spreads, “Extreme GUI Makeover” starts
Phase +1: 2006-2007 JDK 6, Aerith, SwingLabs matures TimingFramework, Nimbus, Filthy Rich Clients
Phase +2: 2008 Add NetBeans RCP: Filthy Rich Platform Clients Ready for complex applications - anyone?
blueMarine 0.8
died here
![Page 11: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/11.jpg)
www.javapolis.com
Java for Desktop Readiness Phases
Phase -1: prior 2005 Slow, poorly integrated, ugly L&F
Phase 0: 2005 JDK 5 spreads, “Extreme GUI Makeover” starts
Phase +1: 2006-2007 JDK 6, Aerith, Swing TimingFramework, Nimbus, Filthy Rich Clients
Phase +2: 2008 Add NetBeans RCP: Filthy Rich Platform Clients Ready for complex applications - anyone?
blueMarine 0.8
died here
blueMarine 0.9
reborn here
![Page 12: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/12.jpg)
www.javapolis.com
Problems
![Page 13: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/13.jpg)
www.javapolis.com
Solutions
![Page 14: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/14.jpg)
www.javapolis.com
If you can just remember four points...
NetBeans RCP NetBeans Visual Library SwingLabs NASA World Wind for Java
![Page 15: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/15.jpg)
www.javapolis.com
OpenBlueSky
Where generic stuff spins off blueMarine Can be used for other applications Consolidated stuff will be submitted for
standard APIs enhancement
![Page 16: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/16.jpg)
www.javapolis.com
References
weblogs.java.net/blog/fabriziogiudici bluemarine.tidalwave.it openbluesky.dev.java.net mistral.tidalwave.it forceten.tidalwave.it
![Page 17: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/17.jpg)
www.javapolis.com
References
www.netbeans.org/features/platform www.netbeans.org/community/magazine graph.netbeans.org www.swinglabs.org timingframework.dev.java.net worldwind.arc.nasa.gov/java quaqua.dev.java.net nimbus.dev.java.net personales.ya.com/nimrod
![Page 18: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/18.jpg)
www.javapolis.com
NetBeans RCP
![Page 19: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/19.jpg)
www.javapolis.com
Question
What do you expect from a (desktop) framework?
![Page 20: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/20.jpg)
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
![Page 21: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/21.jpg)
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
![Page 22: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/22.jpg)
22
What is NetBeans RCP?
NetBeansNetBeans IDE
NetBeans RCP{
![Page 23: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/23.jpg)
23
What is NetBeans RCP?
NetBeansNetBeans IDE
NetBeans RCP{
![Page 24: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/24.jpg)
24
What is NetBeans RCP?
NetBeansNetBeans IDE
NetBeans RCP{Your Desktop Application
![Page 25: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/25.jpg)
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
![Page 26: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/26.jpg)
26
Most important NetBeans RCP APIs
Actions DataObjects Dialogs Explorer FileSystem Lookup
Modules Nodes Options Progress Visual Library Windowing/docking
![Page 27: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/27.jpg)
DEMO
Explorers, Viewers, Actions
![Page 28: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/28.jpg)
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”
![Page 29: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/29.jpg)
29
DataObject represents a file-based entity
![Page 30: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/30.jpg)
30
You can extend DataObject
![Page 31: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/31.jpg)
31
Lookup holds “capabilities”
![Page 32: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/32.jpg)
32
A Node “represents” a DataObject
![Page 33: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/33.jpg)
33
A Node has “capabilities” too
![Page 34: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/34.jpg)
34
Representing set of selected (etc) Nodes
\
![Page 35: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/35.jpg)
35
A View renders Nodes
![Page 36: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/36.jpg)
36
An Action can be automatically enabled
![Page 37: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/37.jpg)
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
![Page 38: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/38.jpg)
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
![Page 39: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/39.jpg)
DEMO
CoverFlowView
![Page 40: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/40.jpg)
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)
![Page 41: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/41.jpg)
www.javapolis.com
NetBeans Visual Library
![Page 42: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/42.jpg)
42
NetBeans Visual Library
Support for graph-oriented modeling Nodes Arcs Routing Interaction
Can be creatively used Whiteboard paradigm Use interactivity: touch, drag, change objects
PS Can be used with plain Swing apps
add screenshotfrom UML or MIDPdesigner
![Page 43: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/43.jpg)
DEMO
LightTable
![Page 44: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/44.jpg)
www.javapolis.com
GeoSpatial Components
![Page 45: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/45.jpg)
www.javapolis.com
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
![Page 46: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/46.jpg)
DEMO
GeoViewer
![Page 47: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/47.jpg)
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
![Page 48: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/48.jpg)
DEMO
GeoViewer 3D
![Page 49: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/49.jpg)
www.javapolis.com
Java Imaging APIs
![Page 50: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/50.jpg)
www.javapolis.com
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
![Page 51: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/51.jpg)
www.javapolis.com
Mistral: fix 'em up
Imaging meta-framework Multiple APIs can
be used together Simplifies APIs Supports multicore,
Jini, Sun Grid
![Page 52: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/52.jpg)
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
![Page 53: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/53.jpg)
www.javapolis.com
A final point
![Page 54: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/54.jpg)
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)
![Page 55: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/55.jpg)
www.javapolis.com
Concluding statement
Most showstoppers are history now.
![Page 56: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/56.jpg)
www.javapolis.com
Concluding statement
Most showstoppers are history now.You CAN ship destkop apps.
![Page 57: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/57.jpg)
www.javapolis.com
Concluding statement
Most showstoppers are history now.You CAN ship destkop apps.
There's a world beyond Swing.
![Page 58: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/58.jpg)
www.javapolis.com
Concluding statement
Most showstoppers are history now.You CAN ship destkop apps.
There's a world beyond Swing.(SwingLabs, NetBeans RCP, etc...)
![Page 59: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/59.jpg)
www.javapolis.com
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.
![Page 60: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/60.jpg)
Q&AView JavaPolis talks @ www.parleys.com
![Page 61: blueMarine photographic workflow with Java](https://reader034.vdocument.in/reader034/viewer/2022051514/54932e16ac79593b2e8b47b9/html5/thumbnails/61.jpg)
Thank you for your attention