<!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.4 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.4 Overview</h1>

        <p>In this video you will see an overview of the features provided by NetBeans IDE 7.4. 
            It shows the project templates, samples, file templates, and editor features that enable you to 
            get the most out of JDK 8 previews, HTML integration with Java EE, and deployment to mobile devices.</p>
        <p> <a href="https://netbeans.org/community/releases/74/">NetBeans IDE 7.4</a> extends 
            the advanced HTML5 development support introduced in NetBeans IDE 7.3 
            to Java EE and PHP application development, while offering new support 
            for hybrid HTML5 application development on the Android and iOS platforms. 
            In addition, this release provides support for working with preview versions 
            of JDK 8, and includes continued enhancements to JavaFX, PHP, C/C++, Maven, the Profiler, and more.
        </p>
        <p><a href="http://bits.netbeans.org/media/nb74_overview_video.mp4">Download this video</a> [Size: 53.8 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/nb74_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>
