<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <!--
        
        Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
        
        -->
        <title>Video: NetBeans IDE 7.1 Overview</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
    </head>
    <body>
        <h1>NetBeans IDE 7.1 Overview</h1>

        <p> Find out what is new and cool in the latest NetBeans 7.1
            release.
            The NetBeans IDE is an integrated development environment for software
            developers. It provides the tools you need to create professional
            desktop, enterprise, web, and mobile applications with the Java
            language, as well as PHP, JavaScript, Groovy and Grails, and C/C++. </p>
        <p> NetBeans IDE introduces support for JavaFX 2.0 by enabling the full compile/debug/profile 
            development cycle for JavaFX 2.0 applications. The release also provides significant Swing GUI Builder 
            enhancements, CSS3 support, and tools for visual debugging of Swing and JavaFX user interfaces. 
            Additional highlights include Git support integrated into the IDE, new PHP debugging features, various JavaEE and Maven improvements, and more.
        </p>
        <p><a href="http://bits.netbeans.org/media/nb71_overview_video_smaller.mp4">Download this video.</a> [Warning. 63   mb]
        </p>

        <br style="clear: both;">

        <script src="/images_www/js/mediaplayer-5.2/swfobject.js" type="text/javascript"></script>
        <div id="player" >
            <center>
                <div id="flashContent"></div>
            </center>
        </div>
        <script type="text/javascript">
            $(function(){
                var targetFile='http://bits.netbeans.org/media/nb71_overview_video_smaller.mp4';
                var s1 = new SWFObject('/images_www/js/mediaplayer-5.2/player.swf','player','640','360','9');
                s1.addParam('allowfullscreen','true');
                s1.addParam('allowscriptaccess','always');
                s1.addParam('flashvars','file='+targetFile+'&autostart=true');
                s1.write('flashContent');
            });
        </script>


        <br/>
        <h2>Related Links</h2>
        <ul>
            <li><a href="https://netbeans.org/kb/index.html">NetBeans
                    IDE Tutorials</a> </li>
            <li><a href="https://netbeans.org/community/index.html">NetBeans
                    Community</a> </li>
        </ul>
        <div class="feedback-box" style="float: left;"> <a
                href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Netbeans%207.0%20overview%20screencast">Send
                Us
                Your
                Feedback</a> </div>
        <br class="cear" style="clear:both"/>
    </body>
</html>
