SlideShare une entreprise Scribd logo
1  sur  65
Télécharger pour lire hors ligne
blueMarine
Or Why You Should Really Ship Swing
Applications
Fabrizio Giudici, Senior Java Architect, Tidalwave s.a.s.

TS-5483
Talk about issues with Java™ platform's Rich
Client Applications; enumerate and introduce
solutions from the perspective of a real project.
“Java is mature for Rich Desktop Applications.
Just look beyond Swing.”




                                    2008 JavaOneSM Conference | java.sun.com/javaone |   2
Agenda

 Introduction
 NetBeans™ Software RCP
 Visual Library
 GeoSpatial Components
 Java Platform Imaging APIs
 Conclusion




                              2008 JavaOneSM Conference | java.sun.com/javaone |   3
blueMarine introductory video




                            2008 JavaOneSM Conference | java.sun.com/javaone |   4
Speaker’s Qualifications

  Senior Java Architect with 12 years of Java platform
  experience
  Project leading, mentoring, teaching
  Member of JUG Milano, NetBeans Software Dream Team
  Speaker at JavaPolis, Jazoon, JavaOneSM Event, JiniSM
  Meeting
  Writer for NetBeans Software Magazine, Mokabyte
  Blogger at Java.Net




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   5
Java Platform on the Desktop: Readiness Phases

 Phase -1: prior 2005
  • Slow, poorly integrated, ugly L&F
 Phase 0: 2005
  • JDK™ release 5 spreads, “Extreme GUI Makeover” starts
 Phase +1: 2006-2007
  • JDK™ release 6, Aerith, SwingLabs matures
  • TimingFramework, Nimbus, Filthy Rich Clients
 Phase +2: 2008
  • Add NetBeans Software RCP: Filthy Rich Platform Clients
  • Ready for complex applications - anyone?


                                                2008 JavaOneSM Conference | java.sun.com/javaone |   6
Java Platform on the Desktop: Readiness Phases

 Phase -1: prior 2005
                               blueMarine 0.8
  • Slow, poorly integrated, ugly L&F
 Phase 0: 2005
                               died here
  • JDK™ release 5 spreads, “Extreme GUI Makeover” starts
 Phase +1: 2006-2007
  • JDK™ release 6, Aerith, SwingLabs matures
  • TimingFramework, Nimbus, Filthy Rich Clients
 Phase +2: 2008
  • Add NetBeans Software RCP: Filthy Rich Platform Clients
  • Ready for complex applications - anyone?


                                                2008 JavaOneSM Conference | java.sun.com/javaone |   7
Java Platform on the Desktop: Readiness Phases

 Phase -1: prior 2005
                               blueMarine 0.8
  • Slow, poorly integrated, ugly L&F
 Phase 0: 2005
                               died here
  • JDK™ release 5 spreads, “Extreme GUI Makeover” starts
 Phase +1: 2006-2007
                               blueMarine 0.9
  • JDK™ release 6, Aerith, SwingLabs matures
  • TimingFramework, Nimbus, Filthy Rich Clients
 Phase +2: 2008                reborn here
  • Add NetBeans Software RCP: Filthy Rich Platform Clients
  • Ready for complex applications - anyone?


                                                2008 JavaOneSM Conference | java.sun.com/javaone |   8
Problems




           2008 JavaOneSM Conference | java.sun.com/javaone |   9
Solutions




            2008 JavaOneSM Conference | java.sun.com/javaone |   10
If you can just remember four points

  NetBeans Software RCP
  NetBeans Visual Library
  SwingLabs
  NASA World Wind for Java Platform




                                      2008 JavaOneSM Conference | java.sun.com/javaone |   11
OpenBlueSky

 Where generic stuff spins off blueMarine
 Can be used for other applications
 Consolidated stuff going to PlatformX




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   12
Agenda

 Introduction
 NetBeans Software RCP
 Visual Library
 GeoSpatial Components
 Java Platform Imaging APIs
 Conclusion




                              2008 JavaOneSM Conference | java.sun.com/javaone |   13
Question

 What do you expect from a (desktop) framework?




                                     2008 JavaOneSM Conference | java.sun.com/javaone |   14
Desktop Frameworks

 Solid foundation to base your application on
 APIs working together, well tested
 Service discovery and provider
 Plugin support
 Messaging infrastructure (via events)
 Integrated help system
 And more




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   15
Swing is not a framework

 Missing sophisticated components
  • e.g.: date picker, tree+table, etc...
 Neither service discovery nor providers
 No plugins
 No messaging (only simple listeners)
 Threading issues
 JSR-296 (Java Specification Request Swing Application
 Framework) not good for large applications




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   16
What is NetBeans Software RCP?




   NetBeans   {   NetBeans IDE
                  NetBeans RCP


                             2008 JavaOneSM Conference | java.sun.com/javaone |   17
What is NetBeans Software RCP?




   NetBeans   {   NetBeans IDE
                  NetBeans RCP


                             2008 JavaOneSM Conference | java.sun.com/javaone |   18
What is NetBeans Software RCP?




   NetBeans   {   NetBeans IDE
              NetBeans RCP
   Your Desktop Application

                             2008 JavaOneSM Conference | java.sun.com/javaone |   19
NetBeans Software 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



                                                  2008 JavaOneSM Conference | java.sun.com/javaone |   20
Most important NetBeans RCP APIs

 Actions               Modules
 DataObjects           Nodes
 Dialogs               Options
 Explorer              Progress
 FileSystem            Visual Library
 Lookup                Windowing/docking




                               2008 JavaOneSM Conference | java.sun.com/javaone |   21
Explorers, Viewers, Actions




                              2008 JavaOneSM Conference | java.sun.com/javaone |   22
Lookup API

 Plays a fundamental role in many APIs
 Repository for a bag of objects
 Locator for services
 Fires events
 “Global” lookup can be used as a simple “event bus”



      Service service =
         Lookup.getDefault().lookup(Service.class);




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   23
DataObject represents a file-based entity




                                2008 JavaOneSM Conference | java.sun.com/javaone |   24
You can extend DataObject




                            2008 JavaOneSM Conference | java.sun.com/javaone |   25
Creating a new DataObject
layer.xml:
<filesystem>
      <folder name="Services">
           <folder name="MIMEResolver">
               <file name="PhotoResolver.xml" url="PhotoResolver.xml">
               </file>
           </folder>
      </folder>
</filesystem>

PhotoResolver.xml:
<MIME-resolver>
     <file>
          <ext name="TIF"/>
          <ext name="TIFF"/>
          <resolver mime="image/tiff"/>
     </file>
     <!-- others ext/mime mappings -->
</MIME-resolver>


                                               2008 JavaOneSM Conference | java.sun.com/javaone |   26
Creating a new DataObject
public class PhotoDataObject extends MultiDataObject { ... }

public class PhotoDataLoader extends UniFileLoader {
    public PhotoDataLoader() {
        // contains “image/jpg”, “image/tiff”, etc...
        String[] mimeTypes = ImageIO.getReaderMIMETypes();
        for (final String mimeType : mimeTypes) {
            getExtensions().addMimeType(mimeType);
          }
      }

     protected MultiDataObject createMultiObject(FileObject file) {
         return new PhotoDataObject(file, this);
       }

     //...
 }




                                              2008 JavaOneSM Conference | java.sun.com/javaone |   27
Lookup holds “capabilities”




                              2008 JavaOneSM Conference | java.sun.com/javaone |   28
Node “represents” DataObject




                               2008 JavaOneSM Conference | java.sun.com/javaone |   29
Node has “capabilities” too




                              2008 JavaOneSM Conference | java.sun.com/javaone |   30
Managing basic objects
File file = new File("photo.jpg");
FileObject fileObject = FileUtil.toFileObject(file);
DataObject dataObject = DataObject.find(fileObject);
// Note: static type is DataObject,
//       not PhotoDataObject

Node node = dataObject.getNodeDelegate();

// Retrieve capabilities
// They have been set by PhotoDataObject constructor

Metadata metadata = dataObject.getLookup().
                    lookup(Metadata.class);
// or
Metadata metadata = node.getLookup().
                    lookup(Metadata.class);

                                    2008 JavaOneSM Conference | java.sun.com/javaone |   31
Representing sets of Nodes




                      




                             2008 JavaOneSM Conference | java.sun.com/javaone |   32
View renders Nodes




                     2008 JavaOneSM Conference | java.sun.com/javaone |   33
Actions can be automatically enabled




                              2008 JavaOneSM Conference | java.sun.com/javaone |   34
Declaring Actions
<filesystem>
    <folder name="Actions">
        <folder name="Window">
             <file name="mypkg-CalendarExplorerAction.instance"/>
        </folder>
    </folder>

    <!-- Adds the action to the Menu/Window main menu. -->
    <folder name="Menu">
        <folder name="Window">
            <file name="CalendarExplorerAction.shadow">
                <attr name="originalFile"
stringvalue="Actions/Window/mypkg-CalendarExplorerAction.instance"/>
                <attr name="position" intvalue="120"/>
            </file>
        </folder>
    </folder>




                                             2008 JavaOneSM Conference | java.sun.com/javaone |   35
Declaring Actions
    <!-- Adds the actions to the Component toolbar. -->
    <folder name="Toolbars">
        <folder name="Explorer">
            <file name="mypkg-CalendarExplorerAction.shadow">
                <attr name="originalFile"
stringvalue="Actions/Window/mypkg-CalendarExplorerAction.instance"/>
                <attr name="position" intvalue="120"/>
            </file>
        </folder>
    </folder>

    <!-- Creates keystroke shortcuts. -->
    <folder name="Shortcuts">
        <file name="A-D-L.shadow">
            <attr name="originalFile"
stringvalue="Actions/Window/mypkg-CalendarExplorerAction.instance"/>
        </file>
    </folder>

</filesystem>

                                             2008 JavaOneSM Conference | java.sun.com/javaone |   36
Example of context-sensitive Action
public class ShowPhotoAction extends CookieAction {
    protected void performAction(Node[] nodes) {
        PhotoDataObject dataObject = nodes[0].getLookup().
            lookup(PhotoDataObject.class);
        // use dataObject
    }
    protected int mode() {
        return CookieAction.MODE_EXACTLY_ONE;
    }
    public String getName() {
        return "Show Photo";
    }
    protected Class[] cookieClasses() {
        return new Class[] { PhotoDataObject.class };
    }
    protected String iconResource() {
        return ".../show_photo.png";
    }
    ...
}

                                             2008 JavaOneSM Conference | java.sun.com/javaone |   37
Some points

 You don't need to always use everything
  • E.g. just Nodes, no DataObjects
  • Can use them “incrementally”
 NetBeans Software RCP keeps objects in sync
  • E.g. updating a DataObject → bound Nodes
  • E.g. Nodes bound to the same DataObject
  • By means of PropertyChangeListener




                                       2008 JavaOneSM Conference | java.sun.com/javaone |   38
NetBeans Software RCP stuff can be
extended
 What about a “cover flow” view?
 Use JOGL (Java Bindings for OpenGL) for fast 3D API
 Just extend and create a new View
 TimingFramework for animating stuff




                                          2008 JavaOneSM Conference | java.sun.com/javaone |   39
CoverFlowView




                2008 JavaOneSM Conference | java.sun.com/javaone |   40
Update Centers

 NetBeans software components (.nbm)
  • can be added / removed on the fly
  • can declare dependencies
  • can be versioned
  • can add actions, menus, toolbars
 Pretty good for plugins




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   41
Update Centers




                 2008 JavaOneSM Conference | java.sun.com/javaone |   42
Agenda

 Introduction
 NetBeans Software RCP
 Visual Library
 GeoSpatial Components
 Java Platform Imaging APIs
 Conclusion




                              2008 JavaOneSM Conference | java.sun.com/javaone |   43
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



                                                  2008 JavaOneSM Conference | java.sun.com/javaone |   44
LightTable




             2008 JavaOneSM Conference | java.sun.com/javaone |   45
Agenda

 Introduction
 NetBeans Software RCP
 Visual Library
 GeoSpatial Components
 Java Platform Imaging APIs
 Conclusion




                              2008 JavaOneSM Conference | java.sun.com/javaone |   46
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

                                              2008 JavaOneSM Conference | java.sun.com/javaone |   47
GeoViewer




            2008 JavaOneSM Conference | java.sun.com/javaone |   48
NASA World Wind for Java Platform

 Java platform 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




                                       2008 JavaOneSM Conference | java.sun.com/javaone |   49
GeoViewer 3D




               2008 JavaOneSM Conference | java.sun.com/javaone |   50
Agenda

 Introduction
 NetBeans Software RCP
 Visual Library
 GeoSpatial Components
 Java Platform Imaging APIs
 Conclusion




                              2008 JavaOneSM Conference | java.sun.com/javaone |   51
Java Platform Imaging APIs

 Many options (and dispersive?)
  • Java 2D™ API, 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



                                              2008 JavaOneSM Conference | java.sun.com/javaone |   52
Mistral: fix 'em up

  Imaging meta-framework
  Multiple APIs can
  be used together
  Simplifies APIs
  Supports multicore,
  Jini services, Sun™ Grid




                             2008 JavaOneSM Conference | java.sun.com/javaone |   53
Some Mistral examples
File file = new File(...);
EditableImage image = EditableImage.create(new ReadOp(file, 0));
image.execute(new ResizeOp(600, 400));
EXIF exif = image.getMetadata(EXIF.class);

public class MyTask extends ImagingTask {
    private File file;
    public MyImagingTask (File file) { this.file = file; }
    public void run() {
        EditableImage image = read(file, 0);
        execute(image, new CropOp(10, 10, 600, 400), "crop");
        Histogram histogram = execute(image,
           new HistogramOp(), "histogram").getHistogram();
           // etc...
        }
    }

for (int i = 0; i < n; i++) {
    ImagingTaskProcessor.getInstance().post(new MyTask(file[i]));
    }

                                             2008 JavaOneSM Conference | java.sun.com/javaone |   54
Agenda

 Introduction
 NetBeans Software RCP
 Visual Library
 GeoSpatial Components
 Java Platform Imaging APIs
 Conclusion




                              2008 JavaOneSM Conference | java.sun.com/javaone |   55
Open Problems for blueMarine

 Java platform still misses something on the desktop
  • e.g. video streaming, USB support
  • Can be worked around with JNI/JNA
  • Java platform 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


                                         2008 JavaOneSM Conference | java.sun.com/javaone |   56
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)




                                                   2008 JavaOneSM Conference | java.sun.com/javaone |   57
Summary

 Most Swing showstoppers are history now




                                      2008 JavaOneSM Conference | java.sun.com/javaone |   58
Summary

 Most Swing showstoppers are history now
 You CAN ship desktop apps




                                      2008 JavaOneSM Conference | java.sun.com/javaone |   59
Summary

 Most Swing showstoppers are history now
 You CAN ship desktop apps
 There's a world beyond Swing
  • SwingLabs, NetBeans Software RCP, etc...




                                          2008 JavaOneSM Conference | java.sun.com/javaone |   60
Summary

 Most Swing showstoppers are history now
 You CAN ship desktop apps
 There's a world beyond Swing
  • SwingLabs, NetBeans Software RCP, etc...
 Be creative. Mix 'em up.
 NetBeans: the only IDE I need...




                                          2008 JavaOneSM Conference | java.sun.com/javaone |   61
Summary

 Most Swing showstoppers are history now
 You CAN ship desktop apps
 There's a world beyond Swing
  • SwingLabs, NetBeans Software RCP, etc...
 Be creative. Mix 'em up.
 NetBeans: the only IDE I need...
 ... but for some tasks related to digital photo management
 Eclipse is just the best tool




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   62
Eclipse Optic Cleaning System




                                2008 JavaOneSM Conference | java.sun.com/javaone |   63
For More Information

 Links to projects, blogs and documentation
  • weblogs.java.net/blog/fabriziogiudici
  • bluemarine.tidalwave.it
  • openbluesky.dev.java.net
  • mistral.tidalwave.it
  • forceten.tidalwave.it
  • www.netbeans.org/features/platform
  • graph.netbeans.org
  • platformx.netbeans.org
  • www.swinglabs.org
  • worldwind.arc.nasa.gov/java
  • quaqua.dev.java.net
                                        2008 JavaOneSM Conference | java.sun.com/javaone |   64
blueMarine
Or Why You Should Really Ship Swing
Applications
Fabrizio Giudici
TS-5483.                          Speaker’s logo here
                                      (optional)

Contenu connexe

Tendances

Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Bruno Borges
 

Tendances (9)

Java Enterprise Edition 6 Overview
Java Enterprise Edition 6 OverviewJava Enterprise Edition 6 Overview
Java Enterprise Edition 6 Overview
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
 
Enterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, OracleEnterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, Oracle
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFX
 
How Capgemini Built a Pan-European Tax Messaging System Using Oracle Fusion M...
How Capgemini Built a Pan-European Tax Messaging System Using Oracle Fusion M...How Capgemini Built a Pan-European Tax Messaging System Using Oracle Fusion M...
How Capgemini Built a Pan-European Tax Messaging System Using Oracle Fusion M...
 
Pitfalls of migrating projects to JDK 9
Pitfalls of migrating projects to JDK 9Pitfalls of migrating projects to JDK 9
Pitfalls of migrating projects to JDK 9
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
 
oraclewls-jrebel
oraclewls-jrebeloraclewls-jrebel
oraclewls-jrebel
 
OpenStack and MySQL
OpenStack and MySQLOpenStack and MySQL
OpenStack and MySQL
 

En vedette

En vedette (8)

Mercurial
MercurialMercurial
Mercurial
 
blueMarine photographic workflow with Java
blueMarine photographic workflow with JavablueMarine photographic workflow with Java
blueMarine photographic workflow with Java
 
NOSQL also means RDF stores: an Android case study
NOSQL also means RDF stores: an Android case studyNOSQL also means RDF stores: an Android case study
NOSQL also means RDF stores: an Android case study
 
Bretagne France
Bretagne FranceBretagne France
Bretagne France
 
About Michael Ellowitz
About Michael EllowitzAbout Michael Ellowitz
About Michael Ellowitz
 
blueMarine a desktop app for the open source photographic workflow
blueMarine  a desktop app for the open source photographic workflowblueMarine  a desktop app for the open source photographic workflow
blueMarine a desktop app for the open source photographic workflow
 
Designing a JavaFX Mobile application
Designing a JavaFX Mobile applicationDesigning a JavaFX Mobile application
Designing a JavaFX Mobile application
 
Tools for an effective software factory
Tools for an effective software factoryTools for an effective software factory
Tools for an effective software factory
 

Similaire à blueMarine Or Why You Should Really Ship Swing Applications

Boldly go where the Java programming language has never gone before
Boldly go where the Java programming language has never gone beforeBoldly go where the Java programming language has never gone before
Boldly go where the Java programming language has never gone before
elliando dias
 
Developing Plug-Ins for NetBeans
Developing Plug-Ins for NetBeansDeveloping Plug-Ins for NetBeans
Developing Plug-Ins for NetBeans
elliando dias
 
JRuby on Rails Deployment: What They Didn't Tell You
JRuby on Rails Deployment: What They Didn't Tell YouJRuby on Rails Deployment: What They Didn't Tell You
JRuby on Rails Deployment: What They Didn't Tell You
elliando dias
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
ADDRESSING TOMORROW'S SECURITY REQUIREMENTS IN ENTERPRISE APPLICATIONS
ADDRESSING TOMORROW'S SECURITY REQUIREMENTS IN ENTERPRISE APPLICATIONSADDRESSING TOMORROW'S SECURITY REQUIREMENTS IN ENTERPRISE APPLICATIONS
ADDRESSING TOMORROW'S SECURITY REQUIREMENTS IN ENTERPRISE APPLICATIONS
elliando dias
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn
 
LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication Architecture
LinkedIn
 

Similaire à blueMarine Or Why You Should Really Ship Swing Applications (20)

Boldly go where the Java programming language has never gone before
Boldly go where the Java programming language has never gone beforeBoldly go where the Java programming language has never gone before
Boldly go where the Java programming language has never gone before
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
 
MySQL creative programming
MySQL creative programmingMySQL creative programming
MySQL creative programming
 
Developing Plug-Ins for NetBeans
Developing Plug-Ins for NetBeansDeveloping Plug-Ins for NetBeans
Developing Plug-Ins for NetBeans
 
JRuby on Rails Deployment: What They Didn't Tell You
JRuby on Rails Deployment: What They Didn't Tell YouJRuby on Rails Deployment: What They Didn't Tell You
JRuby on Rails Deployment: What They Didn't Tell You
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
Advanced #6 clean architecture
Advanced #6  clean architectureAdvanced #6  clean architecture
Advanced #6 clean architecture
 
ADDRESSING TOMORROW'S SECURITY REQUIREMENTS IN ENTERPRISE APPLICATIONS
ADDRESSING TOMORROW'S SECURITY REQUIREMENTS IN ENTERPRISE APPLICATIONSADDRESSING TOMORROW'S SECURITY REQUIREMENTS IN ENTERPRISE APPLICATIONS
ADDRESSING TOMORROW'S SECURITY REQUIREMENTS IN ENTERPRISE APPLICATIONS
 
SunMicroSystems
SunMicroSystemsSunMicroSystems
SunMicroSystems
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
 
Sunstate
SunstateSunstate
Sunstate
 
Net Beans61 Platform
Net Beans61 PlatformNet Beans61 Platform
Net Beans61 Platform
 
Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
WebLogic Developer Experience and Java EE 6
WebLogic Developer Experience and Java EE 6WebLogic Developer Experience and Java EE 6
WebLogic Developer Experience and Java EE 6
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
 
From Java to Ruby...and Back
From Java to Ruby...and BackFrom Java to Ruby...and Back
From Java to Ruby...and Back
 
Migrating Beyond Java 8
Migrating Beyond Java 8Migrating Beyond Java 8
Migrating Beyond Java 8
 
LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication Architecture
 

Plus de Fabrizio Giudici (11)

Building Android apps with Maven
Building Android apps with MavenBuilding Android apps with Maven
Building Android apps with Maven
 
DCI - Data, Context and Interaction @ Jug Lugano May 2011
DCI - Data, Context and Interaction @ Jug Lugano May 2011 DCI - Data, Context and Interaction @ Jug Lugano May 2011
DCI - Data, Context and Interaction @ Jug Lugano May 2011
 
DCI - Data, Context and Interaction @ Jug Genova April 2011
DCI - Data, Context and Interaction @ Jug Genova April 2011DCI - Data, Context and Interaction @ Jug Genova April 2011
DCI - Data, Context and Interaction @ Jug Genova April 2011
 
Netbeans+platform+maven
Netbeans+platform+mavenNetbeans+platform+maven
Netbeans+platform+maven
 
Parallel Computing Scenarios and the new challenges for the Software Architect
Parallel Computing Scenarios  and the new challenges for the Software ArchitectParallel Computing Scenarios  and the new challenges for the Software Architect
Parallel Computing Scenarios and the new challenges for the Software Architect
 
blueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans PlatformblueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans Platform
 
NASA World Wind for Java API Overview
NASA World Wind for Java  API OverviewNASA World Wind for Java  API Overview
NASA World Wind for Java API Overview
 
Rich Internet Applications con JavaFX e NetBeans
Rich Internet Applications  con JavaFX e NetBeans Rich Internet Applications  con JavaFX e NetBeans
Rich Internet Applications con JavaFX e NetBeans
 
The VRC Project
The VRC ProjectThe VRC Project
The VRC Project
 
Web Development with Apache Struts 2
Web Development with  Apache Struts 2Web Development with  Apache Struts 2
Web Development with Apache Struts 2
 
Android java fx-jme@jug-lugano
Android java fx-jme@jug-luganoAndroid java fx-jme@jug-lugano
Android java fx-jme@jug-lugano
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

blueMarine Or Why You Should Really Ship Swing Applications

  • 1. blueMarine Or Why You Should Really Ship Swing Applications Fabrizio Giudici, Senior Java Architect, Tidalwave s.a.s. TS-5483
  • 2. Talk about issues with Java™ platform's Rich Client Applications; enumerate and introduce solutions from the perspective of a real project. “Java is mature for Rich Desktop Applications. Just look beyond Swing.” 2008 JavaOneSM Conference | java.sun.com/javaone | 2
  • 3. Agenda Introduction NetBeans™ Software RCP Visual Library GeoSpatial Components Java Platform Imaging APIs Conclusion 2008 JavaOneSM Conference | java.sun.com/javaone | 3
  • 4. blueMarine introductory video 2008 JavaOneSM Conference | java.sun.com/javaone | 4
  • 5. Speaker’s Qualifications Senior Java Architect with 12 years of Java platform experience Project leading, mentoring, teaching Member of JUG Milano, NetBeans Software Dream Team Speaker at JavaPolis, Jazoon, JavaOneSM Event, JiniSM Meeting Writer for NetBeans Software Magazine, Mokabyte Blogger at Java.Net 2008 JavaOneSM Conference | java.sun.com/javaone | 5
  • 6. Java Platform on the Desktop: Readiness Phases Phase -1: prior 2005 • Slow, poorly integrated, ugly L&F Phase 0: 2005 • JDK™ release 5 spreads, “Extreme GUI Makeover” starts Phase +1: 2006-2007 • JDK™ release 6, Aerith, SwingLabs matures • TimingFramework, Nimbus, Filthy Rich Clients Phase +2: 2008 • Add NetBeans Software RCP: Filthy Rich Platform Clients • Ready for complex applications - anyone? 2008 JavaOneSM Conference | java.sun.com/javaone | 6
  • 7. Java Platform on the Desktop: Readiness Phases Phase -1: prior 2005 blueMarine 0.8 • Slow, poorly integrated, ugly L&F Phase 0: 2005 died here • JDK™ release 5 spreads, “Extreme GUI Makeover” starts Phase +1: 2006-2007 • JDK™ release 6, Aerith, SwingLabs matures • TimingFramework, Nimbus, Filthy Rich Clients Phase +2: 2008 • Add NetBeans Software RCP: Filthy Rich Platform Clients • Ready for complex applications - anyone? 2008 JavaOneSM Conference | java.sun.com/javaone | 7
  • 8. Java Platform on the Desktop: Readiness Phases Phase -1: prior 2005 blueMarine 0.8 • Slow, poorly integrated, ugly L&F Phase 0: 2005 died here • JDK™ release 5 spreads, “Extreme GUI Makeover” starts Phase +1: 2006-2007 blueMarine 0.9 • JDK™ release 6, Aerith, SwingLabs matures • TimingFramework, Nimbus, Filthy Rich Clients Phase +2: 2008 reborn here • Add NetBeans Software RCP: Filthy Rich Platform Clients • Ready for complex applications - anyone? 2008 JavaOneSM Conference | java.sun.com/javaone | 8
  • 9. Problems 2008 JavaOneSM Conference | java.sun.com/javaone | 9
  • 10. Solutions 2008 JavaOneSM Conference | java.sun.com/javaone | 10
  • 11. If you can just remember four points NetBeans Software RCP NetBeans Visual Library SwingLabs NASA World Wind for Java Platform 2008 JavaOneSM Conference | java.sun.com/javaone | 11
  • 12. OpenBlueSky Where generic stuff spins off blueMarine Can be used for other applications Consolidated stuff going to PlatformX 2008 JavaOneSM Conference | java.sun.com/javaone | 12
  • 13. Agenda Introduction NetBeans Software RCP Visual Library GeoSpatial Components Java Platform Imaging APIs Conclusion 2008 JavaOneSM Conference | java.sun.com/javaone | 13
  • 14. Question What do you expect from a (desktop) framework? 2008 JavaOneSM Conference | java.sun.com/javaone | 14
  • 15. Desktop Frameworks Solid foundation to base your application on APIs working together, well tested Service discovery and provider Plugin support Messaging infrastructure (via events) Integrated help system And more 2008 JavaOneSM Conference | java.sun.com/javaone | 15
  • 16. Swing is not a framework Missing sophisticated components • e.g.: date picker, tree+table, etc... Neither service discovery nor providers No plugins No messaging (only simple listeners) Threading issues JSR-296 (Java Specification Request Swing Application Framework) not good for large applications 2008 JavaOneSM Conference | java.sun.com/javaone | 16
  • 17. What is NetBeans Software RCP? NetBeans { NetBeans IDE NetBeans RCP 2008 JavaOneSM Conference | java.sun.com/javaone | 17
  • 18. What is NetBeans Software RCP? NetBeans { NetBeans IDE NetBeans RCP 2008 JavaOneSM Conference | java.sun.com/javaone | 18
  • 19. What is NetBeans Software RCP? NetBeans { NetBeans IDE NetBeans RCP Your Desktop Application 2008 JavaOneSM Conference | java.sun.com/javaone | 19
  • 20. NetBeans Software 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 2008 JavaOneSM Conference | java.sun.com/javaone | 20
  • 21. Most important NetBeans RCP APIs Actions Modules DataObjects Nodes Dialogs Options Explorer Progress FileSystem Visual Library Lookup Windowing/docking 2008 JavaOneSM Conference | java.sun.com/javaone | 21
  • 22. Explorers, Viewers, Actions 2008 JavaOneSM Conference | java.sun.com/javaone | 22
  • 23. Lookup API Plays a fundamental role in many APIs Repository for a bag of objects Locator for services Fires events “Global” lookup can be used as a simple “event bus” Service service = Lookup.getDefault().lookup(Service.class); 2008 JavaOneSM Conference | java.sun.com/javaone | 23
  • 24. DataObject represents a file-based entity 2008 JavaOneSM Conference | java.sun.com/javaone | 24
  • 25. You can extend DataObject 2008 JavaOneSM Conference | java.sun.com/javaone | 25
  • 26. Creating a new DataObject layer.xml: <filesystem> <folder name="Services"> <folder name="MIMEResolver"> <file name="PhotoResolver.xml" url="PhotoResolver.xml"> </file> </folder> </folder> </filesystem> PhotoResolver.xml: <MIME-resolver> <file> <ext name="TIF"/> <ext name="TIFF"/> <resolver mime="image/tiff"/> </file> <!-- others ext/mime mappings --> </MIME-resolver> 2008 JavaOneSM Conference | java.sun.com/javaone | 26
  • 27. Creating a new DataObject public class PhotoDataObject extends MultiDataObject { ... } public class PhotoDataLoader extends UniFileLoader { public PhotoDataLoader() { // contains “image/jpg”, “image/tiff”, etc... String[] mimeTypes = ImageIO.getReaderMIMETypes(); for (final String mimeType : mimeTypes) { getExtensions().addMimeType(mimeType); } } protected MultiDataObject createMultiObject(FileObject file) { return new PhotoDataObject(file, this); } //... } 2008 JavaOneSM Conference | java.sun.com/javaone | 27
  • 28. Lookup holds “capabilities” 2008 JavaOneSM Conference | java.sun.com/javaone | 28
  • 29. Node “represents” DataObject 2008 JavaOneSM Conference | java.sun.com/javaone | 29
  • 30. Node has “capabilities” too 2008 JavaOneSM Conference | java.sun.com/javaone | 30
  • 31. Managing basic objects File file = new File("photo.jpg"); FileObject fileObject = FileUtil.toFileObject(file); DataObject dataObject = DataObject.find(fileObject); // Note: static type is DataObject, // not PhotoDataObject Node node = dataObject.getNodeDelegate(); // Retrieve capabilities // They have been set by PhotoDataObject constructor Metadata metadata = dataObject.getLookup(). lookup(Metadata.class); // or Metadata metadata = node.getLookup(). lookup(Metadata.class); 2008 JavaOneSM Conference | java.sun.com/javaone | 31
  • 32. Representing sets of Nodes 2008 JavaOneSM Conference | java.sun.com/javaone | 32
  • 33. View renders Nodes 2008 JavaOneSM Conference | java.sun.com/javaone | 33
  • 34. Actions can be automatically enabled 2008 JavaOneSM Conference | java.sun.com/javaone | 34
  • 35. Declaring Actions <filesystem> <folder name="Actions"> <folder name="Window"> <file name="mypkg-CalendarExplorerAction.instance"/> </folder> </folder> <!-- Adds the action to the Menu/Window main menu. --> <folder name="Menu"> <folder name="Window"> <file name="CalendarExplorerAction.shadow"> <attr name="originalFile" stringvalue="Actions/Window/mypkg-CalendarExplorerAction.instance"/> <attr name="position" intvalue="120"/> </file> </folder> </folder> 2008 JavaOneSM Conference | java.sun.com/javaone | 35
  • 36. Declaring Actions <!-- Adds the actions to the Component toolbar. --> <folder name="Toolbars"> <folder name="Explorer"> <file name="mypkg-CalendarExplorerAction.shadow"> <attr name="originalFile" stringvalue="Actions/Window/mypkg-CalendarExplorerAction.instance"/> <attr name="position" intvalue="120"/> </file> </folder> </folder> <!-- Creates keystroke shortcuts. --> <folder name="Shortcuts"> <file name="A-D-L.shadow"> <attr name="originalFile" stringvalue="Actions/Window/mypkg-CalendarExplorerAction.instance"/> </file> </folder> </filesystem> 2008 JavaOneSM Conference | java.sun.com/javaone | 36
  • 37. Example of context-sensitive Action public class ShowPhotoAction extends CookieAction { protected void performAction(Node[] nodes) { PhotoDataObject dataObject = nodes[0].getLookup(). lookup(PhotoDataObject.class); // use dataObject } protected int mode() { return CookieAction.MODE_EXACTLY_ONE; } public String getName() { return "Show Photo"; } protected Class[] cookieClasses() { return new Class[] { PhotoDataObject.class }; } protected String iconResource() { return ".../show_photo.png"; } ... } 2008 JavaOneSM Conference | java.sun.com/javaone | 37
  • 38. Some points You don't need to always use everything • E.g. just Nodes, no DataObjects • Can use them “incrementally” NetBeans Software RCP keeps objects in sync • E.g. updating a DataObject → bound Nodes • E.g. Nodes bound to the same DataObject • By means of PropertyChangeListener 2008 JavaOneSM Conference | java.sun.com/javaone | 38
  • 39. NetBeans Software RCP stuff can be extended What about a “cover flow” view? Use JOGL (Java Bindings for OpenGL) for fast 3D API Just extend and create a new View TimingFramework for animating stuff 2008 JavaOneSM Conference | java.sun.com/javaone | 39
  • 40. CoverFlowView 2008 JavaOneSM Conference | java.sun.com/javaone | 40
  • 41. Update Centers NetBeans software components (.nbm) • can be added / removed on the fly • can declare dependencies • can be versioned • can add actions, menus, toolbars Pretty good for plugins 2008 JavaOneSM Conference | java.sun.com/javaone | 41
  • 42. Update Centers 2008 JavaOneSM Conference | java.sun.com/javaone | 42
  • 43. Agenda Introduction NetBeans Software RCP Visual Library GeoSpatial Components Java Platform Imaging APIs Conclusion 2008 JavaOneSM Conference | java.sun.com/javaone | 43
  • 44. 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 2008 JavaOneSM Conference | java.sun.com/javaone | 44
  • 45. LightTable 2008 JavaOneSM Conference | java.sun.com/javaone | 45
  • 46. Agenda Introduction NetBeans Software RCP Visual Library GeoSpatial Components Java Platform Imaging APIs Conclusion 2008 JavaOneSM Conference | java.sun.com/javaone | 46
  • 47. 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 2008 JavaOneSM Conference | java.sun.com/javaone | 47
  • 48. GeoViewer 2008 JavaOneSM Conference | java.sun.com/javaone | 48
  • 49. NASA World Wind for Java Platform Java platform 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 2008 JavaOneSM Conference | java.sun.com/javaone | 49
  • 50. GeoViewer 3D 2008 JavaOneSM Conference | java.sun.com/javaone | 50
  • 51. Agenda Introduction NetBeans Software RCP Visual Library GeoSpatial Components Java Platform Imaging APIs Conclusion 2008 JavaOneSM Conference | java.sun.com/javaone | 51
  • 52. Java Platform Imaging APIs Many options (and dispersive?) • Java 2D™ API, 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 2008 JavaOneSM Conference | java.sun.com/javaone | 52
  • 53. Mistral: fix 'em up Imaging meta-framework Multiple APIs can be used together Simplifies APIs Supports multicore, Jini services, Sun™ Grid 2008 JavaOneSM Conference | java.sun.com/javaone | 53
  • 54. Some Mistral examples File file = new File(...); EditableImage image = EditableImage.create(new ReadOp(file, 0)); image.execute(new ResizeOp(600, 400)); EXIF exif = image.getMetadata(EXIF.class); public class MyTask extends ImagingTask { private File file; public MyImagingTask (File file) { this.file = file; } public void run() { EditableImage image = read(file, 0); execute(image, new CropOp(10, 10, 600, 400), "crop"); Histogram histogram = execute(image, new HistogramOp(), "histogram").getHistogram(); // etc... } } for (int i = 0; i < n; i++) { ImagingTaskProcessor.getInstance().post(new MyTask(file[i])); } 2008 JavaOneSM Conference | java.sun.com/javaone | 54
  • 55. Agenda Introduction NetBeans Software RCP Visual Library GeoSpatial Components Java Platform Imaging APIs Conclusion 2008 JavaOneSM Conference | java.sun.com/javaone | 55
  • 56. Open Problems for blueMarine Java platform still misses something on the desktop • e.g. video streaming, USB support • Can be worked around with JNI/JNA • Java platform 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 2008 JavaOneSM Conference | java.sun.com/javaone | 56
  • 57. 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) 2008 JavaOneSM Conference | java.sun.com/javaone | 57
  • 58. Summary Most Swing showstoppers are history now 2008 JavaOneSM Conference | java.sun.com/javaone | 58
  • 59. Summary Most Swing showstoppers are history now You CAN ship desktop apps 2008 JavaOneSM Conference | java.sun.com/javaone | 59
  • 60. Summary Most Swing showstoppers are history now You CAN ship desktop apps There's a world beyond Swing • SwingLabs, NetBeans Software RCP, etc... 2008 JavaOneSM Conference | java.sun.com/javaone | 60
  • 61. Summary Most Swing showstoppers are history now You CAN ship desktop apps There's a world beyond Swing • SwingLabs, NetBeans Software RCP, etc... Be creative. Mix 'em up. NetBeans: the only IDE I need... 2008 JavaOneSM Conference | java.sun.com/javaone | 61
  • 62. Summary Most Swing showstoppers are history now You CAN ship desktop apps There's a world beyond Swing • SwingLabs, NetBeans Software RCP, etc... Be creative. Mix 'em up. NetBeans: the only IDE I need... ... but for some tasks related to digital photo management Eclipse is just the best tool 2008 JavaOneSM Conference | java.sun.com/javaone | 62
  • 63. Eclipse Optic Cleaning System 2008 JavaOneSM Conference | java.sun.com/javaone | 63
  • 64. For More Information Links to projects, blogs and documentation • weblogs.java.net/blog/fabriziogiudici • bluemarine.tidalwave.it • openbluesky.dev.java.net • mistral.tidalwave.it • forceten.tidalwave.it • www.netbeans.org/features/platform • graph.netbeans.org • platformx.netbeans.org • www.swinglabs.org • worldwind.arc.nasa.gov/java • quaqua.dev.java.net 2008 JavaOneSM Conference | java.sun.com/javaone | 64
  • 65. blueMarine Or Why You Should Really Ship Swing Applications Fabrizio Giudici TS-5483. Speaker’s logo here (optional)