<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <!--
        
        Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
        
        -->
        <title>Video: NetBeans IDE 7.3 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.3 Overview</h1>

        <p> Find out what is new and cool in the latest NetBeans IDE 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, HTML5, JavaScript, Groovy and Grails, and C/C++. </p>
        <!-- New description and link to screencast needed here -->
        <p> <a href="https://netbeans.org/community/releases/73/">NetBeans IDE 7.3</a> empowers developers to create and debug rich Web and mobile applications using the latest HTML5, JavaScript, and CSS standards. Developers can expect state of the art rich web development experience with a page inspector and CSS style editor, completely revamped JavaScript editor, new JavaScript debugger, and more. Additional highlights available in 7.3 include continued enhancements to the IDE's support for Java, Groovy, PHP, JavaFX, and C/C++. 
		</p>
        <p><a href="http://bits.netbeans.org/media/netbeans73_overview_video.mp4">Download this video</a> [Size: 52MB]
        </p>

        <br style="clear: both;">

        <script src="/images_www/js/mediaplayer-5.9/jwplayer.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/netbeans73_overview_video.mp4';
                jwplayer('flashContent').setup({
	                'id': 'flashContentId',
	                'width': '960',
	                'height': '540',
	                'autostart': 'true',
	                'file': targetFile,
	                'controlbar':{position:'bottom'},
	                'modes': [
	                      {type: 'html5'},
	                      {type: 'flash', src: '/images_www/js/mediaplayer-5.9/player.swf'},
	                      {type: 'download'}
	                         ]
	           });
            });
        </script>
        <br/>
       
        <h2>Related Links</h2>
        <ul>
            <li><a href="../../../kb/index.html">NetBeans
                    IDE Tutorials</a> </li>
                    <li><a href="../../docs/intro-screencasts.html">NetBeans
                    IDE Screencasts</a> </li>
            <li><a href="../../../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.3%20overview%20screencast">Send
                Us
                Your
                Feedback</a> </div>
        <br class="cear" style="clear:both"/>
    </body>
</html>
