<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <title>Video of Smart Migration to JDK 8 in NetBeans IDE</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
        <meta name="description" content="A screencast that introduces JDK 8 in NetBeans IDE.">
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
    </head>
    <body>

        <!--
        Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
        -->

        <h1>Video of Smart Migration to JDK 8 in NetBeans IDE</h1>

        <table>
            <tr>
                <td class="valign-top">

                    <p>This screencast is a guide to the key features of language enhancements in Java 8, 
                        especially lambdas, functional operations, and method references,
                        and how you can use the IDE to help you migrate your code to Java 8.
                    </p>
                    <p>Author: Geertjan Wielenga<br>Time: 14:00</p>
                    <p><a href="http://bits.netbeans.org/media/smart-migration-java8.mp4">Download / Watch full size</a> (60 MB)</p>

                </td>

                <td width="486" class="valign-top align-center">

                    <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/smart-migration-java8.mp4';
                            jwplayer('flashContent').setup({
                                'id': 'flashContentId',
                                'width': '530',
                                'height': '340',
                                'autostart': 'true',
                                'file': targetFile,
                                'controlbar': {position: 'bottom'},
                                'modes': [
                                    {type: 'html5'},
                                    {type: 'flash', src: '/images_www/js/mediaplayer-5.9/player.swf'},
                                    {type: 'download'}
                                ]
                            });
                        });
                    </script>

                </td>

            </tr>

            <tr>
                <td colspan="2">
                    <br style="clear:both;">
                    <div class="feedback-box">
                        <a href="/about/contact_form.html?to=3&amp;subject=Feedback: Smart Migration to JDK 8 in NetBeans IDE">Send Feedback on This Tutorial</a>
                    </div>
                </td>
            </tr>

        </table>


        <h2>Related links</h2>

        <ul>
            <li><a href="http://openjdk.java.net/projects/jdk8/">JDK 8 Project Page</a></li>
            <li><a href="https://netbeans.org/kb/docs/java/javase-jdk8.html">Overview of JDK 8 Support in NetBeans IDE</a></li>
            <li><a href="https://netbeans.org/features/java/index.html">NetBeans Feature Pages: Java</a></li>
            <li><a href="https://netbeans.org/kb/trails/java-se.html">General Java Development NetBeans Learning Trail</a></li>
            <li><a href="http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">The Java Tutorials: Lambda Expressions</a></li>
            <li><a href="http://apex.oracle.com/pls/apex/f?p=44785:24:114639602012411::::P24_CONTENT_ID,P24_PREV_PAGE:7919,24">Oracle Learning Library: Java SE 8 Lambda Series</a></li>
        </ul>

    </body>

</html>
