<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>NetBeans IDE 5.5.1 Release Information</title>
        <meta name="DESCRIPTION" content="Information about the NetBeans IDE 5.5.1">
        <meta name="NAV_LINK" content="5.5.1">
        <meta name="NAV_PRIORITY" content="1">
        <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 5.5.1 Release Information</h1>
        
        <h2><a name="features">Documentation</a></h2>

        <p>Documentation is provided for NetBeans in the
        form of web-based guides and the IDE's help system. You can use the
        following documents to get started:</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">NetBeans IDE 5.5 Documentation</a></li>
             <li><a href="#addon">Pack Information</a></li>
          
        </ul>

        <h2><a name="features">5.5.1 Feature Highlights</a></h2>
        
          <a href="http://services.netbeans.org/downloads/index.php?rs=22"><img src="../../../../images_www/v5/download-ide-button.gif" border="0" width="226" height="25" style="float:left; margin:10px;"/></a>
           <br><br><br>
            <br>
           <p>The main feature of NetBeans 5.5.1 is support for the Java EE 5 Application Server 9.1.
           Get the latest build of 
           <a href="http://glassfish.dev.java.net/">Appserver 9.1 (GlassFish v2)</a> here.</p>
           
           <p>NetBeans 5.5.1 also adds Windows Vista as a supported platform.</p>
           
           <p>The Mobility Pack includes the J2ME Wireless Toolkit, version 2.5.1.</p>

           <p>NetBeans 5.5.1 builds on the functionality of NetBeans 5.5 and also provides several bug fixes.
           For a list a complete list of NetBeans 5.5 features, see the
           <a href="../../../../community/releases/55/index.html">5.5 Release Page</a>.</p>
          
           
<h2><a name="addon">NetBeans Add-on Packs</a></h2>

<ul>
    <p><a href="../../../../features/javame/index.html"><img src="../../../../images_www/v5/product-icons/mobility_35.gif" style="float:left; border:4px; margin-right:4px;"></a>
        Use the <a href="../../../../features/javame/index.html">Mobility Pack</a>
        to write, test, and debug applications for Java&#153; Micro Edition platform
    (Java&#153; ME platform) technology-enabled mobile devices.</p>
    <br clear=all>
    <p><a href="../../../../features/web/web-app.html"><img src="../../../../images_www/v5/product-icons/visualweb_35.gif" style="float:left; border:4px; margin-right:4px;"></a>
        Use the  <a href="../../../../features/web/web-app.html">Visual Web Pack</a> to rapidly and visually build standards-based 
    web applications, including support for AJAX and JSF components. </p><BR>
    <br clear=all>
    <p><img src="../../../../images_www/v5/product-icons/enteprise_35.gif" style="float:left; border:4px; margin-right:4px;">
        NetBeans Enterprise Pack
        provides support for creating Service Oriented Architecture (SOA) applications. <B>Note:</b> <i>If you want to use SOA 
            and BPEL functionality in Enterprise Pack, please use NetBeans IDE 5.5 with NetBeans Enterprise 
    Pack 5.5.  We do not expect to publish any further updates to NetBeans Enterprise Pack 5.x. All our development efforts are now focused on NetBeans 6.0 with SOA.</i> </p>
    <br clear=all>
    <p> <a href="../../../../features/java/profiler.html"><img src="../../../../images_www/v5/product-icons/profiler_35.gif" style="float:left; border:4px; margin-right:4px;"></a>
        The <a href="../../../../features/java/profiler.html">NetBeans Profiler</a>
    helps you optimize your application's memory and CPU usage.</p><BR>
    <br clear=all>
    <p> <a href="../../../../features/cpp/index.html"><img src="../../../../images_www/v5/product-icons/cplus_35.gif" style="float:left; border:4px; margin-right:4px;"></a>
    The <a href="../../../../features/cpp/index.html">C/C++ Pack</a> supports C/C++ projects. The language-aware editor indents, completes, and syntax-highlights your C/C++ code.</p> 
</ul>       
<BR>
         
      <h2><a name="features">Other Languages</a></h2>

      <p>NetBeans 5.5.1 has been localized into simplified Chinese, Japanese, and Brazilian Portuguese -
        if you are using one of those locales you will automatically be offered the localized version,
        otherwise choose <a href="http://services.netbeans.org/downloads/all.php?b_id=3095">Other Systems & Languages</a> to find them.</p>

    </body>
</html>

