Search code examples
javauser-interfaceeclipse-rcpnetbeans-platform

What is the relationship between AWT, SWT, Swing, SAF/JSR-296, JFace, the NetBeans Platform and the Eclipse RCP


I am looking for something that puts this alphabet soup into perspective. It would be nice if it were light on the politics of the differences and tries to illuminate the similarities (if there are any).


Solution

  • similarities :

    rendering -> graphic library -> plaform
    
    AWT -> SWING -> NETBEANS PLATFORM
                 -> jsr 296
    SWT -> JFACE -> eclipse rcp
    

    rendering toolkit provides basic capabilities canvas drawing, label, text, combobox,...

    graphic library introduces MVC patterns, higher level component (sortable tables,date picker...)

    platform help having modular application composed of modules, extending capabilities of other modules.It also adds enterprise features like background tasks, deployment solution, help mechanism, preferences store,...


    differences

    swt :

    • native look,
    • native implementation resource (font, images,...) should be disposed by the developper. layers on top (jface, eclipse) tries to limit leaks of theses resources.
    • most OS are supported.
    • swt composites can contains awt/swing components
    • constructor based api for container/component relationship (new Child(parent))

    awt/swing :

    • jvm implementation carries the specific os implementation
    • except if using different look and feel, you see that the application isn't native
    • collection based api for container/component relationship (parent.add(child))

    eclipse :

    • based on osgi to host plugins;
    • this enables robust dependency resolution, multiple versions,...)

    netbeans rcp :

    • specific implementation for plugins not reusing osgi.