<!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 8.0 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 8.0 Overview</h1>

        <p>In this video you will see an overview of the features provided by NetBeans IDE 8.0.</p>
        <p><a href="https://netbeans.org/community/releases/80/">NetBeans IDE 8.0</a> delivers full support for the latest Java 8 technologies--Java SE 8, Java SE Embedded 8, and Java ME Embedded 8. The IDE also provides a range of new enhancements for Maven and Java EE with PrimeFaces; new tools for HTML5, in particular for AngularJS; and improvements to PHP and C/C++ support.
        </p>
        <p><a href="http://bits.netbeans.org/media/nb80_overview_video.mp4">Download this video</a> [Size: 28.7 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/nb80_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="../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.4%20overview%20screencast">Send
                Us
                Your
                Feedback</a> </div>
        <br class="cear" style="clear:both"/>
    </body>
</html>
