<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
    <head>  
        <title>NetBeans IDE - Java EE and Java Web Application Development</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>Java EE and Web Application Development</h1>
            <p> <a href="../../images_www/v7/1/screenshots/web-app-cut.png"><img
                        alt="Java Enterprise application development in the NetBeans IDE"
                        src="../../images_www/v7/1/screenshots/web-app-cut.png"
                        style="border: 0px solid ; width: 649px; height: 196px;"><br>
                    <span class="font-11">Click image for fullscreen preview</span></a>
            </p>            
            <p class="intro">
                Write standards-based web and enterprise applications that
                can be accessed from a wide range of clients such as web browsers,
                mobile devices and more. Get unmatched out-of-the-box experience: With
                a few clicks, create Java EE 6 apps with support for all relevant Java
                EE 6 technologies. Take advantage of full syntax highlighting, 
                code completion, pop-up documentation, and error checking for JSP, JSF, XML, 
                JavaScript, CSS and even PHP!
            </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/ee-dev.png" class="cbox" title="Create Java EE applications"><img src="../../images_www/v7/3/features/ee-dev-cut.png" width="320" alt=""  /></a></span>
            <h2>Enterprise Application Development</h2>
            <p>
                The NetBeans IDE provides full support for Java EE 6. Develop
                components including web pages, servlets, web services, Enterprise Java
                Beans, JSF, JPA, and support for Contexts and Dependency Injection (CDI).<br/><br/>
                <a href="java-ee.html" class="arr-link">Java EE support in NetBeans</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/jsf-dev.png" class="cbox" title="Web Frameworks Support"><img src="../../images_www/v7/3/features/jsf-dev-cut.png" width="320" alt="" /></a></span>
            <h2>Web Application Development</h2>
            <p>
                NetBeans IDE make it easy to create Java EE based Web application projects 
                with either JSF 2.1 (Facelets), JSP's or Servlets. In addition,
                you can can create and work with Web applications using other 
                frameworks like the Spring, Struts, and Hibernate
                frameworks. The editor supports code completion, navigation and
                refactoring for mapping files.<br/><br/>
                <a href="web-app.html" class="arr-link">Web application development support in NetBeans</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/rest-services-support.png" class="cbox" title="Web Services Support"><img src="../../images_www/v7/3/features/rest-services-support-cut.png" width="320" alt=""  /></a></span>
            <h2>Web Services Development</h2>
            <p>
                NetBeans IDE supports Web services standards from both Java EE 6 and Java EE 5. You can
                create and consume Web services using features such as wizard based code generation and 
                in editor code insertions. The code completion functionality includes annotations that 
                you can use in your web services.<br/><br/>
                <a href="web-services" class="arr-link">Web Services support in NetBeans</a>
            </p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <!-- right text section start -->
            <a name="o4"></a>
            <span class="overview-left" id="im4"><a href="../../images_www/v7/3/features/http-monitor.png" class="cbox" title="Monitor Web Applications"><img src="../../images_www/v7/3/features/http-monitor-cut.png" width="320" alt="" /></a></span>
            <h2>Deploy, Debug, Monitor and Profile</h2>
            <p>
                You can deploy your applications to GlassFish, WebLogic, Tomcat or
                JBoss server. The Deploy on Save feature lets you see changes to your
                application immediately after you save files in the editor. You can
                also place breakpoints in your Java or JSP files and debug your app, or
                profile it using the NetBeans profiler. There is also the HTTP Server-side monitor
                that enables you to diagnose problems with data flow from JSP and servlet 
                execution on the web server.
            </p>
            <div class="line">&nbsp;</div>
            <!-- right text section end -->

            <h2>See Also</h2>
            <ul class="bigger">
                <li><a href="/community/releases/73/index.html">NetBeans IDE 7.3  Release Page</a> for a list of specific features in the latest stable release.</li>
                <li>Get more details about features of the latest stable release on the <a href="http://wiki.netbeans.org/NewAndNoteworthyNB73">NetBeans IDE 7.3 New and Noteworthy page</a>.</li>
            </ul>

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