<html>
    <head>
        <title>Rich Client Programming: Plugging into the NetBeans Platform</title>
    </head>
    <body>
        <h2>Rich Client Programming: Plugging into the NetBeans Platform</h2>
        <p>The official page for the latest and greatest book on the NetBeans Platform, 
        due to be released May 2007!</p>
        
        <p><h3>10 September 2007: Javalobby Publishes Book Review</h3>
        "This book is admirable in its completeness and its clarity." For the full
        review, <a href="http://www.javalobby.org/articles/rich-client-programming/">click here</a>.
        
        <p><h3>17 June 2007: Errata Published</h3> 
        We have begun, based on user feedback, gathering the 'errata' of the book
        into a central location. Click below to jump to the errata page for the book:
        
        <p><a href="http://wiki.netbeans.org/wiki/view/NetBeansDeveloperFAQRCPBookErrata">Errata for "Rich Client Programming: Plugging into the NetBeans Platform"</a>
        
        <p>If you have come across code or text in the book that you believe
        is not entirely correct, please write to dev@openide.netbeans.org with
        your comments. Your issues will be discussed on that list and, if it turns
        out that your comments are genuinely 'errata worthy', they will be added to
        the errata page.
        
        <p><h3>7 May 2007: Exclusive picture of the authors!</h3> 
        A picture taken by Jim Grisanzio, at NetBeans Day in San Francisco:
      
        <p><p><img border="1" align="center" src="authors.png"></a>
        
        <p>Left to right: Geertjan Wielenga, Jaroslav Tulach, Tim Boudreau
        
        <p><h3>5 May 2007: The book is real.</h3> 

        <p>Today the book was delivered in Prague, where NetBeans is based.
        If you come to NetBeans Day on Monday May 7, you will get your own
        copy, as shown here:
        
        <p><p><img border="1" align="center" src="thebook2.JPG"></a>
        
        
        
        
        <p><h3>3 May 2007: Book Samples Now in 5.5 Update Center!</h3> 
        NetBeans IDE 5.5 update center now provides
        the samples (in addition to the 6.0 development update center, as previously announced):
        
        <p><p><img border="1" align="center" src="update-center.png"></a>
        
        
        <p><h3>25 April 2007: Book Samples Freely Available in Update Center!</h3> 
        NetBeans IDE 6.0 development update center now provides
        the samples. For more information, 
        click <a href="http://blogs.sun.com/geertjan/entry/freely_available_samples_for_rich">here</a>.
        
        <p><h3>27 February 2007: Rough Cuts Available!</h3> 
        The rough cuts are available, click here to get to the site
        and purchase your very own copy:
        
        <p><p><a href="http://safari.awprofessional.com/9780132354806"><img border="1" align="center" src="purchase-rough-cut.png"></a>
        
        <p><h3>26 February 2007: Front Cover.</h3> 
        Soon the Rough Cut version of the book will be available <a href="http://vig.prenhall.com/catalog/academic/product/0,1144,0132344475,00.html">here</a>.
        This is what the front cover of the book looks like:
        
        <p><p><img border="1" align="center" src="rough-cut-cover.png">
        
        
        <p><h3>16 February 2007: Early Pre-release.</h3> 
        We're pre-releasing a draft of one of the earliest chapters of the book, which sets
        the tone for the rest of it: <a href="http://usersguide.netbeans.org/files/documents/40/1315/rcp-book-ch2.pdf">Chapter 2: The Benefits of Modular Programming</a>
        
        <p><h3>27 January 2007: Planned Table of Contents.</h3>
        The planned table of contents for the book Rich Client Programming
        is as follows:
        <ol>
            <li>Getting Started with the NetBeans Platform
            <li>The Benefits of Modular Programming
            <li>Modular Architecture
            <li>Loosely Coupled Communication
            <li>Lookup
            <li>Filesystems
            <li>Threading, Listener Patterns, and MIME Lookup
            <li>The Window System
            <li>Graphical User Interfaces
            <li>Nodes, Explorer Views, Actions, and Presenters
            <li>MultiView Editors
            <li>Syntax Highlighting
            <li>Code Completion
            <li>Component Palettes
            <li>Hyperlinks
            <li>Annotations
            <li>Options Windows
            <li>Web Frameworks
            <li>Web Services
            <li>JavaHelp Documentation
            <li>Update Centers
            <li>Appendices
            <br>- Appendix A: Advanced Module System Techniques
            <br>- Appendix B: Common Idioms and Code Patterns in NetBeans
            <br>- Appendix C: Performance
        </ol>
        <hr>
    </body>
</html>