You are previewing NetBeans: The Definitive Guide.
O'Reilly logo
NetBeans: The Definitive Guide

Book Description

As the Java programming language has increased in both functionality and complexity, developers have demanded more of their program editors. Gone are the days when a simple visual editor is sufficient for even small programming projects. While there are numerous IDEs available today for use by Java developers, one stands above the rest, not only for its functionality, but for its extensibility: NetBeans. In NetBeans: The Definitive Guide, you'll find out how to use this IDE to its fullest, making your Java programming more efficient and productive than ever before. You'll understand the basics of the IDE, and quickly be utilizing the various editor and explorer windows. You'll also master many of NetBeans advanced features, and be working with XML documents, CVS repositories, Javadoc trees, and web applications, all within the NetBeans framework. In addition to teaching you how to use the existing features of NetBeans, this work goes on to cover developing additional modules for NetBeans. Through this instructional portion of the book, you will master the NetBeans APIs, and learn how to enhance NetBeans for your own specific needs. Whether you need to add customized behavior to handle your proprietary file formats, or want to redistribute NetBeans as a proprietary product, NetBeans: The Definitive Guide will allow you to master this open source IDE and all of its advanced features. Whether you are an enterprise developer looking for an IDE that can handle your complex program tasks, an open source developer looking to integrate NetBeans into your own visual projects, or a manager trying to maximize your team's development potential,NetBeans: The Definitive Guide is the book for you.

Table of Contents

  1. NetBeans: The Definitive Guide
  2. SPECIAL OFFER: Upgrade this ebook with O’Reilly
  3. A Note Regarding Supplemental Files
  4. Preface
    1. Is NetBeans for You?
    2. Is This Book for You?
    3. NetBeans and Java
      1. What Is JavaBeans™?
      2. The Core Concept of NetBeans
    4. NetBeans as the “Visual JDK”
      1. All the Usual Features
    5. NetBeans as a Tools Platform
    6. NetBeans as an Open Source Community
      1. Don’t Be Cross that This Book Is Cross-Platform
    7. Contents of the Accompanying Sources
    8. Licensing of the Code Examples in This Book
    9. Writing Conventions in This Book
    10. Comments and Questions
    11. Acknowledgments
      1. Reviewers
      2. Simeon Greene
      3. Vaughn Spurlin
      4. Jack Woehr
      5. Jesse Glick
      6. Tim Boudreau
  5. 1. Getting and Installing the IDE
    1. Platforms and Requirements
      1. What Are the System Requirements to Run NetBeans?
    2. Getting and Installing a JDK
      1. The Java Development Kit
      2. Relationship of JDK to JRE
      3. Obtaining the JDK
        1. What JVM flavors and version are known to be supported by the IDE?
    3. Which IDE Distribution?
    4. Installing Binary Distributions
    5. Building the IDE from Source (Simple Builds)
      1. What You’ll Need to Build the IDE
      2. Setting Up and Performing the Build
      3. Where Did Everything Go?
      4. How Do I Install a Newly Built Version of NetBeans?
    6. Running the IDE
      1. Minimal Environment
      2. How to Launch NetBeans
        1. Switches to the script
      3. Multiple NetBeans Users
      4. Troubleshooting
        1. Launching
        2. X Window System issues
        3. Appearance once launched
          1. Screen resolution
          2. X Window System
          3. SDI vs. MDI
          4. Summary regarding windowing issues
    7. Updating the IDE Automatically
      1. The Update Center
      2. Configuring the Update Center
      3. Setup Wizard
    8. You’re Now Running NetBeans
  6. 2. Concepts and Paradigms
    1. NetBeans and the Java Abstract Model of Computing
    2. Explorer
      1. Objects in the User Interface
      2. Data Objects, Nodes, Actions, and Properties
        1. What has NetBeans Explorer got to hide?
        2. Other file types
      3. Tabs in the Explorer
        1. The Filesystems view
        2. How to mount and unmount JARs and directories
        3. The Project view
        4. The Javadoc view
        5. The Runtime view
      4. Node Paradigms
        1. Explorer views of Java classes
          1. Badges
          2. Expanded view of classes
        2. Cut, copy, and paste subnodes
        3. Tools actions
      5. Sometimes Explorer Gets Behind the Times
        1. Does a file really need recompilation?
        2. Is a version really up to date? Is a file really local or is it already in the repository?
        3. Summary
      6. Filesystems and the CLASSPATH
        1. How branches of the host filesystem manifest themselves in NetBeans
        2. How CLASSPATH is handled in the IDE
        3. How to modify the IDE’s CLASSPATH
        4. Appending and prepending CLASSPATH to the IDE’s CLASSPATH
        5. Other CLASSPATH tricks
    3. Creating Packages and Classes
      1. Creating Packages
      2. Creating Classes
        1. Templates
          1. Using templates
          2. Creating templates
          3. Creating your own macros
    4. Services
      1. Compiler Services
        1. Compiling your code
        2. Compiler settings
      2. Execution Services
      3. Debugging Services
    5. Workspaces
      1. Editing
      2. GUI Editing
      3. Browsing
      4. Running
      5. Debugging
      6. Persistence Across Sessions
      7. Using Multiple Instances of Explorer
      8. Using Multiple Instances of the Source Editor
    6. Project Management
      1. Managing Multiple Projects
      2. Managing Project Builds Using Ant
    7. Object Browser
    8. Summary
  7. 3. Working with the Source Editor
    1. Why Learn a New Editor?
    2. Opening the Source Editor
    3. Context Menus
    4. Closing the Source Editor
    5. Code Completion
      1. Using Code Completion
        1. Taking advantage of code completion
        2. Avoiding code completion
      2. Updating the Parser Database to Include New Classes
      3. Abbreviations
    6. Editor Colorings
    7. Shortcuts
    8. Word Matching
    9. Indentation Engines and Code Formatting
    10. Automatic Edits
    11. Other Editor Functionality
    12. A Simple Example
  8. 4. Debugging
    1. Debugger Types
    2. Breakpoint Types
    3. Adding and Removing Breakpoints
    4. Setting Watches
    5. Starting the Debugger
    6. The Debugger Window
    7. The Variables View
    8. Remote Debugging in NetBeans
      1. Debugging Remotely
      2. Caveats
      3. Advanced Features
  9. 5. Compilation and Execution Services
    1. Using Custom Compilation and Execution Services
      1. Creating and Customizing Internal Compilation Services
      2. Creating and Customizing External Compilation Services
        1. Creating a new JDK 1.1 External Compilation Service
          1. Configuring the new JDK 1.1 External Compilation Service
          2. Configuring the external process
      3. The Internal Execution Service
      4. Creating and Customizing External Execution Services
    2. Associating Services with Java Files
      1. Setting Default Services for Java Files
      2. Setting Services for Specific Files
    3. Building with Ant
      1. Creating a Build Script
      2. Configuring the Ant Module
      3. Executing and Compiling with Ant Scripts
      4. Why Use Ant?
  10. 6. Customizing the Environment
    1. The Setup Wizard
      1. General NetBeans Settings
      2. Module Installation
      3. Update Center
    2. The Tools→Options Dialog
    3. Configuring Toolbars
    4. Configuring Menus
    5. Configuring Editors
      1. Object Type Associations
      2. Editor Settings
        1. Global Key Bindings (shortcut keys)
        2. Fonts and colors
        3. Macros
          1. Recording and saving macros
          2. Editing and executing macros
        4. Indentation engines
    6. Command Line Options
    7. Modules
      1. Installing Modules
        1. Installing from the Web
        2. Installing manually downloaded NBM files
      2. Enabling and Disabling Modules
  11. 7. Using Source Control (CVS)
    1. What Is CVS?
    2. The How, When, and Why of CVS in NetBeans
      1. When to Use CVS
      2. Where to Get a Client
      3. NetBeans and CVS
      4. Using Generic VCS
      5. Using Command-Line CVS Support
      6. CVS and NetBeans Projects
      7. New Files and Packages
      8. CVS Outside of NetBeans
    3. Mounting CVS Sources
    4. Exploring Versioned Sources
    5. Common CVS Operations
      1. Checkout/Get
      2. Checkin and Commit
      3. Add and Import
      4. Log
      5. Diff
      6. Update
    6. Unexpected Results
      1. Spurious [Local] Designation
      2. Adding Directories
      3. Adding Binary Files
    7. Uncommon CVS Operations
      1. Branching, Merging, and Tagging
      2. NetBeans CVS and the Secure Shell (SSH)
    8. Mounting a Generic Versioning System
    9. One Final Tip
  12. 8. GUI Building
    1. Creating a GUI Frame or Panel
    2. Adding Components to a GUI Container
    3. Configuring Components
    4. Building Menus
    5. Changing a Container’s Layout
    6. Working with Borders
    7. Accessibility
    8. Copying a Source Object
    9. The Connection Wizard
    10. The GridBagLayout Customizer
    11. Adding Event Handlers
    12. Using the Code Generation Properties
    13. Working Around Code Generation
    14. Containers Within Containers
    15. Building Complex GUIs
  13. 9. JavaBeans
    1. Why Should I Make Beans?
    2. Creating JavaBeans
      1. Creating a GUI Component
      2. Converting a GUI Component into a Bean
      3. Adding an Event Set to a Bean
      4. Generating a BeanInfo Class
      5. Adding a Design-Time Icon
    3. Component Palette
      1. Adding a Category to the Component Palette
      2. Adding a Bean to the Component Palette
      3. Component Palette Problems
  14. 10. Using Javadoc
    1. Javadoc Support in NetBeans
    2. Mounting Javadocs
    3. The Javadoc Search Tool
    4. Creating Javadoc
      1. The Auto Comment Tool
        1. Javadoc filtering
        2. Viewing, editing, and correcting Javadoc comments
      2. Javadoc Generation
        1. Javadoc Search Types
        2. Javadoc Executors
        3. Doclets
          1. Adding content
          2. Adding links
          3. Customizing the HTML format
          4. Additional properties
  15. 11. Working with XML
    1. Installing XML Support
    2. Overview
      1. Templates
      2. Browsing and Editing
      3. Generating Documentation
      4. Accessing with Java
      5. XML Schema Support
    3. XML Editors
    4. Beyond Editing XML
      1. Checking and Validating XML
      2. Setting the Node View
      3. Generating a DTD
      4. Generating Documentation
      5. Generating CSS
    5. Generating Java Classes
      1. Generating a SAX Document Handler
      2. Generating a DOM Tree Scanner
  16. 12. Developing Web Applications
    1. Why the IDE Supports Web Application Development
    2. How the IDE Provides Web Application Support
    3. Creating a Web Application
      1. The Filesystems View
      2. The Web Project View
    4. Working with JSP and HTML Files
    5. Advanced Web Applications Features
      1. Executing Web Applications
      2. Working with Servlets
        1. Viewing JSPs as servlets
        2. Adding servlets
          1. Adding a new servlet
          2. Adding an existing servlet
        3. Executing servlets
        4. Passing request parameters
    6. Packaging and Deploying Web Applications
      1. Deploying Web Applications
      2. Configuring Tomcat
  17. 13. Extending NetBeans
    1. What’s Different About NetBeans?
    2. The Core and the Open APIs
      1. The License
      2. Open Source
      3. The Web Site
        1. Registration
        2. Bug tracking
        3. Ways to participate
        4. The FAQs and mailing lists
    3. NetBeans for Bean Counters
    4. Getting and Installing the Open APIs Support Module
    5. Life Is Change
    6. Source Code for the Examples
  18. 14. Understanding the NetBeans APIs
    1. Design Philosophy of NetBeans
      1. Abstracting the Abstractions—the Open APIs
      2. Modularity
      3. Hierarchy, Files, and Nodes
      4. Everything Is a File—Virtually
      5. Mapping Files to Java Objects
      6. The System Filesystem
      7. Module Layers
      8. Layers in the System Filesystem
      9. Exploring the System Filesystem
      10. Data Objects—Wrappers for Persistent Data
      11. NetBeans and JavaBeans
      12. Nodes—the Application as Hierarchy
      13. Presenting Nodes to the User—Explorer
    2. User-Level Customization
      1. Nodes in Action
        1. Adding to the Component Palette using Paste Link
        2. Rearranging actions/toolbar contents/menu contents
        3. Pasting a compiled class to a menu and executing it from there
    3. Modules—Overview
      1. How Modules Add Functionality
      2. How Modules Install Virtual Filesystem Layers
      3. What Modules Can Do
      4. Disabling Modules
      5. An Illustration—NetBeans with No Modules
    4. Interacting with the IDE
      1. Setting the Status Bar Text
      2. Setting the Current Workspace
  19. 15. The Open APIs
    1. APIs versus Core versus Modules
    2. Service Provider Interfaces and Client APIs
    3. Overview of the APIs and Their Purposes
      1. Modules
        1. Module manifests
        2. XML layers
        3. Ordering files in XML layers
      2. Lookup and the Services API
        1. Lookup, .settings files, the system filesystem, and layers
        2. Commonly used or interesting classes in this package
        3. Services
      3. Nodes
        1. Commonly used or interesting classes in this package
      4. Datasystems
      5. Explorer
      6. Actions
      7. Options
      8. Compiler
      9. Editor
      10. Windowing System
      11. Cookies
        1. Cookies and supports
      12. Execution
      13. Java Hierarchy
      14. Filesystems
    4. Modules, JARs, and Class Loaders
    5. Threading, Deadlocks, andHow to Avoid Them
  20. 16. Developing Modules—the New Module Wizard
    1. The HelloWorld Module
      1. Creating a Module Using the New Module Wizard
      2. The Source Files
  21. 17. Internals of the Running IDE
    1. The Activated Node(s)
    2. Cookies
    3. A Peek under the Hood
    4. Touring NetBeans with the Bean Browser
    5. Data Objects, Nodes, and Cookies
    6. Filesystems and the Repository
    7. Services
    8. Lookup
    9. Options
    10. UI Components
      1. TopComponents, Modes, and Workspaces
        1. Browsing the window system in the system filesystem
        2. XML format for workspaces, modes, and components
      2. Actions
      3. Presenters
      4. Custom Property Editors
    11. Localization
    12. Wizards
    13. Jumping-off Places
    14. Special Folders in the System Filesystem
  22. 18. Creating the QuickPanel Module
    1. Abstractions Covered in This Chapter
    2. Creating the Project Files Drop-Down
    3. FilterNode—Filtering Which Children of a Node Are Displayed
    4. Creating the Methods Drop-Down
    5. Improving the Methods Drop-Down
    6. Creating the Module
      1. Creating a Container GUI Component
      2. Creating the ShowQuickPanelAction
      3. Creating the XML Filesystem Layer
      4. Creating and Populating the Module JAR
      5. Building and Testing the Module
    7. A Little Homework
  23. 19. A Mail-Based Filesystem
    1. Building a Mail Reader in the NetBeans Paradigm
    2. Implementing MailFileSystem Using AbstractFileSystem and JavaMail
      1. Creating a New AbstractFileSystem Implementation
      2. Mail Filesystem: AbstractFileSystem.Info
      3. Mail Filesystem: AbstractFileSystem.List
      4. Mail Filesystem: AbstractFileSystem.Change
      5. Mail Filesystem: AbstractFileSystem.Attr
      6. Other Parts of AbstractFileSystem
    3. Creating Folder Objects for Attachments
    4. Using FileSystem.Status Annotations to Mark Unread Messages
    5. BeanInfo—Displaying Filesystem Properties
    6. Using the Wizard Framework to Set Up Mail Accounts
      1. Creating Wizard Classes
      2. The IMAP Mail Server Template Wizard
  24. 20. Creating the User Interfacefor the Mail Client
    1. Creating a DataLoader for Messages
      1. Displaying and Editing Simple Messages and Unnamed Attachments
      2. Handling Multipart Messages
    2. Creating a Threaded Mail View Using Filter Nodes
      1. Making a Basic Mail View
      2. Making a Threaded Mail View as an Alternative
    3. Creating a Mail Workspace
  25. 21. Score File Support
    1. Overview—Functionality to be Implemented
    2. Creating the Minicomposer Module
      1. Creating the Manifest
      2. Creating the Layer
      3. Creating a JAR File Using Ant
    3. Creating a UniFileLoader and MultiDataObject for *.score Files
    4. Creating an Editor Support for Scores
    5. Creating a Fixed ExecCookie to Play Scores
    6. Creating a Simple Template
  26. 22. Creating a Structural View of the Score
    1. Creating a ScoreCookie to Represent a Sequence of Notes
      1. Examples of State-Based Supports
    2. Creating a ScoreSupport
      1. Why a Document Is Used
      2. Implementation of ScoreSupport
    3. Lifecycle of the Score
    4. An OpenSupport
      1. Creating an OpenCookie Implementation
      2. Showing a GUI View of the ScoreCookie
    5. Indicating Parse Errors on the Node
  27. 23. Compiling Scores
    1. Creating the Compilers
    2. Creating and Using the Compiler Cookie
    3. Displaying an Out-of-Date Badge on Score Icons
  28. 24. Executing Scores
    1. Creating the .au Player Executor
      1. The Internal Player
      2. The External Player
      3. Registering the Players as Services
    2. Creating Player Configuration Support
    3. Creating a SystemOption for the Default Executor
  29. 25. Better Score Support in the Explorer
    1. The Clip Length Property
      1. Clearing the Cache and Firing Changes
      2. Adding the Property to the Property Sheet
    2. Representing Notes as Subnodes Using Children.Keys
      1. Using Keys to Model Children
      2. Being Lazy and Cleaning Up
      3. Creating the Subnodes
      4. Attaching the Children to the Parent
    3. Permitting Subnodes to Be Renamed or Deleted
      1. Deletion of Notes
      2. Renaming of Notes
    4. Permitting Subnodes to Be Added
    5. Making Read/Write Properties on Subnodes
    6. Reordering Subnodes
    7. Data Transfer—Cut, Copy, and Paste of Notes and Sequences
      1. Overview of the Transferables
      2. Cutting and Copying
      3. Pasting
      4. Drag & Drop
      5. Converting Score → Text, Text →Score, Several Scores → One
  30. 26. Tuning Modules for Performance & Memory Footprint
    1. Startup Performance vs. Runtime Performance
    2. Operating Principles
      1. “Nobody Will Ever Use My Module”
      2. What Does My Module Really Need to Do on Startup?
      3. What Are the Critical Paths?
    3. Techniques
      1. Lazy Initialization
      2. Avoid Static Initializers
      3. Avoid ModuleInstall Classes—Use XML Layers Instead
        1. .settings files
        2. Batching results of expensive operations
      4. Partial Loading Considerations—InstanceCookie and InstanceDataObject
      5. Use URLs Instead of CDATA Sections in XML Layers
      6. Reduce the Number of Classes You Create
      7. GUI Components—Wait for addNotify( )
      8. Using the addNotify( ) and removeNotify( ) Pattern Where Exposed by Non-GUI Classes
      9. Use Weak and Soft References for Objects
        1. Utility classes that can help
      10. Use WeakListener
      11. Avoid Excessive Event Firing
      12. Avoid Overuse of Threads
      13. Batching Events
      14. Swing Performance
  31. 27. Producing Modules (Packaging & Distribution)
    1. Versioning
      1. Version Numbers and What They Mean
      2. Specifying Dependencies
      3. Managing Inter-Module Dependencies
        1. Routine and compatible upgrades
        2. Incompatible upgrades
        3. Module dependencies and relative order
    2. Upgrading User Settings
      1. Settings History and Physical Format
      2. Upgrade Scenarios for Settings
        1. Serialized settings
        2. Templates and saved files
        3. Actions
        4. Window system elements and custom formats
      3. What Happens When a Module Is Disabled?
      4. User Development Data
    3. Bundling Extension Libraries
      1. Referencing Libraries with Class-Path
      2. Using Autoload Library Modules
      3. Ad-Hoc Resources and Module Installer Validation
    4. Internationalization and Accessibility
      1. I18N and L10N
      2. A11Y
    5. JavaHelp—Writing and Distributing
      1. Creating a Help Set
      2. Adding a Help Set to NetBeans
      3. Adding Context Help
      4. Separating Help from Code
    6. Supporting User-Level Java APIs
      1. Supplying a Parser Database
      2. Bundling Javadoc
      3. Adding to the Default Classpath
      4. Templates
      5. Bean Installation
    7. Creating the Module JAR File Within the IDE
    8. Creating a Build Script Using Ant
    9. Producing the .nbm File
    10. Publishing Using the Update Center
    11. Using ErrorManager to Log Problems
    12. Testing
  32. 28. Building Your Distribution of NetBeans
    1. Do You Need Your Own Distribution?
    2. Licensing
    3. Selecting a Baseline
    4. Getting the Sources
    5. Customizing the Build Process
    6. Adding Modules to a “Stock” Distribution
    7. Creating Preconfigured Settings
    8. Branding
      1. Implementing Branding on a Distribution
      2. Simple Branding: Text Strings and Images
      3. Configuration Branding: Menu Bar, Workspaces, and More
        1. Replacing a file
        2. Adding a file
        3. Removing (masking) a file
        4. Using the Open APIs Support to brand layers
      4. Advanced Branding: Patching Behavior
  33. A. A Tour of Existing Modules
    1. Modules That Expose Functionality You Might Need
      1. The XML Modules
      2. The Editor
      3. Version Control—the VCS Core Module
      4. RemoteFS
      5. The Ant Module
      6. The Java Module
      7. Debugger Core
      8. J2EE Server
      9. Form Editor
      10. HTTP Server Module
      11. Classfile Reader Module
      12. The Metadata Repository—a Whole Host of APIs
      13. Socket-Based Editor Support—the External Editor Module
    2. Incidental APIs, Utilities, and Extensions
      1. The Utilities Module
      2. API Extensions (openidex)
    3. Modules That Make Good Examples for Things You May Need to Implement
      1. Annotations and Dynamic Editor Tool Tips—the Ant Module and the Debugger Core Module
      2. Adding Information to the View of Java Sources—the Beans Module
      3. Adding a Debugger Type—the Applet Module
      4. Multiplexing DataObjects and Complex Cut/Copy/Paste Support—the Properties Module
      5. Working with Network Protocols to Access Files—JavaCVS and RemoteFS
      6. Domain-Specific XML Support—the Tomcat and Ant Modules
      7. Stretching the Limits—the Web Modules
      8. Complex Syntax Coloring—the JSP Module
      9. Multi-Stage Compilation—the JSP, RMI, and CORBA Modules
      10. Bridging to an Entirely Different Build System—the Ant and Makefile Modules
      11. Use of the Compiler Infrastructure for Non-Compilation Tasks—the JAR Packager Module
      12. Execution—the Applet and JSP/Servlet Modules
      13. Custom Hyperlinking in the Output Window—the Ant Module
      14. Specifying Windows, Workspaces, and Components Using XML—the Core Window System and the Form Editor Module
      15. Complex Work with MIMEResolvers and Multi-File DataObjects—the CPP Module
      16. Cut/Copy/Paste—Data Transfer Support for Complex Elements—the Ant and Java Modules
      17. Interconversion between Different Types of Clipboard Contents—JNDI, CORBA, and RMI
      18. Integrating Other Programming Languages—the C++/Fortran, Scripting, and WebL Modules
      19. Fancy Footwork with Nodes—the Java Module
      20. Adding Nodes to the Runtime Tab in the Explorer—the RMI, CORBA, JNDI, and Database Explorer Modules
      21. The Bare Essentials of Non-Data-Driven Nodes—the System Properties Module
      22. Wizards—the CORBA, Java, and New Module Wizard Modules
      23. Embedding Property Panels into Wizards—the Java Module
      24. Complex Explorer Views—the Debugger Core Module
      25. Enabling/Disabling Sets of Actions Based on Context—the VCS Core Module
  34. B. Useful Utility Classes
    1. XML Utilities
      1. org.openide.xml.XMLUtil
      2. org.openide.xml.EntityCatalog
    2. Visual Components and Extensions to Standard Swing Components
    3. Lookup Implementations
    4. Threading
    5. Miscellaneous Utility Classes inorg.openide.util
    6. Serialization Helpers
  35. C. Resources
    1. CVSHome
      1. GNU/BSD/Other Operating Systems
      2. CVS GUI Clients
    2. Java Environments
    3. Java Tools
      1. Apache Software Foundation
    4. Secure Shell (SSH) Resources
    5. Cygwin for Windows
    6. Newsgroups and Mailing Lists
    7. Web Sites
      1. Organization of Main NetBeans Web Site
      2. Sun Sites
    8. NetBeans Open Source Projects with Design Forms in the Distribution
    9. Java-Oriented IDEs Other Than NetBeans
  36. D. Future Plans
    1. Declarative Instantiation
    2. Uniform Lookup
    3. Datasystems II
    4. The Looks API
    5. Declarative Actions
    6. Deprecation of IDE-Specific Functionality in the Open APIs
    7. The Metadata Repository
      1. Standards Employed by the MDR
    8. Project Support
  37. E. Working with Open Source and NetBeans
    1. Practices
      1. Governance
      2. Consensus
        1. The mechanics of consensus
      3. How to Get Involved
        1. The mechanics of contribution
      4. The Lifecycle of Module Development
    2. Resources
      1. CVS (Concurrent Versioning System)
      2. Projects
      3. Mailing Lists
        1. CVS mailing lists
        2. Issue mailing lists
      4. Issuezilla
    3. Interacting Effectively on Mailing Lists
  38. F. Additional Modules and Where to Find Them
    1. Open Source Modules Available Via the Update Center
    2. The Modules Marketplace on Flashline
    3. IDEs That Are Distributions of the NetBeans IDE
    4. Open Source Application Projects Based on NetBeans
    5. Commercial Applications Built on the NetBeans Platform
    6. Commercial Modules Available for NetBeans
    7. Should You Create Your Own Update Server?
  39. Index
  40. About the Authors
  41. Colophon
  42. SPECIAL OFFER: Upgrade this ebook with O’Reilly