<!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.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.3.1 Overview</h1>

        <p>In this video you will see an overview of the Java EE 7 features provided by NetBeans IDE 7.3.1. 
            It shows the project templates, samples, file templates, and editor features that enable you to 
            get the most out of Java EE 7.</p>
        <!-- New description and link to screencast needed here -->
        <p> <a href="https://netbeans.org/community/releases/73/">NetBeans IDE 7.3.1</a> 
            provides first-class comprehensive support for the newest Java technologies and latest Java enhancements. 
            It is the first IDE providing support for JDK 7, Java EE 7, and JavaFX 2. 
		</p>
        <p><a href="http://bits.netbeans.org/media/nb731-javaee7-launch-final-with-sound.mp4">Download this video</a> [Size: 6 MB]
        </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/nb731-javaee7-launch-final-with-sound.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="../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.1%20overview%20screencast">Send
                Us
                Your
                Feedback</a> </div>
        <br class="cear" style="clear:both"/>
    </body>
</html>
