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

<html>
    <head>
        <title>Video of Getting Started with JavaScript Client Development in Java EE Applications</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
        <meta name="description" content="A screencast that introduces the basics of Java EE 6 support in NetBeans IDE">
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
    </head>
    <body>

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

        <h1>Video of Getting Started with JavaScript Client Development in Java EE Applications</h1>

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

                    <p>This screencast demonstrates the creation of Backbone.js web front-ends in Java EE applications.</p>

                    <p><a href="http://bits.netbeans.org/media/html5-gettingstarted-javaee-screencast.mp4">Download / Watch full size</a> (41 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/html5-gettingstarted-javaee-screencast.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">
                    <p>For more about working with HTML5 applications in NetBeans IDE, watch the following 
                        screencasts.</p>
                    <ul>
                        <li><a href="../web/html5-gettingstarted-screencast.html"> HTML5 - Part 1: Getting Started with HTML5 Applications</a></li>
                        <li><a href="../web/html5-css-screencast.html"> HTML5 - Part 2: Working with CSS Style Sheets in HTML5 Applications</a></li>
                        <li><a href="../web/html5-javascript-screencast.html"> HTML5 - Part 3: Testing and Debugging JavaScript in HTML5 Applications</a></li>
                    </ul>
                    <br style="clear:both;">
                    <div class="feedback-box">
                        <a href="/about/contact_form.html?to=3&amp;subject=Feedback: Getting Started with JavaScript Client Development in Java EE Applications">Send Feedback on This Tutorial</a>
                    </div>
                    <br style="clear:both;">
                </td>
            </tr>

        </table>

        <h2>Related links</h2>

        <ul>
            <li><a href="../webclient/html5-gettingstarted.html">Getting Started with HTML5 Applications </a></li>
            <li><a href="../webclient/html5-editing-css.html">Working with CSS Style Sheets in HTML5 Applications</a></li>
            <li><a href="../webclient/html5-js-support.html">Debugging and Testing JavaScript in HTML5 Applications</a></li>
            <li><a href="http://wiki.netbeans.org/HTML5">HTML5 Support in NetBeans IDE wiki page</a></li>
            <li><a href="../../trails/php.html">PHP and HTML5 Learning Trail</a></li>
        </ul>

    </body>

</html>
