blueMarine photographic workflow with Java

1,355 views

Published on

Published in: Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,355
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

blueMarine photographic workflow with Java

  1. 1. blueMarine photographic workflow with Java or Why You Should Really Ship Swing Applications Fabrizio Giudici Senior Java Architect
  2. 2. Overall Presentation Goal Talk about issues with Java Rich Client Applications A real project perspective Enumerate and introduce solutions www.javapolis.com
  3. 3. 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
  4. 4. Java is mature for Rich Desktop Applications. Just look beyond Swing. www.javapolis.com
  5. 5. Java is mature for Rich Desktop Applications. Just look beyond Swing. (beyond - not in another direction) www.javapolis.com
  6. 6. 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
  7. 7. DEMO Splash
  8. 8. 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? www.javapolis.com
  9. 9. Java for Desktop Readiness Phases   blueMarine Phase -1: prior 2005 Slow, poorly integrated, ugly L&F 0.8  Phase 0: 2005 died here  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? www.javapolis.com
  10. 10. Java for Desktop Readiness Phases   blueMarine Phase -1: prior 2005 Slow, poorly integrated, ugly L&F 0.8  Phase 0: 2005 died here  JDK 5 spreads, “Extreme GUI Makeover” starts  Phase +1: 2006-2007  JDK 6, Aerith, Swing blueMarine 0.9  TimingFramework, Nimbus, Filthy Rich Clients  Phase +2: 2008 reborn here  Add NetBeans RCP: Filthy Rich Platform Clients  Ready for complex applications - anyone? www.javapolis.com
  11. 11. Problems www.javapolis.com
  12. 12. Solutions www.javapolis.com
  13. 13. If you can just remember four points...  NetBeans RCP  NetBeans Visual Library  SwingLabs  NASA World Wind for Java www.javapolis.com
  14. 14. 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
  15. 15. References  weblogs.java.net/blog/fabriziogiudici  bluemarine.tidalwave.it  openbluesky.dev.java.net  mistral.tidalwave.it  forceten.tidalwave.it www.javapolis.com
  16. 16. 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 www.javapolis.com
  17. 17. NetBeans RCP www.javapolis.com
  18. 18. Question What do you expect from a (desktop) framework? www.javapolis.com
  19. 19. 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
  20. 20. 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
  21. 21. What is NetBeans RCP? NetBeans { NetBeans IDE NetBeans RCP 22
  22. 22. What is NetBeans RCP? NetBeans { NetBeans IDE NetBeans RCP 23
  23. 23. What is NetBeans RCP? NetBeans { NetBeans IDE NetBeans RCP Your Desktop Application 24
  24. 24. 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
  25. 25. Most important NetBeans RCP APIs  Actions  Modules  DataObjects  Nodes  Dialogs  Options  Explorer  Progress  FileSystem  Visual Library  Lookup  Windowing/docking 26
  26. 26. DEMO Explorers, Viewers, Actions
  27. 27. 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
  28. 28. DataObject represents a file-based entity 29
  29. 29. You can extend DataObject 30
  30. 30. Lookup holds “capabilities” 31
  31. 31. A Node “represents” a DataObject 32
  32. 32. A Node has “capabilities” too 33
  33. 33. Representing set of selected (etc) Nodes 34
  34. 34. A View renders Nodes 35
  35. 35. An Action can be automatically enabled 36
  36. 36. 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
  37. 37. 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
  38. 38. DEMO CoverFlowView
  39. 39. 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
  40. 40. NetBeans Visual Library www.javapolis.com
  41. 41. 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
  42. 42. DEMO LightTable
  43. 43. GeoSpatial Components www.javapolis.com
  44. 44. 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
  45. 45. DEMO GeoViewer
  46. 46. 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
  47. 47. DEMO GeoViewer 3D
  48. 48. Java Imaging APIs www.javapolis.com
  49. 49. 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
  50. 50. Mistral: fix 'em up  Imaging meta-framework  Multiple APIs can be used together  Simplifies APIs  Supports multicore, Jini, Sun Grid www.javapolis.com
  51. 51. 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
  52. 52. A final point www.javapolis.com
  53. 53. 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
  54. 54. Concluding statement Most showstoppers are history now. www.javapolis.com
  55. 55. Concluding statement Most showstoppers are history now. You CAN ship destkop apps. www.javapolis.com
  56. 56. Concluding statement Most showstoppers are history now. You CAN ship destkop apps. There's a world beyond Swing. www.javapolis.com
  57. 57. 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
  58. 58. 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
  59. 59. Q&A View JavaPolis talks @ www.parleys.com
  60. 60. Thank you for your attention

×