bluemarine photographic workflow with java

Post on 18-Dec-2014

966 Views

Category:

Business

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

blueMarinephotographic workflow with Java

or Why You Should Really Ship

Swing Applications

Fabrizio GiudiciSenior Java Architect

www.javapolis.com

Overall Presentation Goal

Talk about issues withJava Rich Client Applications

A real project perspective

Enumerate and introduce solutions

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

www.javapolis.com

Java is mature forRich Desktop Applications.

Just look beyond Swing.

www.javapolis.com

Java is mature forRich Desktop Applications.

Just look beyond Swing.

(beyond - not in another direction)

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

DEMO

Splash

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?

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

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

www.javapolis.com

Problems

www.javapolis.com

Solutions

www.javapolis.com

If you can just remember four points...

NetBeans RCP NetBeans Visual Library SwingLabs NASA World Wind for Java

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

www.javapolis.com

References

weblogs.java.net/blog/fabriziogiudici bluemarine.tidalwave.it openbluesky.dev.java.net mistral.tidalwave.it forceten.tidalwave.it

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

www.javapolis.com

NetBeans RCP

www.javapolis.com

Question

What do you expect from a (desktop) framework?

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

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

22

What is NetBeans RCP?

NetBeansNetBeans IDE

NetBeans RCP{

23

What is NetBeans RCP?

NetBeansNetBeans IDE

NetBeans RCP{

24

What is NetBeans RCP?

NetBeansNetBeans IDE

NetBeans RCP{Your Desktop Application

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

26

Most important NetBeans RCP APIs

Actions DataObjects Dialogs Explorer FileSystem Lookup

Modules Nodes Options Progress Visual Library Windowing/docking

DEMO

Explorers, Viewers, Actions

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”

29

DataObject represents a file-based entity

30

You can extend DataObject

31

Lookup holds “capabilities”

32

A Node “represents” a DataObject

33

A Node has “capabilities” too

34

Representing set of selected (etc) Nodes

\

35

A View renders Nodes

36

An Action can be automatically enabled

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

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

DEMO

CoverFlowView

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)

www.javapolis.com

NetBeans Visual Library

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

DEMO

LightTable

www.javapolis.com

GeoSpatial Components

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

DEMO

GeoViewer

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

DEMO

GeoViewer 3D

www.javapolis.com

Java Imaging APIs

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

www.javapolis.com

Mistral: fix 'em up

Imaging meta-framework Multiple APIs can

be used together Simplifies APIs Supports multicore,

Jini, Sun Grid

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

www.javapolis.com

A final point

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)

www.javapolis.com

Concluding statement

Most showstoppers are history now.

www.javapolis.com

Concluding statement

Most showstoppers are history now.You CAN ship destkop apps.

www.javapolis.com

Concluding statement

Most showstoppers are history now.You CAN ship destkop apps.

There's a world beyond Swing.

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...)

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.

Q&AView JavaPolis talks @ www.parleys.com

Thank you for your attention

top related