<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
    <head>  
        <title>NetBeans IDE - Java EE 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 Enterprise Edition Support</h1>
            <p><a href="../../images_www/v7/1/screenshots/web-app.png"><img
                        alt="Java Enterprise application development in the NetBeans IDE"
                        src="../../images_www/v7/1/screenshots/web-app-cut.png" border="0"><br/>
                    <span class="font-11">Click image for fullscreen preview</span></a><br/></p>
            <p class="intro">
                NetBeans IDE delivers excellent support for developing Web and server side applications
                that utilize the Java EE platform. The IDE support has been developed in close 
                cooperation with the Java EE and GlassFish teams to provide the tightest integration and 
                easiest possible use of the Java EE specification. Concequently, if you are new to the
                Java EE specification and framework, using NetBeans IDE is the best way to quickly learn and 
                become productive in Java EE programming.
            </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/java-ee-7-full.png" class="cbox" title="Java EE 7 Support"><img src="../../images_www/v7/3/features/java-ee-7-full-cut.png" width="320" height="253" alt=""  /></a></span>
            <h2>Support for Java Enterprise Edition 7</h2>
            <p>
                NetBeans IDE provides complete support for
                the latest Java EE 7 standards, including support for JSF 2.2 (Facelets), 
                Java Persistence 2.1 and Contexts and Dependency 
                Injection 1.1, <a href="web-services.html">JAX-RS and JAX-WS based Web services</a>, 
                and the older Java EE 6 and Java EE 5 platforms.<br/><br/>
                The support provided in the IDE ranges from 
                wizards that can be used to quickly create the application, 
                editor support in generating Java EE artefacts and consuming them, 
                configuring the applications, and 
                build, deployment, execution and testing support.
                With all of these capabilities, your efforts will be 
                focused on implementing the business logic aspects of your application.<br/><br/>

                <a href="../../kb/trails/java-ee.html" class="arr-link">
                    Java EE and Java Web Learning Trail</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/ejb-dev.png" class="cbox" title="Create EJB Components"><img src="../../images_www/v7/3/features/ejb-dev-cut.png" width="320" alt="" /></a></span>
            <h2>Simplified EJB Development</h2>
            <p>
                The IDE supports the latest EJB 3.2 specification, including in web application projects. 
                The EJB project file wizard provides options for creating Session beans
                including Singleton session beans,
                Message Driven beans for processing asynchronous messages, 
                as well as Timer session beans for working with timed notifications.
                You can use a wizard to easily create a Session Bean for an entity class including
                the appropriate annotations and commonly used default methods.
                Beans can be exposed with a local interface or a no-interface view. There is support
                also for calling EJB beans using code-insertion wizards in the editor<br/><br/>
                <a href="../../kb/docs/javaee/javaee-entapp-ejb.html" class="arr-link">Creating an Enterprise Application with EJB 3.1</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/jsf-dev.png" class="cbox" title="Work with JSF"><img src="../../images_www/v7/3/features/jsf-dev-cut.png" width="320" alt=""  /></a></span>
            <h2>JSF Development</h2>
            <p>
                NetBeans IDE supports the latest JavaServer Faces (JSF) 2.2
                standard, as well as the older 2.1 and earlier standards.
                NetBeans IDE supports Facelets, the official view technology for JSF 2.2. You can 
                create a new web application project based on the Facelets framework and work with 
                standard JSF reference implementation components.<br/><br/>
                The IDE also supports various JSF component libraries (<b>PrimeFaces, RichFaces, ICEfaces</b>) 
                that can simplify the development of Facelets pages. Code wizards and templates
                are included for generating PrimeFaces applications, with database
                interaction code included.<br/><br/>
                <a href="../../kb/docs/web/jsf20-intro.html" class="arr-link">Introduction to JavaServer Faces</a><br><br/>

            </p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <!-- right text section start -->
            <a name="o2"></a>
            <span class="overview-left" id="im4"><a href="../../images_www/v7/3/features/jpa-dev.png" class="cbox" title="Work with Various JPA Providers"><img src="../../images_www/v7/3/features/jpa-dev-cut.png" width="320" alt="" /></a></span>
            <h2>JPA Support</h2>
            <p>
                The IDE provides tools to work with Java Persistence API 2.1. Wizards enable 
                you to generate entity classes from a database, and a JavaServer Faces CRUD 
                (Create Retrieve Update Delete) application from entity classes. The IDE supports 
                all types of entity relationships (one-to-one, one-to-many, many-to-one, and 
                many-to-many) and all types of primary keys (single-column, composite, and 
                generated). The IDE also provides templates and graphic editors for creating and 
                maintaining persistence units.
            </p>
            <p>The IDE now has a stand alone JPQL editor where 
                you can run your JPQL query directly from the IDE.
            </p>
            <div class="line">&nbsp;</div>
            <!-- right text section end -->

            <table>
                <tr>
                    <td class="valign-top"><h2>JSF Templates Support</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>JSP Development</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>Web Profile Support</h2></td>
                    <!--<td></td>-->
                </tr>
                <tr>
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 
                        <p> 
                            <span class="overview-centre" id="im5"><img src="../../images_www/v7/3/features/template-wizard-cut.png" width="200" alt="" /></span><br/>
                            The IDE provides a Facelets Template wizard for creating
                            Facelets templates, and a Facelets Template Client wizard for creating
                            files that rely on a template.
                        </p>
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%;padding-right:10px;">

                        <p> 
                            <span class="overview-centre" id="im6"><img src="../../images_www/v7/3/features/jsp-dev-cut.png" width="200" alt="" /></span><br/>
                            In JavaServer Pages (JSP) files, the editor assists you with code completion, 
                            hypertext navigation, error checking, and debugging. You can drag and drop 
                            code snippets from a pallete. There is support for creating and using custom tag libraries.
                            <br/><br/>
                            <a href="../../kb/docs/web/quickstart-webapps.html" class="arr-link">Introduction to developing Web applications with JSP</a>
                        </p>
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 
                        <p>                             
                            <span class="overview-centre" id="im7"><img src="../../images_www/v7/3/features/ee-7-web-profile-cut.png" width="200" alt="" /></span><br/>
                            The <a href="http://www.oracle.com/technetwork/java/javaee/tech/index.html"> 
                                Java EE Web Profile</a> defines a subset of specifications that can be used 
                            to build Web applications. NetBeans provides out of the box support for creating
                            applications with the Web profile.
                        </p>
                    </td>
                </tr>
                <tr>
                    <td class="valign-top"><h2>Wizard Based Client Generation</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>CDI Support</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>JPQL Editor</h2></td>
                    <!--<td></td>-->
                </tr>
                <tr>
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 
                        <p> 
                            <span class="overview-centre" id="im8"><img src="../../images_www/v7/3/features/jsf-crud-gen-cut.png" width="200" alt="" /></span><br/>
                            Use the JSF CRUD application generator (Create/Read/Update/Delete) to create a complete 
                            functional JSF page for manipulating data from a database. The New File wizard can 
                            generate customizable CRUD JSF pages from existing entities.
                        </p>
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%;padding-right:10px;">

                        <p> 
                            <span class="overview-centre" id="im9"><img src="../../images_www/v7/3/features/cdi-support-cut.png" width="200" alt="" /></span><br/>
                            Use the New Project wizard or new File wizard to create files
                            that are ready for Contexts and Dependency Injection (CDI).
                            Editor support such as right-clicking any injection point to 
                            access Go To Injectables and Inspect Injectables menu actions
                            is available.<br/><br/>
                            <a href="../../kb/docs/javaee/cdi-intro.html" class="arr-link">Getting started with CDI and JSF 2.0</a>
                        </p>
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 
                        <p>   
                            <span class="overview-centre" id="im10"><img src="../../images_www/v7/3/features/jpa-jpql-cut.png" width="200" alt="" /></span><br/>
                            With the stand alone JPQL editor, you can run your query from the ide directly, 
                            instead of running your JPA application to test your queries. JPQL Editor supports code completion 
                            for JPQL keywords. For managed entities, it can provide you SQL representation 
                            of your JPQL query if eclipselink or hibernate provider is used. It can also hint at what is 
                            wrong with your JPQL query.
                        </p>
                    </td>
                </tr>
                <tr>
                    <td class="valign-top"><h2>WebSocket Support</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2></h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2></h2></td>
                    <!--<td></td>-->
                </tr>
                <tr>
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 
                        <p> 
                            <span class="overview-centre" id="im11"><img src="../../images_www/v7/3/features/websocket-endpoint-cut.png" width="200" alt="" /></span><br/>
                            The IDE provides support for creating web applications 
                            that uses the Java API for WebSocket (JSR 356) to enable 
                            bi-directional communication between browser clients 
                            and the application server.<br/><br/>
                            <a href="../../kb/docs/javaee/maven-websocketapi.html" class="arr-link">Using the WebSocket API</a>
                        </p>
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%;padding-right:10px;">
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 
                    </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-ee.html">Java EE and Java Web Learning Trail</a> for tutorials that will help you get started.</li> 
            </ul>

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