<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
    <head>  
        <title>NetBeans IDE - Java on the Client</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 on the Client</h1>
            <p class="xintro">
                <a href="../../images_www/v7/3/features/client-main-full.png"><img
                        src="../../images_www/v7/3/features/client-main-cut.png"
                        alt="Java Client features in NetBeans IDE"  
                        ><br>
                    <span class="font-11">Click image for fullscreen preview</span></a> 
            </p>
            <p class="intro">
                NetBeans IDE helps you quickly and efficiently develop Java clients,
                for Java SE, using JavaFX and Swing, as well as Java ME and embedded
                applications.
            </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/client-javafx-full.png" class="cbox" title="JavaFX"><img src="../../images_www/v7/3/features/client-javafx-cut.png" alt=""  /></a></span>
            <h2>JavaFX</h2>
            <p> JavaFX is the next step in the evolution of Java as a rich client platform. 
                It is designed to provide a lightweight, hardware-accelerated Java UI platform
                for enterprise business applications. With JavaFX, developers can create
                JavaFX applications completely in the Java programming language using 
                standard Java development tools. You can access native system capabilities,
                or seamlessly connect to server-based middleware applications. </p>
            <p>The IDE
                provides JavaFX projects and integration with JavaFX Scene Builder,
                together with editors, debuggers, and sample projects.</p>
            <p><a href="javafx.html" class="arr-link">
                    JavaFX in NetBeans IDE</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/client-swing-full.png" class="cbox" title="Swing"><img src="../../images_www/v7/3/features/client-swing-cut.png" alt="" /></a></span>
            <h2>Swing</h2>
            <p>Design Swing GUIs by dragging and positioning GUI components 
                from a palette onto a canvas. The GUI builder automatically takes
                care of the correct spacing and alignment. Click into JLabels, 
                JButtons, ButtonGroups, JTrees, JTextFields, ComboBoxes and edit 
                their properties directly in place.</p>
            <p>You can use the GUI builder 
                to prototype GUIs right in front of customers.</p>
            <p><a href="swing.html" class="arr-link">
                    Swing in NetBeans IDE</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/client-jme-full.png" class="cbox" title="JavaME"><img src="../../images_www/v7/3/features/client-jme-cut.png" alt=""  /></a></span>
            <h2>Java ME and Embedded</h2>
            <p>Use the IDE to create, test, debug, and deploy applications that will
                run on mobile phones, PDAs, set-top boxes, and embedded systems.</p>
            <p><a href="java-me.html" class="arr-link">
                    Java ME and Embedded in NetBeans IDE</a></p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <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>
