<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>NetBeans IDE 6.0 Information</title>
        <meta name="DESCRIPTION" content="Features, Demos, Tutorials, and Release Dates for the NetBeans IDE 6.0 Release">
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    
    <body>
        
        <a name="top"></a>
        <h1>NetBeans IDE 6.0 Information</h1>
        <p>
            The NetBeans IDE is a modular, standards-based, integrated development environment (IDE) written 
            in the Java programming language. The NetBeans project consists of 
            an <a href="../../../features/index.html">open source IDE</a>  
            and an <a href="../../../features/platform/index.html">application platform</a>, 
            which can be used as a generic framework to build any kind of application.
        </p>
        <p>
            The focus of NetBeans IDE 6.0 is improved developer productivity through a smarter, 
            faster editor, and the integration of all NetBeans products into one IDE.
        </p>
        
        <h2>Getting NetBeans IDE 6.0</h2>
        
        <p>
            The currently available download is NetBeans IDE 6.0.1, which is a small update to NetBeans IDE 6.0.
            Click the Download button to get the latest release. 
        </p>
        
        <p>
            <a href="http://download.netbeans.org/netbeans/6.0/final/"><img src="../../../images_www/v6/frontpage-download-button.gif" border="0"></a>
        </p>
        
        <p>
            The majority of the NetBeans IDE 6.0 code is available under a dual license consisting of the <a href="https://netbeans.org/cddl-gplv2.html">Common Development and Distribution License (CDDL) v1.0 and the GNU General Public License (GPL) v2</a>. See <a href="https://netbeans.org/about/legal/code_dependency_matrix.html">details about the components in NetBeans</a> and the licenses under which they are covered.
        </p>
         <h2>What's New in NetBeans IDE 6.0.1</h2>      
            <p>The currently available download is NetBeans IDE 6.0.1, which
            is a small update to NetBeans IDE 6.0. This update  
            includes the following changes:</p>
            <ul>
                <li>Addition of Japanese, 
                Simplified Chinese, and Brazilian Portuguese localizations.</li>
                <li>Glassfish V2 is replaced with Glassfish V2 UR1.</li> 
                <li>The integration of the December 2007 and January 2008 bug fixes listed on 
                the following page: <a href="http://wiki.netbeans.org/wiki/view/NetBeans6.0PatchesInfo">http://wiki.netbeans.org/wiki/view/NetBeans6.0PatchesInfo</a>. 
                <p>If you have already installed NetBeans IDE 6.0, you can get these fixes 
                through the IDE's Plugins Manager without downloading the 6.0.1 version. In the IDE, choose 
                Tools &gt; Plugins, select the Update tab, and then select the 
        appropriate updates.</p></li>
            </ul>
        <h2>Documentation</h2>
        <p>Use the following documents to get started with NetBeans 6.0. This documentation will work for NetBeans 6.0.1. </p>
        
        <ul>
            <li><a href="./relnotes.html">Release Notes</a></li>  
            <li><a href="./install.html">Installation Instructions</a></li>
            <li><a href="https://netbeans.org/kb/archive/index.html">Tutorials, Guides, Tech Articles and Flash Demos</a></li>
            <li><a href="../../magazine/">NetBeans Magazine!</a></li>
        </ul>

       
        
        <h2>What's New in NetBeans IDE 6.0</h2>
        
        <p>Below is a summary of the most exciting new features in NetBeans IDE 6.0. 
            You can also visit the <a href="http://wiki.netbeans.org/wiki/view/NewAndNoteWorthy">New and Noteworthy page</a> for a 
        detailed list of changes since the 5.5.1 release.</p>
        
        <h3>Editor Improvements</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>Smarter code completion.</b> The NetBeans editor is quicker and smarter,
                                providing completions for keywords, fields, and variables. It also lists the most
                            logical options at the top, and lets you dig down into the full options at the bottom</li>
                        </ul>
                    </td>
                    <td align="center" valign="top"><img src="../../../images_www/screenshots/6.0/code-completion4.jpg" border="1" alt="screenshot of the code completion dialog box"> </td>
                </tr>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>Highlights.</b> You can think of the highlights feature as an 
                                easy-to-use and more correct substitution for the editors Search. The IDE 
                                tracks the position of the caret and, based on it, highlights some parts 
                                of the code. The highlights are marked with a background color in the editor 
                                they are also put into the error stripe, which permits for having overview 
                            of the whole file. </li>
                            <li><b>Better Navigation and Inspection.</b> In addition to Highlights, 
                                the source editor lets you quickly navigate through your code with improved Navigator
                            window organization and the Members and Hierarchy Inspectors.</li>
                            <li><b>More than just code completion.</b> With live templates and Surround With
                                functionality, you can quickly enter commonly used blocks of code and focus
                            on the business logic.</li>
                            <li><b>There is much more.</b> See the <a href="http://wiki.netbeans.org/wiki/view/Java_EditorUsersGuide">Java Editor User's Guide</a>.</li>
                        </ul>
                    </td>
                    <td align="center" valign="top"><img src="../../../images_www/screenshots/6.0/hilites3.jpg" border="1" alt="screenshot of debugger windows with the Local Variables window fronted"></td>
                </tr>
            </tbody>
        </table>
        <h3>Ruby/JRuby/Ruby on Rails Support</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul><li><b>Project Support.</b> Quickly create Ruby projects with logical structure, run Ruby files, configure other Ruby interpreters (such as JRuby or native Ruby), locate and install Ruby Gems through a graphical wizard, create and execute unit tests, run RSpec specification files, jump between a Ruby file and its corresponding unit test or spec file, and so on.  <a href="https://netbeans.org/download/flash/jruby_on_rails/jruby_on_rails.html">View Demo.</a></li>
                            <li><b>Advanced Ruby Editing.</b> Advanced code editing for Ruby, using semantic information about the program to offer code completion, showing available classes and methods for the current expression, along with the associated RDoc documentation. The syntax highlighting is enhanced with semantic information, such that unused local variables and parameters are shown in gray. There are many other editing features, including Goto Declaration for jumping to the declaration point of a class or method reference. <a href="https://netbeans.org/download/flash/jruby_editing/jruby_editing.html">View Demo.</a></li>
                            <li><b>Ruby Debugger. </b> Single-step or run through Ruby code, set breakpoints, look at local variables, navigate the call stack, switch threads, and evaluate expressions by just hovering the mouse over the variable in the Editor.  There is also support for the &quot;fast debug&quot; extension. </li>
                            <li><b>Ruby on Rails Support.</b> Generate Rails projects, or generate code through the Rails code generator graphical wizard, which offers documentation on the plugins within the wizard itself. Third party generators are also supported. Furthermore, there are actions for jumping quickly between a Rails action and its corresponding View, or warping to the browser for the URL most relevant to the file you are editing. Database migrations and Rake targets are supported as well. Finally, RHTML files are highlighted (along with improved NetBeans 6.0 support for related files, such as JavaScript and CSS).</li>
                    </ul>    </td>
                    <td align="center" valign="top">
                        <img src="../../../images_www/screenshots/6.0/ruby-project.png" border="1"
                             alt="screenshot of a window being moved by drag and drop">
                    </td>
                </tr>
            </tbody>
        </table>
        <h3>Easier Installation and Upgrading</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>Unified installation experience.</b> The new NetBeans installer makes
                                it easier to get the functionality that you want. No more downloading and installing
                                separate packs. Now you choose the download that best suits you and
                                install the features and runtimes you need in one installer. You can add functionality
                            later by re-running the installer.</li>
                            <li><b>Keep updated.</b> The Update Center and Module Manager have been 
                                merged into the Plugins manager. Easily enable and disable functionality, search
                            for updates, and get new functionality all in one place.</li>
                        </ul>
                    </td>
                    <td align="center" valign="top">
                        <img src="../../../images_www/screenshots/6.0/pluginmgr2.jpg" alt="Manage your plugins with Plugin Manager." border="1">
                    </td>
                </tr>
            </tbody>
        </table>
        
        <h3>Swing GUI Development</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        
                        <p>In addition to numerous improvements of the highly acclaimed
                            NetBeans GUI Designer (formerly known as "Project Matisse"),
                            Java desktop application development support has been enhanced
                        with following features:</p>
                        
                        <ul>
                            
                            
                            <li><b>Swing Database Applications.</b> Taking advantage of Beans Binding 
                                technology (JSR 295) and the Java Persistence API, it is now easier 
                                than ever to create Swing desktop database applications. Using the 
                                new Java Desktop Application project template, you can quickly set up 
                                a form that displays a database table and enables you to modify the 
                                database. Bind a database table to an existing form by dragging a table 
                            from the Runtime window onto a form. <a href="https://netbeans.org/download/flash/netbeans_6_gui_builder/netbeans_6_gui_builder.html">View Demo.</a></li>
                            <li><b>Beans Binding.</b> Besides helping with database applications, 
                                the IDE's support for beans binding also makes it much easier for you to keep 
                            properties of different beans in synch.</li>
                            <li><b>Swing Application Framework (JSR 296) support.</b> You can now 
                                develop small to medium-sized desktop applications faster than ever by taking advantage 
                                of the building blocks provided by the Swing Application Framework. 
                            This framework simplifies the handling of the application lifecycle, actions and resources.</li>
                        </ul>
                    </td>
                    <td align="center" valign="top">
                        <img src="../../../images_www/screenshots/6.0/desktopdb.png" 
                             alt="screenshot of a running desktop database application created with the help of beans binding and Swing Application Framework support" >
                    </td>
                </tr>
            </tbody>
        </table>
        
        <h3>Profiling</h3>
        <table border="0" cellspacing="5">
            <tr>
                <td valign="top">
                    <ul>
                        <li><b>Profiler integrated into NetBeans IDE.</b> NetBeans Profiler has become an integral part of NetBeans IDE 6.0! 
                        There's now no need to download and install the NetBeans Profiler separately.</li>
                        <li><b>Profiling Points.</b> Profiling points enable you to place profiling points in your source code to more precisely
                        control the collection of profiling results. </li>
                        <li><b>Compare Memory Snapshots.</b> You can compare saved and unsaved memory snapshots to see what objects 
                            have been created or released from the heap between when the snapshots were taken.
                        For more, see <a href="http://profiler.netbeans.org/docs/help/6.0/compare_snapshots.html">Comparing Memory Snapshots</a>.</li>
                        <li><b>DrillDown Graph.</b> Profiling results can be displayed in a graph that categorizes where CPU time has been spent.  
                            You can click on the graph sections to drill down from high-level categories to more detailed profiling information. 
                        For more, see <a href="http://profiler.netbeans.org/docs/help/6.0/live_results_categorization.html">Areas of Interest - Categorization rules</a></li>
                        <li><b>Heap Walker.</b> When profiling your application you can now use the Heap Walker to help evaluate Java heap contents and search for memory leaks. 
                        For more information about Heap Walker, see the <a href="http://profiler.netbeans.org/docs/help/6.0/heapwalker.html">Profiler 6.0 documentation on Heap Walker</a>.</li>
                        <li><b>JMeter Integration.</b> Added support for JMeter enables you to start JMeter scripts at the beginning of a 
                            profiling session, providing an easy way to do load testing while you profile. 
                        For more, see <a href="https://netbeans.org/kb/archive/index.html">Load Generator Support</a>. <i>(Archived 6.0 document: profile_loadgenerator.html)</i></li>
                        <li><b>Dynamic Attach on JDK 1.6.</b></li>
                    </ul>
                </td>
                <td align="right" valign="top">
                    <img src="../../../images_www/screenshots/6.0/profiler-pt_dialog.png" style="border:1px solid #333;" alt="profiler Profiling Points dialog" width="350" height="284" >
                    <img src="../../../images_www/screenshots/6.0/profiler-heapwalker.png" style="border:1px solid #333;margin:10px 0;" alt="profiler Heap Walker" width="350" height="242" >
                </td>
            </tr>
        </table>
        
        <h3>Web and Java EE</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>Built-in visual design for web applications.</b> The Visual Web project template is now merged with the main web application project template. Just add the Visual Web JavaServer Faces framework to your web project and 
                            leverage a comprehensive library of Ajax enabled JavaServer Faces components to build your application.</li>
                            <li><b>Visual page flow editing.</b>  Linking pages in your web application has never been easier with the new 
                            Visual Page Flow Editor, supporting JavaServer Faces, JSP, and HTML pages.</li>
                            <li><b>Enhanced JavaScript support.</b> Full syntax highlighting, code
                                completion, and error checking for JavaScript code is available both in 
                            stand-alone JavaScript files and in HTML, RHTML, and JSP files.</li> 
                            <li><b>Enhanced web services support.</b> Drag and drop consumption of web services
                                in visual web app pages. Restful web services are available to wrap entity beans and 
                                provide easy CRUD functionality. Better visual editing of JAX-WS web services. Integral support for web service security, reliability and transactions. Improved web service interoperability.
                            Deployment to Sun Java System Application Server, GlassFish, Tomcat, JBoss 4.2.1, and JBossWS 2.0.1. </li>                    
                            <li>     <b>Support for  Ajax-enabled JavaServer Faces components.</b> <a href="https://woodstock.dev.java.net">Project Woodstock</a> component library encapsulates Javascript and complex server side within JavaServer Faces components. Using an Ajax-enabled component is like working with any other component: Drag and drop the component, set properties, and customize server-side event handlers.</li>
                            <li><b>Easy migration from Java Studio Creator.</b> Positioned as the migration path for Java Studio Creator 2, NetBeans 6 preserves your investment in Java Studio Creator projects while allowing you to leverage the many productivity features of the NetBeans IDE in one tool.</li>
                            <li><b>Enhanced CSS editing.</b> The CSS Editor lets you preview changes to your CSS
                            as you make them.</li>      
                    </ul>    </td>
                    <td align="center" valign="top">
                        <a href="../../../images_www/screenshots/6.0/web-projectlg.png" title="Web developer Mauro Cioni migrated his project to NetBeans IDE 6.0. Click to enlarge."><img src="../../../images_www/screenshots/6.0/web-projectsm.png" alt="Web developer Mauro Cioni migrated his project to NetBeans IDE 6.0. Click to enlarge"><br>Click to see Visual Web developer Mauro Cioni's project migrated to NetBeans IDE 6.0.</a> <br> <br><br>
                        <a href="http://www.meteozoom.it" title="Web developer Mauro Cioni's live website."><img src="../../../images_www/screenshots/6.0/web-meteozoom.png" alt="Click to see live app."><br>Click to see Visual Web developer Mauro Cioni's live website.</a>
                        
                    </td>
                </tr>
            </tbody>
        </table>
        
        <h3>Mobility</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>New Integrated UI for CLDC/MIDP and CDC development.</b> The 
                                Mobility pack now supports the project properties previously available 
                                only for CLDC/MIDP projects. These include project configuration support 
                                for device fragmentation, integrated obfuscation and optimization 
                                support, and multiple deployment options, all built on Apache Ant 
                            for easier coding and management. </li>
                            <li><b>New game builder. </b>Now it's easier to create mobile games 
                                with the Mobility Pack's visual editing support for the MIDP 2.0 Game 
                                API. The API supports animated sprites and the ability to arrange 
                            tiled layers into scenes. </li>
                            <li><b>New Visual Mobile Designer.</b> The Visual Mobile Designer 
                                (VMD) has been re-designed for improved functionality and usability. 
                            </li>
                            <li><b>Design analysis.</b> Design Analysis identifies unused 
                            components for removal from complex visual designs .</li>
                            <li><b>New custom components.</b> New components for the Visual 
                                Mobile Designer simplify the creation and design of mobile file browsers, 
                                Short Message Service (SMS) composers, login screens, and Personal 
                            Information Manager (PIM) browsers.</li>
                            <li><b>New components for Flow Control.</b></li>
                            <li><b>Generated code is now easier to modify.</b></li>
                            <li> <b>Re-written JSR-172 stub compiler.</b> The new generator 
                                has support for Base64 type and is able to parse documentation from 
                            methods. </li>
                            <li><b>Improved project configuration management.</b> A new 
                                UI for the Project wizard makes it easier to add new project configurations 
                                for new mobile devices. It's now easier to create multiple builds 
                            for multiple configurations. </li>
                        </ul>
                    </td>
                    <td align="center" valign="top">
                        <img src="../../../images_www/screenshots/6.0/visual-mobile-designer-small.png"><br><br>
                        <!--<p><img src="../../../images_www/screenshots/6.0/game-designer-small.png" width="330" height="265"></p>-->
                <img src="../../../images_www/screenshots/6.0/game-designer-small.png"></td></tr>
                
            </tbody>
        </table>
        
        <h3>SOA</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>Artifacts for service composition and assembly.</b> The Composite Application Service Assembly Editor allows you to edit the configuration of enterprise projects. It supports adding and/or modifying bindings and service endpoints, adding/removing connections between Service Units to connect to endpoints of external Service Units, and creating Binding Component-to-Binding Component connections.</li>
                            <li><b>Graphical WSDL editor.</b> Create abstract WSDL documents (WSDL without bindings) easily along with partner link type information.</li>
                            <li><b>XSLT editor to edit transformations.</b> Visually edit transformations.</li>
                            <li><b>Tooling support for binding components.</b> Support for File, HTTP, and JMS binding components.</li>
                            <li><b>Java EE Web Service project support.</b> A Java EE project that implements web service server or client interfaces can be added to a composite application as a JBI Service Unit. The Java EE project can communicate with other service units directly using the internal JBI Normalized Message Router (NMR).</li>
                        </ul>
                    </td>
                    <td align="center" valign="top" nowrap><a href="../../../images_www/screenshots/6.0/soa-bpelproject.png" title="Use the BPEL Designer to rapidly design a business process diagram, and the NetBeans will generate the corresponding WS-BPEL 2.0 compliant source code. Fully automated round-trip engineering between source and design views.  Visually add and connect partner links to BPEL project. Click to enlarge."><img src="../../../images_www/screenshots/6.0/soa-bpelproject-thumb.png" alt="Use the BPEL Designer to rapidly design a business process diagram, and the NetBeans will generate the corresponding WS-BPEL 2.0 compliant source code. Fully automated round-trip engineering between source and design views.  Visually add and connect partner links to BPEL project. Click to enlarge."></a>&nbsp;
                        <a href="../../../images_www/screenshots/6.0/soa-casaeditor.png" title="The  Composite Application Service Assembly (CASA) editor allows users to visually edit composite applications and provides drag and drop  support for adding WSDL bindings, External Service Units. Click to enlarge."><img src="../../../images_www/screenshots/6.0/soa-casaeditor-thumb.png" alt="The  Composite Application Service Assembly (CASA) editor allows users to visually edit composite applications and provides drag and drop  support for adding WSDL bindings, External Service Units. Click to enlarge."></a><br>
                        <a href="../../../images_www/screenshots/6.0/soa-bpel-wsdl-casa.png" title="NetBeans IDE provides a rich set of tools for editing and configuring composite applications, including the BPEL Designer, WSDL Editor, and CASA Editor. Click to enlarge."><img src="../../../images_www/screenshots/6.0/soa-bpel-wsdl-casa-thumb.png" width="150" height="102" alt="NetBeans IDE provides a rich set of tools for editing and configuring composite applications, including the BPEL Designer, WSDL Editor, and CASA Editor."></a>
                    <a href="../../../images_www/screenshots/6.0/soa-wsdleditor.png" title="The  Web Services Description Language (WSDL) designer allows users to drag and drop WSDL components in the WSDL designer. Click to enlarge."><img src="../../../images_www/screenshots/6.0/soa-wsdleditor-thumb.png" alt="The  Web Services Description Language (WSDL) designer allows users to drag and drop WSDL components in the WSDL designer. Click to enlarge."></a></td>
                </tr>
            </tbody>
        </table>
        
        <h3>UML</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>Template based code generation now available and customizable. </b>UML now provides template based code generation for Forward Engineering. The new code generation approach uses FreeMarker templates, which allow users to customize how code is generated by simply modifying the templates used. Users can enhance code generation by adding new code generation templates using the Domain Templates panel in the UML Options window. </li>
                            <li><b>Enhanced code generation feature. </b> The ability to merge newly generated source code into existing source code files is now available.</li>
                            <li><b>Improved collections management.</b>&nbsp; A user's collection types are preserved during Forward and Reverse Engineering and may be set and changed via properties dialog for code generation.</li>
                            <li><b>Alignment Tools now available.</b> The Diagram Editor now has alignment tools available.  Select the diagram elements to align, right-click the selection, and choose Align from the pop-up menu.</li>
                            <li><b>New Window Layout.</b> By default, the Documentation window is now docked to the Properties window area.&nbsp;The Design Center window is now docked to the Explorer area by default.</li>
                            <li><b>Save As action now on diagram node.</b> The &quot;Save As&quot; action has been added to diagram nodes. The action allows a diagram to be duplicated.</li>
                        </ul>
                    </td>
                    <td align="center" valign="top" nowrap>
                        <a href="../../../images_www/screenshots/6.0/uml-domain-template.png" title="Domain Templates panel, click to enlarge"><img src="../../../images_www/screenshots/6.0/uml-domain-template-thumb.png" alt="Domain Templates panel, click to enlarge" width="141" height="121" border="0"></a><br> 
                        <a href="../../../images_www/screenshots/6.0/uml-collection-parameter.png" title="Collection Preferences, click to enlarge"><img src="../../../images_www/screenshots/6.0/uml-collection-parameter-thumb.png" alt="Collection Preferences, click to enlarge" width="145" height="107" border="0"></a> <br>  
                        <a href="../../../images_www/screenshots/6.0/uml-alignment-menu.png" title="Alignment and Distribute menus, click to enlarge"><img src="../../../images_www/screenshots/6.0/uml-alignment-menu-thumb.png" alt="Alignment and Distribute menus, click to enlarge" width="238" border="0"></a>
                    </td> 
                </tr>    
            </tbody>
        </table>
        
        <h3>C/C++</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>Improved gdb debugging quality and performance</b></li>
                            
                            <li>New code assistance features
                                <ul>
                                    <li>Type hierarchy, which lets you inspect all subtypes or supertypes of a class.</li>
                                    <li>Include hierarchy, which lets you inspect all header and source files that are directly 
                                        or indirectly included in a source file, or all source and header files that 
                                    directly or indirectly include a header file.</li>
                                    <li>Code completion for <tt>#includes</tt>
                                    <li>Switch between source file and header file with the same name and corresponding extension</li>
                                </ul>
                            </li>
                            <li><b>Makefile-based projects dependency</b></li>
                            <li><b>Support for Mac OS X</b></li>
                        </ul>
                    </td>
                    <td align="center" valign="top" nowrap>
                        <a href="../../../images_www/screenshots/6.0/cnd-GoToElement.png" title="Go to Function or Variable Dialog, click to enlarge"><img
                                src="../../../images_www/screenshots/6.0/cnd-GoToElement-thumb.png" alt="Go to Function or Variable Dialog, click to enlarge"
                                width="140"
                            height="92" border="0"></a>&nbsp;<a href="../../../images_www/screenshots/6.0/cnd-GoToType.png" title="Go to Type Dialog, click to enlarge"><img
                                src="../../../images_www/screenshots/6.0/cnd-GoToType-thumb.png" alt="Go to Type Dialog, click to enlarge"
                                width="140"
                            height="88" border="0"></a><br>
                        <a href="../../../images_www/screenshots/6.0/cnd-IncludesHierarchy.png" title="Includes Hierarchy, click to enlarge"><img
                                src="../../../images_www/screenshots/6.0/cnd-IncludesHierarchy-thumb.png" alt="Includes Hierarchy, click to enlarge"
                                width="140"
                            height="85" border="0"></a>&nbsp;<a href="../../../images_www/screenshots/6.0/cnd-IncludesCompletion.png"
                                                            title="Includes Code Completion, click to enlarge"><img
                                src="../../../images_www/screenshots/6.0/cnd-IncludesCompletion-thumb.png" alt="Includes Code Completion, click to enlarge"
                                width="140"
                            height="55" border="0"></a><br>
                        <a href="../../../images_www/screenshots/6.0/cnd-MacOSX.png" title="Mac OS X Support, click to enlarge"><img
                                src="../../../images_www/screenshots/6.0/cnd-MacOSX-thumb.png" alt="Mac OS X Support, click to enlarge"
                                width="140"
                            height="100" border="0"></a>
                    </td>
                </tr>    
            </tbody>
        </table>
        
        <h3>NetBeans Platform API Improvements</h3>
        <table border="0" cellspacing="5">
            <tbody>
                <tr>
                    <td valign="top">
                        <ul>
                            <li><b>Visual Library API.</b> The Visual Library API, which is the next generation 
                                Graph Library, is useful for data visualization, such as graph-oriented modeling, in 
                                NetBeans modules. For further information, view <a href="http://www.javalobby.org/eps/netbeans_visual_library/">demo</a> or 
                            visit <a href="https://netbeans.org/projects/platform/">https://netbeans.org/projects/platform/</a>.</li>
                            <li><b>NetBeans Preferences API.</b> The NetBeans Preferences API provides a 
                                NetBeans-specific implementation of the JDK's Preferences API. For example, it 
                            allows you to store preferences in the NetBeans user directory.</li>
                            <li><b>Lexer.</b> Enhanced NetBeans API for creating tokens from a textual input. 
                                The tokens can then be used to, for example, provide syntax coloring. For 
                            further information, see <a href="https://netbeans.org/projects/editor/">https://netbeans.org/projects/editor/</a>.</li>
                            <li><b>Logger.</b> NetBeans API ErrorManager deprecated, in favor of standard 
                                JDK's Logger mechanism. For details, see <a href="https://netbeans.org/download/dev/javadoc/org-openide-util/org/openide/util/doc-files/logging.html">
                            Logging in NetBeans</a>.</li>
                            <li><b>Generified Interfaces.</b> The JDK 1.5 generics are used throughout the NetBeans APIs.</li>
                        </ul>
                        <p>For further details, see the list of 
                        <a href="https://netbeans.org/download/dev/javadoc/apichanges.html">NetBeans API Changes</a>.</p>
                    </td>
                    <td align="center" valign="top">
                    <img src="../../../images_www/screenshots/6.0/jarvis.png" border="1" alt="frameworks
                         panel in project properties"> 
                </tr>
            </tbody>
        </table>
        
        
        <h3>And More...</h3>
        
        <ul><li>Visit the <a href="http://wiki.netbeans.org/wiki/view/NewAndNoteWorthy">NetBeans IDE 6.0 New & Noteworthy page</a>.
        </li></ul>
    </body>
</html>

