NetBeans Platform Compared with Eclipse Rich Client PLatform Kai Tödter, Siemens AG Geertjan Wielenga, Sun Microsystem ID# ????

Slides:



Advertisements
Similar presentations
Castafiore platform Consists or intend to consist of 1.Advanced Web framework 2.Advanced Graph database 3.Designer studio (something like visual basic)
Advertisements

Extending Eclipse CDT for Remote Target Debugging Thomas Fletcher Director, Automotive Engineering Services QNX Software Systems.
Extending Eclipse Kai-Uwe Mätzel IBM OTI Labs Zurich
RDz and Process Integration Using Menu Manager and HATS to customize your RDz installation David Myers.
Plug-ins Crash Course Roland Overgaauw
Introduce OSGi BlueDavy
Introduction to Eclipse plugin development for CSU 670 course project, Selector language (Xaspect) editor plugin implementation.
Developing an Eclipse Plug-in David Gallardo. Platform Runtime Workspace Help Team Workbench JFace SWT Eclipse Project Java Development Tools (JDT) Their.
Goals Give you a feeling of what Eclipse is.
© 2007 IBM Corporation IBM Emerging Technologies Enabling an Accessible Web 2.0 Becky Gibson Web Accessibility Architect.
Eclipse Architecture Dwight Deugo Nesa Matic
Eclipse Introduction Dwight Deugo Nesa Matic
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Views Dwight Deugo Nesa Matic
1 Plug-in Development Environment (PDE) Guide. 2 Introduction to PDE l What is PDE: »a tool designed to help you develop platform plug-ins while working.
1 Software Reuse in Eclipse Kellie-Ann Smith Norgye Yuanyuan Song Xiang Yin Jia Xu.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
© Keren Kalif Intro to Android Development Written by Keren Kalif, Edited by Liron Blecher Contains slides from Google I/O presentation.
© 2005 by IBM; made available under the EPL v1.0 | March 1, 2005 Tim deBoer Gorkem Ercan Extend WTP Server Tools for your.
Duke University Program Design & Construction Course Application Development Tools Sherry Shavor
Definition of the SDK for FIspace Augusto Morales & Hector Bedón UPM.
Introduction to Android. Android as a system, is a java based operating system that runs on the Linux kernel. The system is very lightweight and full.
Arc: AddIns Dr Andy Evans. Java Direct access to ArcObjects Framework inside and outside Arc. Ability to add components to the GUI. Ability to communicate.
Introduction to Eclipse Plug-in Development. Who am I? Scott Kellicker Java, C++, JNI, Eclipse.
Android for Java Developers Denver Java Users Group Jan 11, Mike
Extending the Eclipse Framework and Rich Client Platform Jeff Myers Languages for Lunch 10/13/2004.
Ontology Engineering and Plugin Development with the NeOn Toolkit Plug-in Development for the NeOn Toolkit June 1st, 2008 Michael Erdmann, Peter Haase,
Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment AOSD requires a variety of tools Life cycle – support.
Introduction to Eclipse CSC 216 Lecture 3 Ed Gehringer Using (with permission) slides developed by— Dwight Deugo Nesa Matic
TOOLS FOR DESIGN AND DEVELOPMENT ENVIRONMENTS. Case study - ECLIPSE Lecture notes 2.
Jan Hatje, DESY CSS ITER March 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
[________________________] Eclipse project briefing materials. Copyright (c) 2002, 2003 IBM Corporation and others. All rights reserved. This.
Selected Topics in Software Engineering - Distributed Software Development.
Open Service Gateway Initiative (OSGi) Reporter : 林學灝 侯承育 1.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Copyright © IBM Corp., All rights reserved. From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP Benjamin Pasero.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Migrating Desktop Marcin Płóciennik Marcin Płóciennik Kick-off Meeting, Santander, Graphical.
.  A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate.  Taken advantage of Spring’s multi layer injection.
Eclipse Rich Client Platform Discover the Anatomy of an Application Based On Eclipse Wayne Beaton Evangelist, Eclipse Foundation.
© 2008 by Shawn Spiars; made available under the EPL v1.0 | March 17, 2008 Case Study – Phurnace Software and RCP Shawn Spiars Lead UI Developer Phurnace.
Surya Bahadur Kathayat Outline  Ramses  Installing Ramses  Ramses Perspective (Views and Editors)  Importing/Exporting Example.
Jan Hatje, DESY CSS GSI Feb. 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
® IBM Software Group © 2007 IBM Corporation Module 1: Getting Started with Rational Software Architect Essentials of Modeling with IBM Rational Software.
Introduction 1 Lars Vogel 4/22/2009.  Who am I?  Eclipse as a platform  What is Eclipse RCP?  Extension Points / Extensions  Equinox  SWT & JFace.
Creating Modular CRUD Desktop Applications Jiri Rechtacek Geertjan Wielenga.
ETICS All Hands meeting B ologna, October , 2006 WP4 Test and Metrics Plugin Framework (WP4) (WP4) Eva TAKACS.
Developing GUIs With the Eclipse Visual Editor, SWT Edition David Gallardo.
Introduction to OSGi +ActorFrame Surya Bahadur Kathayat
INTRODUCTION TO ANDROID. Slide 2 Introduction I take a top-down approach to describing an application’s anatomy.
ECLIPSE RICH CLIENT PLATFORM Part 1 Introduction.
Guide To Develop Mobile Apps With Titanium. Agenda Overview Installation of Platform SDKs Pros of Appcelerator Titanium Cons of Appcelerator Titanium.
Using NetBeans IDE for Desktop Development Geertjan Wielenga
Porting a Swing Application to the NetBeans Platform Anton Epple
NetBeans Rich Client Platform Alex Kotchnev Software Developer Commerce Technologies Inc. Alex Kotchnev Software Developer Commerce Technologies Inc.
1 Component Technology Johannes Kepler University Linz, Austria Deepak Dhungana Institute for System Engineering.
Introduction to Android Programming
Hello NetBeans Platform
Eclipse.
Goals Give you a feeling of what Eclipse is.
Overall Architecture and Component Model
Geertjan Wielenga This presentation introduces Swing Application Framework and Beans Binding JSRs. These are two new JSRs.
Introduction to J2EE Architecture
OpenOffice. org Extensions Infrastructure What it is –. What it can –
ESIS Consulting LLC (C) ESIS Consulting LLC. All rights reserved
Java IDE Dwight Deugo Nesa Matic Portions of the notes for this lecture include excerpts from.
Plug-In Architecture Pattern
Presentation transcript:

NetBeans Platform Compared with Eclipse Rich Client PLatform Kai Tödter, Siemens AG Geertjan Wielenga, Sun Microsystem ID# ????

2008 JavaOne SM Conference | java.com.sun/javaone | 2 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 3 MP3 Manager: Eclipse RCP based

2008 JavaOne SM Conference | java.com.sun/javaone | 4 MP3 Manager: NetBeans Platform based

2008 JavaOne SM Conference | java.com.sun/javaone | 5 Demo: MP3 Manager on both Platforms

2008 JavaOne SM Conference | java.com.sun/javaone | 6 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 7 Eclipse RCP Architecture Platform Runtime OSGi JFace SWT Generic Workbench IDE/ Workspace/ Resources/ Team/ Search/ … IDE/ Workspace/ Resources/ Team/ Search/ … … … … … App Plug-in App Plug-in Update Forms Help Java VM OS Rich Client Application Eclipse RCP

2008 JavaOne SM Conference | java.com.sun/javaone | 8 NetBeans Platform Architecture Runtime Module System Swing Core UI IDE/ Favourites/ Multi-View … IDE/ Favourites/ Multi-View … … … … … App Plug-in App Plug-in Update Center... Help Java VM Rich Client Application NetBeans Platform

2008 JavaOne SM Conference | java.com.sun/javaone | 9 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 10 Eclipse RCP: Based ob OSGi (1) Dynamic modules for Java Highly adopted standard OSGi Bundle is the unit of modularization Eclipse Plug-in == OSGi Bundle Roughly equivalent to a JAR Self-described using MANIFEST.MF metadata

2008 JavaOne SM Conference | java.com.sun/javaone | 11 Eclipse RCP: Based ob OSGi (2) The OSGi Runtime Manages dependencies and lifecycle of bundles Explicitly supports dynamic scenarios Bundles interact through Java package sharing OSGi Service registry Eclipse Extension Registry It is possible to run two or more versions of the same bundle in one application

2008 JavaOne SM Conference | java.com.sun/javaone | 12 NetBeans Module System (1) Dynamic modules for NetBeans Platform Proprietary, but Basic idea taken from the Java Extension Mechanism NetBeans Module is the unit of modularization Roughly equivalent to a JAR Module attributes in MANIFEST.MF metadata Extra XML descriptor needed by the platform runtime

2008 JavaOne SM Conference | java.com.sun/javaone | 13 NetBeans Module System (2) The NetBeans Runtime Manages dependencies and lifecycle of NetBeans modules Some support of dynamic scenarios (ModuleInstall) NetBeans modules interact through Java package sharing Service registry XML Layer It is possible to run two or more versions of the same NetBeans module in one application

2008 JavaOne SM Conference | java.com.sun/javaone | 14 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 15 NetBeans UI: Swing Very mature UI toolkit But more a widget set than an UI application framework But NetBeans adds framework functionality Good performance since Java 1.3 Java Standard included in the JRE Very good free GUI builder Matisse out of the box with the NetBeans IDE Native Look & Feels are emulated Since Java 6, native rendering is used if possible Very good customizable through the pluggable Look & Feel mechanism

2008 JavaOne SM Conference | java.com.sun/javaone | 16 NetBeans Platform based Example

2008 JavaOne SM Conference | java.com.sun/javaone | 17 NetBeans MP3M with Napkin Look & Feel

2008 JavaOne SM Conference | java.com.sun/javaone | 18 Eclipse UI: SWT/JFace Very mature UI toolkit SWT provides rich widget set JFace adds UI application framework, with Viewers, Forms, Data binding, Wizards, etc. Excellent performance through native widgets Some GUI builders available for the Eclipse IDE But the most of them are commercial Native Look & Feels Highest OS Look & Feel fidelity Partly customizable through Presentation API and custom widgets

2008 JavaOne SM Conference | java.com.sun/javaone | 19 SWT Examples

2008 JavaOne SM Conference | java.com.sun/javaone | 20 Eclipse MP3 Manager with customized UI

2008 JavaOne SM Conference | java.com.sun/javaone | 21 More UI Customization: IBM Lotus Notes

2008 JavaOne SM Conference | java.com.sun/javaone | 22 Docking Systems A docking system is a windowing system, where the windows can be layouted in several regions These regions use tab containers for the containing windows The windows can be dragged and dropped into other regions The windows can be minimized and maximized The windows can be undocked (Stand alone on the OS desktop) Both, Eclipse RCP and NetBeans Platform provide excellent docking systems!

2008 JavaOne SM Conference | java.com.sun/javaone | 23 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 24 Starting Application Development NetBeans Platform Start with a suite Remove all IDE specific modules Creates application shown on the next slide Remove all the UI elements you don’t want to reuse Eclipse RCP Start with a plug-in Choose a RCP template, e.g. Hello World Creates application shown on the next slide Add new UI contributions

2008 JavaOne SM Conference | java.com.sun/javaone | 25 Eclipse RCP Hello World

2008 JavaOne SM Conference | java.com.sun/javaone | 26 NetBeans Platform Hello World

2008 JavaOne SM Conference | java.com.sun/javaone | 27 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 28 Eclipse RCP Project Structure Plug-ins Provide the functionality Often separation between core and UI plug-ins Features Collection of plug-ins that implement the feature’s functionality Needed for Update functionality Provide Feature Branding and licensing info Product Configuration Can be put in a feature or in a plug-in Contains launching, configuration and product branding info

2008 JavaOne SM Conference | java.com.sun/javaone | 29 NetBeans Project Structure Modules Provide the functionality Suite Collection of modules that implement the application’s functionality Provides application branding and licensing info Usually one suite per application

2008 JavaOne SM Conference | java.com.sun/javaone | 30 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 31 Creating an Action in NetBeans Use the “New Action…” wizard Fill out the form The Action’s Java class template is generated The XML layer (layer.xml) for contributing UI to the menu bar and tool bar is created automatically

2008 JavaOne SM Conference | java.com.sun/javaone | 32 Action Class in NetBeans (1) public final class AddMusicFolderAction extends CallableSystemAction { final JFileChooser fc = new JFileChooser(); public void performAction() { // Action’s business logic } public String getName() { return NbBundle.getMessage(AddMusicFolderAction.class, "CTL_AddMusicFolderAction"); }

2008 JavaOne SM Conference | java.com.sun/javaone | 33 Action Class in NetBeans (2) protected String iconResource() { return "com/siemens/ct/nb/mp3m/actions/add_folder.gif"; } public HelpCtx getHelpCtx() { return HelpCtx.DEFAULT_HELP; } protected boolean asynchronous() { return false; }

2008 JavaOne SM Conference | java.com.sun/javaone | 34 The XML Layer <file name="com-siemens-ct-nb-mp3m-actions- AddMusicFolderAction.instance"/> <attr name="AddMusicFolderAction.shadow/ RemoveMusicFolderAction.shadow" boolvalue="true"/> /> <attr name="originalFile" stringvalue="Actions/File/com-siemens-ct-nb-mp3m- actions-AddMusicFolderAction.instance"/>

2008 JavaOne SM Conference | java.com.sun/javaone | 35 Creating an Action in Eclipse Extend the Extension Point “ActionsSets” Fill out the form The Action’s Java class template is generated by clicking the class attribute The XML layer (plugin.xml) for contributing UI to the menu bar and tool bar is created automatically

2008 JavaOne SM Conference | java.com.sun/javaone | 36 Creating the ActionSets Extension

2008 JavaOne SM Conference | java.com.sun/javaone | 37 Action Class in Eclipse (1) public class AddMusicFolderAction implements IWorkbenchWindowActionDelegate { private IWorkbenchWindow window; public void run(IAction action) { // Action’s business logic } public void init(IWorkbenchWindow window) { this.window = window; }

2008 JavaOne SM Conference | java.com.sun/javaone | 38 Action Class in Eclipse (2) public void dispose() { window = null; } public void selectionChanged(IAction action, ISelection selection) { // Selection changes can be handled here }

2008 JavaOne SM Conference | java.com.sun/javaone | 39 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 40 Eclipse Extensions and Extension Points Platform Runtime C Debug Rich Client Platform Plug-in C Debug RCA Extension Extension Point

2008 JavaOne SM Conference | java.com.sun/javaone | 41 Lazy loading with Eclipse Extension Points Create an Interface and expose it to the public Create an Extension Point that provides an attribute for the implementing class A using plug-in could extent the Extension Point and provide an implementation of the given interface The provider of the Extension Point can check at runtime, what extensions are available and what to do with them

2008 JavaOne SM Conference | java.com.sun/javaone | 42 Interface and Extension Point Editor public interface IMP3InfoProvider { public IMP3Info getMP3Info(); }

2008 JavaOne SM Conference | java.com.sun/javaone | 43 The Extensions Check at Runtime IConfigurationElement[] providers = Platform.getExtensionRegistry().getConfigurationElementsFor("com.siemens.ct.mp3m.model", "mp3info"); for (IConfigurationElement provider : providers) { try { IMP3InfoProvider provider = (IMP3InfoProvider) provider.createExecutableExtension("class"); // do something useful with the dynamically created class... } catch (Throwable e) { LogUtil.logError("com.siemens.ct.mp3m.model", e); }

2008 JavaOne SM Conference | java.com.sun/javaone | 44 Benefits of the Extension Point Mechanism Very good scalability Loose coupling of components Using String IDs rather than Java objects Very good startup time UI contributions specified in the XML layer are processed at startup Lazy loading of Java classes due to extension check at runtime

2008 JavaOne SM Conference | java.com.sun/javaone | 45 The Tip of the Iceberg Startup time: O(plug-ins used at startup) rather than O(plug-ins that add UI contributions)

2008 JavaOne SM Conference | java.com.sun/javaone | 46 Lazy Loading in NetBeans Provide an Interface and expose it to the public Create a directory META-INF/services Create a file with the fully qualified name of the interface in that directory, e.g. com.siemens.ct.mp3m.model.IMP3InfoProvider Put the fully qualified name of the implementing class as content in the file The user that checks the global lookup at runtime for implementations of the interface

2008 JavaOne SM Conference | java.com.sun/javaone | 47 Using the Global Lookup IMp3InfoProvider provider = (IMP3InfoProvider)Lookup.getDefault().lookup( IMP3InfoProvider.class);

2008 JavaOne SM Conference | java.com.sun/javaone | 48 NetBeans Service Approach Benefits Very good scalability Loose coupling of components Easy to use

2008 JavaOne SM Conference | java.com.sun/javaone | 49 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 50 Integrating Update Functionality Both Platforms provide sophisticated Update Mechanisms Eclipse Update using update sites NetBeans Update Center Both out of the box update functionalities are often not applicable to domain specific applications Eclipse/NetBeans address experienced software developers

2008 JavaOne SM Conference | java.com.sun/javaone | 51 How to create customized update? Integrate the out of the box update functionality of the given platform into you application. That lets you test the basic mechanisms and can be done easily with both platforms. Then decide, what kind of granularity and complexity you would like to provide in your application. Try to reuse some fine granular APIs of the corresponding platform that does the job.

2008 JavaOne SM Conference | java.com.sun/javaone | 52 Integrating Help NetBeans Using JavaHelp standard Static content only Good & mature help system Help infrastructure is moderate (800 KB) Eclipse Using web server and indexing/search engine Currently Jetty & Lucene Static and dynamic content Very good & mature help system Help infrastructure is big (7 MB)

2008 JavaOne SM Conference | java.com.sun/javaone | 53 NetBeans MP3 Manager Help

2008 JavaOne SM Conference | java.com.sun/javaone | 54 Eclipse MP3 Manager Help

2008 JavaOne SM Conference | java.com.sun/javaone | 55 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 56 Long Running Operations & User Interaction Eclipse: Jobs API Many utilities for asynchronous long running operations in the platform Interactive &Cancelable NetBeans: Progress API Interactive & Cancelable

2008 JavaOne SM Conference | java.com.sun/javaone | 57 Deployment Both IDEs provide the deployment of the whole application to the local file system NetBeans as ZIP file & Web-Start Eclipse as directory structure, can be zipped Java Web Start NetBeans IDE supports direct deployment for Java Web Start Eclipse RCP apps can be made ready for Java Web Start with some manual configuration Native installers (e.g. NSIS) can be used in conjunction with both

2008 JavaOne SM Conference | java.com.sun/javaone | 58 Licensing Eclipse RCP Eclipse Public License (EPL) See ICU4J license NetBeans Platform Dual licensed Common Development and Distribution License (CDDL) See GPL v2 with Classpath Exception The Classpath exception allows you to link an application available under any license to a library that is part of software licensed under GPL v2, without that application being subject to the GPL's requirement to be itself offered to the public under the GPL.

2008 JavaOne SM Conference | java.com.sun/javaone | 59 Eclipse RCP Documentation Lots of information at Good RCP Wiki Highly recommended book: Eclipse Rich Client Platform: Designing, Coding, and Packaging Java(TM) Applications (The Eclipse Series) by Jeff McAffer and Jean-Michel Lemieux

2008 JavaOne SM Conference | java.com.sun/javaone | 60 NetBeans Platform Documentation Lots of information (Articles, Tutorials, etc.) at platform.netbeans.org platform.netbeans.org Highly recommended book: Rich Client Programming: Plugging into the NetBeans Platform by Tim Boudreau, Jaroslav Tulach, and Geertjan Wielenga

2008 JavaOne SM Conference | java.com.sun/javaone | 61 Outline MP3 Manager: A demo application Software Architecture Component Model & Module Concept UI Toolkits & Customization Starting Application Development Project Structure Actions Extension Points & Lookups Update Functionality & Help System Misc Conclusion

2008 JavaOne SM Conference | java.com.sun/javaone | 62 Conclusion Both platforms provide Module system with Dependency management Dynamic modules Module-private classpaths Service infrastructure and lazy loading support Mature UI toolkits with huge widget sets Very good docking system Update support Support for interactive, long running operations Integration of help system And MUCH MORE!

2008 JavaOne SM Conference | java.com.sun/javaone | 63 But the Question is… Which platform is the better one? Which platform should you use? Recommendation: Get the requirements for YOUR rich client application first! There might be non-functional requirements like scalability, extensibility, reliability, usability and so on as well as functional requirements. After prioritizing the requirements, make your platform choice. Both platforms Eclipse RCP and NetBeans Platform offer you a lot and help you to build better Java rich client applications!

2008 JavaOne SM Conference | java.com.sun/javaone | 64 Kai Tödter, Siemens AG Geertjan Wielenga, Sun Microsystems ID#, Misc., 16 pt.