<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
    <head>  
        <title>NetBeans IDE - Base IDE Features</title>
        <meta http-equiv="content-language" content="en">
        <meta name="description" content="DESCRIPTION HERE">
        <link rel="stylesheet" type="text/css" href="../../features.css">
        <link rel="stylesheet" type="text/css" href="/images_www/js/colorbox/colorbox.css">
    </head>
    <body>
        <script type="text/javascript" src="/images_www/js/colorbox/jquery.colorbox-min.js"></script>

        <script type="text/javascript">
            $(document).ready(function() {
                $('a.cbox').colorbox({rel: 'cbox', opacity: 0.7});
            });
        </script>
        <div style="margin:10px 20px 0px 0px;">
            <h1>Base IDE</h1>
            <p class="xintro">
                <a href="../../images_www/v7/3/features/ide-basic-full.png"><img
                        src="../../images_www/v7/3/features/ide-basic-cut.png"
                        alt="Java editor features in NetBeans IDE"  
                        ><br>
                    <span class="font-11">Click image for fullscreen preview</span></a> 
            </p>
            <p class="intro">
                NetBeans IDE is a modular developer tool for a wide range of
                application development technologies. The base IDE includes an advanced multi-language
                editor, Debugger and Profiler, as well as tools for versioning control
                and developer collaboration. 
            </p>
            <div class="line">&nbsp;</div>

            <!-- left text section start -->
            <a name="o1"></a>
            <span id="im1" class="overview-right"><a href="../../images_www/v7/3/features/ide-basic-templates-full.png" class="cbox" title="Templates and Sample Applications"><img src="../../images_www/v7/3/features/ide-basic-templates-full-cut.png" alt=""  /></a></span>
            <h2>Templates and Sample Applications</h2>
            <p> NetBeans IDE gives you skeleton applications in the form of project templates
                for all the technologies it supports. In addition, it
                provides a set of sample applications, some of which
                can be recreated step by step by following a related tutorial 
                available on NetBeans.org.</p>
            <p>The IDE
                provides project templates and sample projects that help you create Java SE applications,
                Java EE applications, Java ME applications,
                HTML5 applications,
                NetBeans Platform applications, PHP application, and C/C++ applications.</p>
            <p><a href="../../kb/index.html" class="arr-link">
                    NetBeans Technology Learning Trails</a></p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <!-- right text section start -->
            <a name="o2"></a>
            <span class="overview-left" id="im2"><a href="../../images_www/v7/3/features/ide-basic-services-full.png" class="cbox" title="Databases and Services"><img src="../../images_www/v7/3/features/ide-basic-services-cut.png" alt="" /></a></span>
            <h2>Databases and Services</h2>
            <p> The Services window gives you access to many ancillary resources,
                such as databases, servers, web services, and issue trackers.</p>
            <p> You can start and stop databases and servers directly in the IDE. When
                working with databases, you can add, remove, and modify your data in the IDE. 
                When you have deployed an application to a server, you can manage your
                deployed resources because they are displayed in the Servers node. </p>
            <p>You can connect to
                a bug database, such as Issuezilla or Bugzilla, and list
                issue reports for your project right in the IDE.</p>
            <p><a href="../../kb/trails/tools.html" class="arr-link">
                    Integration with External Tools and Services</a></p>
            <div class="line">&nbsp;</div>
            <!-- right text section end -->

            <!-- left text section start -->
            <a name="o3"></a>
            <span id="im3" class="overview-right"><a href="../../images_www/v7/3/features/ide-basic-plugins.png" class="cbox" title="Plugin Manager"><img src="../../images_www/v7/3/features/ide-basic-plugins-cut.png" alt=""  /></a></span>
            <h2>Plugin Manager</h2>
            <p>
                While using the IDE, you can always go to the Plugin Manager from the Tools menu to
                add, remove, or update the installed set of features. </p>
            <p>A wide variety of plugins are available for all types of development,
                from Java SE, Java EE, Java ME, HTML5,
                Groovy, and PHP to C/C++ development.</p>
            <p>Community contributed plugins are also available in the NetBeans Plugin Portal.</p>
            <p><a href="http://plugins.netbeans.org/" class="arr-link">
                    NetBeans Plugin Portal</a>
            </p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <table>
                <tr>
                    <td class="valign-top"><h2>Quick Search</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>Action Items</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>Customizable Workspace</h2></td>
                </tr>
                <tr>
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 

                        <p> 
                            <span class="overview-centre" id="im4"><img src="../../images_www/v7/3/features/ide-basic-quick-search.png" alt="netbeans ide-wide quick search"></span><br/>
                            The Quick Search is a centralized location where
                            you can do searches
                            throughout all Java types in the JDK,
                            actions in the IDE, help sets, options settings, and projects.<br/><br/>
                        </p>
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%;padding-right:10px;">

                        <p> 
                            <span class="overview-centre" id="im5"><img src="../../images_www/v7/3/features/ide-basic-actionitems-cut.png" width="200" alt="" /></span><br/>
                            The Action Items window automatically scans your code and
                            lists commented lines containing words such as "TODO" or "FIXME", as well as
                            lines with compilation errors, quick fixes, and style warnings.<br/><br/>
                        </p>
                    </td>
                    <!--<td>&nbsp;&nbsp;&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%">

                        <p>
                            <span class="overview-centre" id="im6">
                                <img src="../../images_www/v7/3/features/ide-basic-customize.png" width="200" alt="" /></span><br/>
                            The IDE's workspace can be modified. You can customize the
                            buttons in the toolbar and drag and reposition tabs in the IDE application
                            frame to suit your individual workflow. 
                            You can undock tabs and drag them outside the
                            application frame, even onto a different monitor. 
                            <br/><br/>
                        </p>
                    </td>
                </tr>
            </table>
            
            <h2>See Also</h2>
            <ul class="bigger">
                <li><a href="../../community/releases/81/index.html">NetBeans IDE 8.1 Release Page</a> for a list of highlighted features in the latest stable release.</li>                
                <li><a href="../../kb/trails/java-se.html">General Java Development Learning Trail</a> for tutorials that will help you get started.</li> 
            </ul>

        </div>
    </body>
</html>
