<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>What's New in NetBeans Platform 6.8?</title>
        <link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css"/>
        <meta name="AUDIENCE" content="NBUSER"/>
        <meta name="TYPE" content="ARTICLE"/>
        <meta name="EXPIRES" content="N"/>
        <meta name="developer" content="gwielenga@netbeans.org"/>
        <meta name="indexed" content="y"/>
        <meta name="description" content="Overview of new features in NetBeans Platform 6.8"/>
    </head>
    <body>
        <h1>What's New in NetBeans Platform 6.8?</h1>

<p>An overview of changes relating to
    <a href="https://platform.netbeans.org/">NetBeans Platform 6.8</a>, which is the
 Swing framework that underpins applications such as NetBeans IDE.</p>

 <p><b>Note:</b> <a href="https://platform.netbeans.org/whatsnew/67.html">Click here</a> for the previous
 release of this document.</p>

<h3>New & Changed Features</h3>

<p>Read all of the enhancements <a href="http://bits.netbeans.org/6.8/javadoc/apichanges.html">here</a>, with
 the main new feature highlights as follows:</p>

<ul>
    <li><b>Annotations.</b> Continuing the trend from NetBeans Platform 6.7,
         several items can be registered via annotations. Below is the list
         of annotations introduced in NetBeans Platform 6.8:
<ul>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectuiapi/apichanges.html#CompositeCategoryProvider.Registration">@CompositeCategoryProvider.Registration</a></li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-settings/apichanges.html#convert.as.javabean">@ConvertAsJavaBean</a></li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-api-debugger-jpda/org/netbeans/spi/debugger/jpda/Evaluator.Registration.html">@Evaluator</a></li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-options-api/org/netbeans/spi/options/OptionsPanelController.ContainerRegistration.html">@OptionsPanelController.ContainerRegistration</a></li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-options-api/org/netbeans/spi/options/OptionsPanelController.SubRegistration.html">@OptionsPanelController.SubRegistration</a></li>
<li><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-options-api/org/netbeans/spi/options/OptionsPanelController.TopLevelRegistration.html">@OptionsPanelController.TopLevelRegistration</a></li>
</ul></li>

    <li><b>LayerBuilder.</b> Each of the annotations above, as well
             as the others that the NetBeans Platform provides, generate
             registration tags at compile time, such as in your layer.xml file.
             In addition to using these predefined annotations, you can create
             your own, using the <a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/annotations/LayerBuilder.html">org.openide.filesystems.annotations.LayerBuilder</a>
             class, which was introduced in NetBeans Platform 6.7 and enhanced in 6.8. For all
             the details, see the Javadoc for the new <a href="http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/annotations/package-summary.html">org.openide.filesystems.annotations</a>
             package.</li>

             <li><b><tt>ActionListeners</tt> for Context Aware Actions and Callback Actions.</b>
                       Where in recent releases, <tt>ActionListeners</tt> could
                       be registered in the layer file as Always Enabled Actions,
                       <a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/apichanges.html#Actions.context">this is now also possible for other actions</a> too.
                       <a href="http://blogs.sun.com/geertjan/entry/the_continuing_march_of_actionlistener">More details here.</a></li>

    <li><b>Declarative Asynchronous Actions.</b> By adding a single
             attribute to an action registration in the layer file,
             you can let the <a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/apichanges.html#Actions.asynchronous">action process asynchronously</a>. In these
             cases, you therefore do not have to code an implementation
             of the NetBeans Platform's RequestProcessor class.
             <a href="http://blogs.sun.com/geertjan/entry/asynchronous_actions_and_netbeans_platform">More details here.</a></li>

                 <li><b><tt>SaveCookie</tt>.</b> In previous releases, you needed
             to create a dummy node in order to work with
             <tt>SaveCookie</tt>, which is the interface for integrating
             with the NetBeans Platform's save functionality.
             Now, you don't. <a href="http://blogs.sun.com/geertjan/entry/the_divorce_of_savecookies_from">More details here.</a>
             Note that we still have no satisfactory way of generalizing <tt>SaveAllAction</tt>.</li>

             <li><b>Programmatically Cause a Restart.</b> Use <tt>LifecycleManager.markForRestart</tt>
                      to restart an application after exiting. <a href="http://bits.netbeans.org/dev/javadoc/org-openide-util/apichanges.html#LifecycleManager.markForRestart">More details here.</a></li>

             <li><b>Support for Disabled Buttons.</b> Create low color
                      saturation <a href="http://bits.netbeans.org/dev/javadoc/org-openide-util/apichanges.html#ImageUtilities.createDisabled">icons for disabled buttons</a>
                      via the new <tt>ImageUtilities.createDisabledIcon</tt>
                      and <tt>ImageUtilities.createDisabledImage</tt>.</li>

                      <li><b>Enhanced Output Window APIs</b>. Added API to
                              have better control of text color
                              and hyperlinks, which can be a big benefit
                              to people using the Output Window. While in NetBeans Platform In 6.7
                              it was possible to control the color of whole lines,
                              now you can use <tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-io/org/openide/windows/IOColorPrint.html">IOColorPrint</a>.print()</tt> methods to
                              do any coloring you want. Also, you can have several
                              hyperlinks on a single line. <a href="http://bits.netbeans.org/dev/javadoc/org-openide-io/apichanges.html#Color-printing">More details here.</a></li>

     
</ul>

<h3>Enhancements to NetBeans IDE APIs</h3>

<p>NetBeans IDE, the development tool created on top of the
     NetBeans Platform, underwent several changes in its APIs
     during the 6.8 timeframe.</p>

<ul>
    <li><b><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-server/overview-summary.html">Common Server API</a>.</b>
             This API is under development. It lets you register server implementations, without
             the requirement that the server is an implementation of a Java EE specification.
             <a href="http://blogs.sun.com/geertjan/entry/netbeans_common_server_api">More details here.</a></li>
    <li><b><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-diff/">Diff API</a>.</b> Support
            for everything related to creation and visualization of diffs.
            This library lets you register various diff providers and visualizers
            and provides programmatic access to their functionality.
            <a href="http://blogs.sun.com/geertjan/entry/netbeans_diff_api">More details here.</a></li>
    <li><b><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-api-debugger-jpda/org/netbeans/spi/debugger/jpda/Evaluator.html">Evaluator API</a>.</b> Evaluator service for a language that compiles into bytecode.</li>
    <li><b>Framework specification of web.xml requirement.</b> Since
                      Java EE 6 does not require web applications to have <tt>web.xml</tt> files,
                      your framework implementations can specify whether
                      a web application created on the framework requires one.
                      <a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-api-web-webmodule/apichanges.html#Adding_requresWebXml">More details here.</a></li>
</ul>

<h3>Deprecations</h3>
<p>The following are deprecated/obsolete from 6.8 onwards:</p>
<ul>
    <li>In the Options API, <tt>AdvancedOption</tt> and
        <tt>OptionsPanelController.createAdvanced</tt> are deprecated
         because these do not do anything you 
         cannot do more easily using the annotations described above.</li>
         <li>In the Utilities API, Nodes API, and Actions API, you are recommended to
                 not use <tt>SystemAction</tt>, <tt>CallableSystemAction</tt>,
        <tt>NodeAction</tt>, and <tt>CookieAction</tt> anymore. They will
        be deprecated in the future. Instead, you should use the declarative actions
        referred to above.</li>
</ul>

<h3>New Screencasts</h3>
<p>The following screencasts are new in the 6.8 release cycle:</p>
 <ul >
     <li><a href="http://blip.tv/play/AYGh7k8C">MVC, DCI, and NetBeans Platform</a></li>
     <li><a href="http://netbeans.dzone.com/videos/screencast-splitting-one">Splitting a One Module Application into a Modular Application</a></li>
 </ul>

<h3>New Articles & Tutorials</h3>
<p>The following are published for the first time in the 6.8 release cycle:</p>
<ul >
    <li><a href="http://netbeans.dzone.com/crud-on-netbeans-platform">How to Create a Swing CRUD Application on NetBeans Platform 6.8</a></li>
    <li><a href="http://java.dzone.com/news/how-to-split-into-modules">How to Split an Application into Modules?</a></li>
    <li><a href="../tutorials/nbm-propertyeditors-integration.html">Integrated Property Editors in NetBeans</a></li>
</ul>
    <p>Work has started on <a href="http://wiki.netbeans.org/PetriEnglishTranslation">translating a new NetBeans Platform 
            book to English</a>,
         which will be updated to NetBeans Platform 6.8.</p>

    <p>Finally, the <a href="https://platform.netbeans.org/screenshots.html">NetBeans Platform Showcase</a> has been updated with many
         new screenshots of NetBeans Platform applications.</p>

    </body>

</html>
