<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>NetBeans Media Library</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="/images_www/js/data_tables/css/demo_table_jui.css" media="screen">
        <link rel="stylesheet" type="text/css" href="/images_www/js/css/cupertino/jquery-ui-1.7.2.custom.css" media="screen">
        <style type="text/css">
            .play-col {width:30px;}
            .title-col {width:40%}
            .playB {
                display:inline-block;
                width:16px;
                height:16px;
                background-image: url('/images_www/control_play_blue.png');
            }
            #mediaTable td {padding:5px;}
        </style>
    </head>
    <body>
        <h1>NetBeans Media Library</h1>

        <a href="../demos.xml" title="RSS feed of screencasts"><img 
                src="../images_www/feed-icon-28x28.png" width="28" height="28"
                style="float:right; padding:16px;" alt="RSS feed of screencasts"></a>

        <p>
            <b>Browse the NetBeans Media Library for access to extensive technical and community resources
                that include screencasts, demos, podcasts, and video interviews.</b>
        </p>

        <h2>Latest Videos of the NetBeans IDE</h2>
        <div style="float:left; margin-left:10px; margin-right:20px" >
            <a href="../kb/docs/intro-screencasts.html">
                <img src="../images_www/articles/69/start69.jpg" class="b-none" title="Intro to NetBeans IDE" alt="[Video]">
            </a>
        </div>
        <p>
            <b>For a look at what's new and noteworthy in the latest release of the NetBeans IDE, watch the
                <a href="../kb/docs/intro-screencasts.html">Guided Video Tours of the NetBeans IDE</a>.</b>
        </p>
        <br><br class="clear">
        <!--Database starts here-->
        <script src="/images_www/js/data_tables/js/jquery.dataTables.min.js" type="text/javascript"></script>
        <script src="/images_www/js/mediaplayer-5.2/swfobject.js" type="text/javascript"></script>
        <script src="/images_www/js/jquery.url.packed.js" type="text/javascript"></script>

        <div id="player" style="margin-bottom:30px;">
            <center>
                <div id="flashContent"></div>
            </center>
        </div>
        <!-- this is the data definition, add new items here -->
        <table id="mediaTable" style="visibility: hidden;border:1px solid silver;">
            <thead>
                <tr>
                    <th></th>
                    <th class="title-col">Title</th>
                    <th>Date</th>
                    <th>Tags</th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><a href="https://www.youtube.com/watch?v=iWejyPL5YQI" class="playB" title="play"></a></td>
                    <td><b>NetBeans Multi Cursor Feature</b><br>
                        This YouTube clip demonstrates the new multi caret support in NetBeans IDE.</td>
                    <td>2016-03</td>
                    <td>Editor</td>
                    <td></td>
                </tr>
                <tr>
                    <td><a href="https://www.youtube.com/watch?v=RK2kizTuhG4" class="playB" title="play"></a></td>
                    <td><b>WordPress, Chrome, and NetBeans IDE 8.1</b><br>
                        When working with live WordPress sites, using Chrome and
                        NetBeans IDE as your editing environment can be quite powerful!</td>
                    <td>2016-01</td>
                    <td>HTML</td>
                    <td></td>
                </tr>
                <tr>
                    <td><a href="https://www.youtube.com/watch?v=lYGfD2H99Ls" class="playB" title="play"></a></td>
                    <td><b>Graal VM Multilanguage Shell</b><br>
                        Christian Humer from the VM Research group at Oracle Labs shows off 
                        the Graal VM Multilanguage Shell at JavaOne 2015.</td>
                    <td>2015-11</td>
                    <td>Debugger</td>
                    <td></td>
                </tr>
                <tr>
                    <td><a href="https://www.youtube.com/watch?v=fph71LzL3Us" class="playB" title="play"></a></td>
                    <td><b>Mixed Java and C/C++ Debugging</b><br>
                        What if you could debug your native code directly from your
                        Java code? Watch this screencast to find out how.</td>
                    <td>2015-10</td>
                    <td>Debugger</td>
                    <td></td>
                </tr>
                <tr>
                    <td><a href="https://www.youtube.com/watch?v=QGSBVEO5cPQ" class="playB" title="play"></a></td>
                    <td><b>Live On-Device Styling on Samsung Galaxy S6</b><br>
                        Did you know you can edit your CSS stylesheets live on your Samsung Galaxy S6?
                    </td>
                    <td>2015-09</td>
                    <td>HTML</td>
                    <td></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast71.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 71</b><br>
                        Podcast Guests: Mark Stephens, Ernest Duodu, Dorine Flies, Emily Hall, Ken Fogel, John Ceccarelli, Luke Mayell, and Johannes Weigend. <a href="https://blogs.oracle.com/nbpodcast/entry/netbeans_podcast_71"><i>Show notes on the NetBeans Podcast Blog.</i></a></td>
                    <td>2014-11</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast71.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast70.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 70</b><br>
                        Podcast Guests: Ashwin Rao (NetBeans-Oracle), Ken Fogel (Dawson College, Montreal). <a href="https://blogs.oracle.com/nbpodcast/entry/netbeans_podcast_70"><i>Show notes on the NetBeans Podcast Blog.</i></a></td>
                    <td>2014-07</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast70.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast69.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 69</b><br>
                        Podcast Guests: Terrence Barr, Simon Ritter, Jaroslav Tulach -- An all-Oracle lineup! <a href="https://blogs.oracle.com/nbpodcast/entry/netbeans_podcast_69"><i>Show notes on the NetBeans Podcast Blog.</i></a></td>
                    <td>2014-05</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast69.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb_me_sdk_plugins.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Installing and Using Java ME SDK 8.0 Plugins in NetBeans IDE</b><br>
                         This screencast demonstrates installation and use of Java ME SDK 8.0 Plugins in NetBeans IDE on the Windows operating system.</td>
                    <td>2014-05</td>
                    <td>JavaME</td>
                    <td><a href="http://bits.netbeans.org/media/nb_me_sdk_plugins.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb80_overview_video.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans IDE 8.0 Overview Screencast</b><br>
                        NetBeans IDE 8.0 delivers full support for the latest Java 8 technologies; includes new enhancements for Maven and Java EE, new tools for HTML5, and improved support for PHP and C/C++.</td>
                    <td>2014-03</td>
                    <td>IDE</td>
                    <td><a href="http://bits.netbeans.org/media/nb80_overview_video.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast68.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 68</b><br>
                        Podcast Guests: Brett Ryan (John Sands), Andreas Stefik (University of Nevada), Petr Pisl (NetBeans). <a href="https://blogs.oracle.com/nbpodcast/entry/netbeans_podcast_68"><i>Show notes on the NetBeans Podcast Blog.</i></a></td>
                    <td>2014-02</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast68.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('smart-migration-java8.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Smart Migration to JDK 8 in NetBeans IDE</b><br>
                        This screencast is a guide to the key features of language enhancements in Java 8 and how you can use the IDE to help you migrate your code to Java 8. </td>
                    <td>2014-03</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/smart-migration-java8.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('prime-faces-nb8.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>PrimeFaces Development in NetBeans IDE</b><br>
                        A screencast that demonstrates how to use NetBeans IDE to create a complete CRUD application using Java EE 7, Maven, and PrimeFaces.</td>
                    <td>2014-03</td>
                    <td>JavaEE</td>
                    <td><a href="http://bits.netbeans.org/media/prime-faces-nb8.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('html5-gettingstarted-cordova-final-screencast.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>HTML5 - Getting Started with Cordova Development</b><br>
                        This screencast introduces the support in NetBeans IDE for developing applications with HTML, JavaScript, and CSS for mobile devices via Cordova. </td>
                    <td>2013-11</td>
                    <td>Web</td>
                    <td><a href="http://bits.netbeans.org/media/html5-gettingstarted-cordova-final-screencast.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('nb_me_8.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Java ME 8 EA Support in NetBeans IDE</b><br>
                        This video demonstrates how to activate and register the Java ME 8 SDK in NetBeans, and then create and run a Java ME 8 Embedded project.</td>
                    <td>2014-02</td>
                    <td>JavaME</td>
                    <td><a href="http://bits.netbeans.org/media/nb_me_8.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
               <tr>
                    <td><a href="" onClick="showMedia('git_nb_ssh.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Cloning a Git Repository Using NetBeans IDE</b><br>
                        This video demonstrates how to get a Git project by cloning an existing Git repository from GitHub using the IDE's support for the Git versioning system.</td>
                    <td>2013-11</td>
                    <td>IDE</td>
                    <td><a href="http://bits.netbeans.org/media/git_nb_ssh.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast67.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 67</b><br>
                        Podcast Guests: David Strupl (NetBeans); Mark Stephens (IDR Solutions); John Brock (Oracle, Project Easel). <a href="https://blogs.oracle.com/nbpodcast/entry/netbeans_podcast_67"><i>Show notes on the NetBeans Podcast Blog.</i></a></td>
                    <td>2013-11</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast67.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb74_overview_video.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans IDE 7.4 Overview Screencast</b><br>
                        NetBeans IDE 7.4 provides HTML5 development support for Java EE and PHP applications, new support for mobile web development on the Android and iOS platforms, and support for the Cordova framework.</td>
                    <td>2013-10</td>
                    <td>IDE</td>
                    <td><a href="http://bits.netbeans.org/media/nb74_overview_video.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('github_nb.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Setting up a GitHub Repository Using NetBeans IDE</b><br>
                        This screencast demonstrates how to set up a Git repository in NetBeans IDE and put it up to GitHub using the IDE's support for the Git versioning system.</td>
                    <td>2013-10</td>
                    <td>IDE</td>
                    <td><a href="http://bits.netbeans.org/media/github_nb.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast66.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 66</b><br>
                        Podcast Guests: Shai Almog (CodeName One), Attila Kelemen (Gradle), Toni Epple (Eppleton), John Yeary (GreenJUG. <a href="https://blogs.oracle.com/nbpodcast/entry/netbeans_podcast_66"><i>Show notes on the NetBeans Podcast Blog</i>.</a></td>
                    <td>2013-08</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast66.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('knockout1-basic-bindings.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>HTML5 and Knockout Part 1 - Basic Bindings</b><br>
                        Part of a series that shows how to build a client-side HTML5 application with 
                        jQuery and KnockoutJS.</td>
                    <td>2013-07</td>
                    <td>HTML5</td>
                    <td><a href="http://bits.netbeans.org/media/knockout1-basic-bindings.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('knockout2-json.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>HTML5 and Knockout Part 2 - JSON</b><br>
                        Part of a series that shows how to build a client-side HTML5 application with 
                        jQuery and KnockoutJS.</td>
                    <td>2013-07</td>
                    <td>HTML5</td>
                    <td><a href="http://bits.netbeans.org/media/knockout2-json.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('knockout3-click-handler.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>HTML5 and Knockout Part 3 - Click Handler</b><br>
                        Part of a series that shows how to build a client-side HTML5 application with 
                        jQuery and KnockoutJS.</td>
                    <td>2013-07</td>
                    <td>HTML5</td>
                    <td><a href="http://bits.netbeans.org/media/knockout3-click-handler.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('netbeans_html5_js_css3.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>HTML5, JavaScript & CSS3 in NetBeans IDE</b><br>
                        An overview of rich client-side web and mobile application development with HTML5, JavaScript and CSS3 support in NetBeans IDE.</td>
                    <td>2013-07</td>
                    <td>HTML5</td>
                    <td><a href="http://bits.netbeans.org/media/netbeans_html5_js_css3.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>                
                <tr>
                    <td><a href="" onClick="showMedia('nb_mesdk.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Setting up NetBeans IDE for Mobile Development on Windows</b><br>
                        This screencast demonstrates the support for the Java ME SDK in NetBeans IDE, showing how to activate JavaME plugins and register the Java ME SDK in the IDE.</td>
                    <td>2013-07</td>
                    <td>JavaME</td>
                    <td><a href="http://bits.netbeans.org/media/nb_mesdk.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('netbeans_fx.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>JavaFX Support in NetBeans IDE</b><br>
                        This screencast demonstrates JavaFX-related features that are implemented in NetBeans IDE 7.4 Beta, including the JavaFX runtime classpath, the alignment of JavaFX and Java SE projects and the JavaFX Maven project template.</td>
                    <td>2013-07</td>
                    <td>JavaFX</td>
                    <td><a href="http://bits.netbeans.org/media/netbeans_fx.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>                
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast65.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 65</b><br>
                        Podcast Guests: Anton Arhipov, JRebel-ZeroTurnaround Product Manager; Jan Pirek, NetBeans.org Webmaster; Dmitry Sotnikov, Jelastic COO. <a href="https://blogs.oracle.com/nbpodcast/entry/netbeans_podcast_65"><i>Show notes on the NetBeans Podcast Blog.</i></a></td>
                    <td>2013-07</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast65.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb731-javaee7-launch-final-with-sound.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans IDE 7.3.1 Overview Screencast</b><br>
                        An overview of the Java EE 7 features provided by NetBeans IDE 7.3.1, such as project templates, samples, file templates, and editor features that allow developers to get the most out of Java EE 7.</td>
                    <td>2013-06</td>
                    <td>IDE JavaEE</td>
                    <td><a href="http://bits.netbeans.org/media/nb731-javaee7-launch-final-with-sound.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('websocketapi-screencast.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Using the WebSocket API in a Web Application</b><br>
                        This screencast demonstrate how to create a Java EE 7 web application that uses the new WebSocket and JSON APIs.</td>
                    <td>2013-06</td>
                    <td>JavaEE Web</td>
                    <td><a href="http://bits.netbeans.org/media/websocketapi-screencast.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
               <tr>
                    <td><a href="" onClick="showMedia('nbpodcast64.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 64</b><br>
                        Podcast Guests: NetBeans senior engineer David Konecny on HTML5 support in NetBeans 7.3; Tushar Joshi and Easy Flow Chart, an open source project using NetBeans' HTML5 support; and a new NetBeans IDE ebook by author Atul Palandurkar.</td>
                    <td>2013-04</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast64.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast64.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 64</b><br>
                        Podcast Guests: NetBeans senior engineer David Konecny on HTML5 support in NetBeans 7.3; Tushar Joshi and Easy Flow Chart, an open source project using NetBeans' HTML5 support; new NetBeans IDE ebook by author Atul Palandurkar</td>
                    <td>2013-04</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast64.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb73_overview_video.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>NetBeans IDE 7.3 Overview Screencast</b><br>
                  NetBeans IDE 7.3 introduces support for HTML5 applications and includes significant improvements for editing JavaScript, CSS and HTML files, and more. 
                    </td>
                    <td>2013-02</td>
                    <td>IDE</td>
                    <td><a href="http://bits.netbeans.org/media/nb73_overview_video.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr> 
              
                <tr>
                    <td><a href="" onClick="showMedia('html5-gettingstarted-final-screencast.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Getting Started with HTML5 Applications</b><br>
                    This screencast introduces the support in NetBeans IDE for developing HTML5 applications. This screencast demonstrates how to use wizards in the IDE to create a an HTML5 project and how to use the Chrome browser with the NetBeans extension to help you view your project layout on various screen sizes. </td>
                    <td>2013-02</td>
                    <td>Web</td>
                    <td><a href="http://bits.netbeans.org/media/html5-gettingstarted-final-screencast.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>   

              </tr>
              <tr>
                    <td><a href="" onClick="showMedia('html5-javascript-screencast.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Testing and Debugging JavaScript in HTML5 Applications</b><br>
                    This screencast demonstrates how to work with the JavaScript editor and debugger in the IDE to 
                    step into and edit files in an HTML5 application.</td>
                    <td>2013-02</td>
                    <td>Web</td>
                    <td><a href="http://bits.netbeans.org/media/html5-javascript-screencast.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>   

              </tr>
              <tr>
                    <td><a href="" onClick="showMedia('html5-css-screencast.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Working with CSS Style Sheets in HTML5 Applications</b><br>
                    This screencast demonstrates some of the tools provided by NetBeans IDE to help you create and modify CSS rules in HTML5 applications.</td>
                    <td>2013-02</td>
                    <td>Web</td>
                    <td><a href="http://bits.netbeans.org/media/html5-css-screencast.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>   

              </tr>
               <tr>
                    <td><a href="" onClick="showMedia('editor-formatting.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Code Formatting Features in NetBeans IDE</b><br>
                    This screencast demonstrates important formatting features in the NetBeans IDE, such as general indentation, braces and more .</td>
                    <td>2013-02</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/editor-formatting.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>   

              </tr>
<tr>
                    <td><a href="" onClick="showMedia('nbpodcast63.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 63</b><br>
                        Podcast Guests: Petr Jiricka on HTML5 support in NetBeans 7.3; new Governance Board members Hermien Pellissier & Toni Epple; Java EE trainings with Adam Bien; NetBeans PHP author M A Hossain Tonu</td>
                    <td>2013-01</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast63.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast62.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 62</b><br>
                        NetBeans Community Reflects on JavaOne 2012. Podcast Guests: Anton Epple, Henry Arousell, Thomas Boqvist, Glenn Holmer, Timon Veenstra, and Rob Terplowski.</td>
                    <td>2012-11</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast62.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
              <tr>
                    <td><a href="" onClick="showMedia('javame-imp-ng.mp4');return false;" class="playB" title="play"></a></td>
              <td>
                        <b>Support for IMP-NG Profile in NetBeans IDE</b><br>
                       This screencast demonstrates the support for the Information Module Profile - Next Generation profile 
                       (<a href="http://jcp.org/en/jsr/detail?id=228">JSR 228</a>) when developing small embedded JavaME 
                       applications in the NetBeans IDE.</td>
                    <td>2012-09</td>
                    <td>JavaME</td>
                    <td><a href="http://bits.netbeans.org/media/javame-imp-ng.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>   

              </tr>
              <tr>
                    <td><a href="" onClick="showMedia('nbpodcast61.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 61</b><br>
                        Podcast Guests: Çağatay Çivici of PrimeFaces; Timon Veenstra of Agrosense; and API Design with Jarda Tulach.</td>
                    <td>2012-09</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast61.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
              <tr>
                    <td><a href="" onClick="showMedia('nb72_overview_video.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>NetBeans IDE 7.2 Overview Screencast</b><br>
                 NetBeans IDE 7.2 provides a significantly improved performance and coding experience, with new static code analysis capabilities in the Java Editor and smarter project scanning. Other notable features include integration with JavaFX Scene Builder, support for multiple PHP frameworks, updated Groovy support and enhancements for Java EE, Maven, C/C++ and the NetBeans Platform. 
                    </td>
                    <td>2012-07</td>
                    <td>IDE</td>
                    <td><a href="http://bits.netbeans.org/media/nb72_overview_video.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('php-doctrine2.flv');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Doctrine2 Support in NetBeans IDE for PHP</b><br>This screencast shows NetBeans IDE's Doctrine2 framework code completion 
                        and how to run Doctrine2 commands from inside the IDE.
                    </td>
                    <td>2012-06</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/php-continuous-builds.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
            </tr>
            <tr>
                    <td><a href="" onClick="showMedia('php-namespaces.flv');return false;" class="playB" title="play"></a></td>
              <td>
                        <b>PHP Namespace Support in NetBeans IDE</b><br>
                       This screencast demonstrates code completion and syntax highlighting for namespaces  
              in NetBeans IDE. The screencast includes the Fix Uses feature, introduced in
              NetBeans 7.2, that helps users with their namespace <tt>use</tt> statements.
              Lastly, the screencast shows the user how to change the options for PHP namespace 
              code completion and PHP use statements. The screencast also includes a short section
          on support for static functions.</td>
                    <td>2012-06 updated</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/php-namespaces.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>   

              </tr>
            <tr>
                    <td><a href="" onClick="showMedia('php-continuous-builds.flv');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Support for PHP on Continuous Build Servers in NetBeans IDE</b><br>
                        This screencast shows how to set up PHP applications on
                        Hudson and Jenkins continuous build servers, using NetBeans IDE.
                    </td>
                    <td>2012-05</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/php-continuous-builds.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
            </tr>
            <tr>
                    <td><a href="" onClick="showMedia('php54.flv');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Editing PHP 5.4 with NetBeans IDE for PHP</b><br>
This screencast shows NetBeans IDE code completion for PHP 5.4 innovations 
such as short array syntax and traits. The screencast also shows how to create a PHP
project that uses the PHP 5.4 built-in server.
                    </td>
                    <td>2012-06</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/php54.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
            </tr>
            <tr>
            <td><a href="" onClick="showMedia('php-apigen.flv');return false;" class="playB" title="play"></a></td>
                <td><b>Generating PHP Documentation With NetBeans IDE</b><br>
                This screencast shows how to use ApiGen with NetBeans IDE. 
          Installation with PEAR is covered, along with a simple example of document generation.
      <br><em>Note: ApiGen support supplants the older PHPDocumentor support.</em></td>
                <td>2012-07</td>
                <td>PHP</td>
                <td><a href="http://bits.netbeans.org/media/php-apigen.flv"><img alt="Download" src="/images_www/disk.png" width="16" height="16" title="Download"></a></td>
            </tr>
            <tr>
                    <td><a href="" onClick="showMedia('testng-screencast.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Using TestNG in NetBeans IDE</b><br>
                        This screencast demonstrates how to create and debug a TestNG test class in NetBeans IDE.
                    </td>
                    <td>2012-05</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/testng-screencast.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
            </tr>
            
			<tr>
                    <td><a href="" onClick="showMedia('testng-screencast.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Static Analysis of Java Code in NetBeans IDE</b><br>
                        This screencast demonstrates how to perform static analysis of your Java code using FindBugs and NetBeans Java Hints without actually running your applications.
              </td>
                    <td>2012-05</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/code-inspect.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
            </tr>
             <tr>
                    <td><a href="" onClick="showMedia('nbpodcast60.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 60</b><br>
                        Podcast Guests: Publisher and author Joel Murach; Groovy support in NetBeans IDE with Martin Janicek; and API Design with Jarda Tulach.</td>
                    <td>2012-04</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast60.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
			<tr>
                    <td><a href="" onClick="showMedia('svgtouch.swf');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Creating a Touch Enabled SVG UI for Java ME Devices</b><br>
                        This screencast demonstrates how to develop an application that works on most Java ME based touch screen devices using scalable vector graphics (SVG) user interface widgets in the NetBeans IDE.
                    </td>
                    <td>2012-03</td>
                    <td>Java ME</td>
                    <td><a href="http://bits.netbeans.org/media/svgtouch.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
            </tr>
            
           <tr>
                    <td><a href="" onClick="showMedia('nbpodcast59.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 59</b><br>
                        Main guest: John Yeary, JavaEE evangelist, blogger, JUG leader, and new member of NetBeans Dream Team. Also, find out what's new in Project Scanning, and how Bode Miller relates to better API design.</td>
                    <td>2012-02</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast59.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb71_overview_video.mp4');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>NetBeans IDE 7.1 Overview Screencast</b><br>
                 An overview of new features and improvements introduced in NetBeans IDE 7.1, 
                 including support for JavaFX 2.0, Git support, Swing GUI Builder enhancements and tools for visual debugging of Swing and JavaFX user interfaces. 
                    </td>
                    <td>2012-01</td>
                    <td>IDE</td>
                    <td><a href="http://bits.netbeans.org/media/nb71_overview_video.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('refactor-nb71.swf');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Inspect and Transform Refactoring in NetBeans IDE</b><br>
                 This screencast demonstrates the support for the Inspect and Transform refactoring feature in NetBeans IDE 7.1. 
                 including how to run perform a code review using inspections with predefined refactoring sets and 
                 creating custom inspections. 
                    </td>
                    <td>2011-12</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/refactor-nb71.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('smarty-framework.flv');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Smarty Support in NetBeans IDE for PHP</b><br>
                 This screencast shows how to work with the Smarty PHP framework in NetBeans IDE. 
                 The screencast includes setup, code completion with Smarty classes, and creating and editing Smarty template files.
                    </td>
                    <td>2011-12</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/smarty-framework.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr> 
                <tr>
                    <td><a href="" onClick="showMedia('visual-debug-screencast.mov');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Using the Visual Debugger in NetBeans IDE</b><br>
                        This screencast demonstrates how to use the Visual Debugger to locate and debug the code for visual elements in Java and JavaFX GUI applications.
                    </td>
                    <td>2012-01</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/visual-debug-screencast.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast58.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 58</b><br>
                        NetBeans IDE 7.1 is almost here; what's the community's verdict? Chats with the elected members of the 19th NetBeans Governance Board. And a new API Design book is on the way.</td>
                    <td>2011-12</td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast58.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast57.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 57</b><br>
                        Tune in for chats about the development status of NetBeans 7.1 and a recap of NetBeans news from JavaOne 2011, as well as an interview about how the NetBeans Platform is used in earthquake monitoring.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast57.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>                                                    
                    <td><a href="" onClick="showMedia('nbpodcast56.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 56</b><br>
                        A podcast dedicated to NetBeans IDE and NetBeans Platform at the JavaOne 2011 conference. Tune in for chats with scheduled NetBeans speakers and for information on all NetBeans-related events at JavaOne.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast56.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb70_overview_video.mov');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>NetBeans IDE 7.0 Overview Screencast</b><br>
                 An overview of the new and noteworthy features of NetBeans IDE 7.0 such as support for JDK 7 developer preview; Oracle WebLogic and GlassFish 3.1; GridBagLayout designer, and more.
                    </td>
                    <td>2011-04</td>
                    <td>IDE</td>
                    <td><a href="http://bits.netbeans.org/media/nb70_overview_video.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr>     
            
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast55.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 55</b><br>
                        News from the NetBeans Community. NetBeans IDE 7.0 feedback; Community interview with Alex Kotchnev, Software Architect and NetBeans Dreamteam member; NetBeans Plugin Portal redesign; the API Design Tip, and the NetBeans Puzzler.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast55.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>

                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast54.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 54</b><br>
                        News from the NetBeans Community. NetBeans IDE 7.0 Beta 2; JavaOne Russia and India; Community interview with Andreas Stefik, NetBeans Dream Team member, Computer Science professor and project lead for SodBeans; the API Design Tip and the NetBeans Puzzler.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast54.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14690?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Code Swarm: 10 Years of NetBeans History in 5 Minutes</strong><br>
              This Code Swarm visualizes work done in the NetBeans CVS repository from 1998 to 2008. Keep your eyes open for Ian Formanek, Jaroslav Tulach, Jesse Glick, Tim Boudreau, Tor Norbye, Roman Strobl, and many more!    </td>
                    <td>2009-01</td>
                    <td>IDE</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14690?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/15231?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (9) - Visual Library API</strong><br>
              The focus of this screencast is an introduction tothe Visual Library API, building on top of Part 8, which created a scenario where it makes sense to use the Visual Library API...   </td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/video/player/42853703001" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
              <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14710?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (8)</strong><br>
              Part 8 shows a demo where we prepare ourselves for the next screencast, which will focus on the Visual Library API. To getto a point where we can meaningfully use that API, we construct twolayers of nodes which we display in a Palette.
</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14710?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
              <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14711?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (7) - Porting an Application to the NetBeans Platform</strong><br>
              This time we cover the FileSystem API, the NodesAPI, and the Explorer & Property Sheet API. You must have watched at least part 4 and part 5 before watching.

</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14711?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
              <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14712?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (6) - Porting an Application to the NetBeans Platform</strong><br>
              This is a summary of the previous sections of thisseries, applied to an actual application that we port step by step tothe NetBeans Platform.


</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14712?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
              <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14713?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (5) - Nodes, Explorer, Property Sheet API</strong><br>
              In part 5 of this series, you learn about the NodesAPI and Explorer & Property Sheet API. 

</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14713?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
              <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14714?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (4) - System Filesystem API</strong><br>
              In part 4 of this series, the NetBeans FileSystemAPI is discussed, after a general discussion about file systems and whyit could be a very useful feature to have in your own desktop application.  

</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14714?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>      

              </tr>
              <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14718?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (3) - Window System API</strong><br>
              Now in part 3 you see the Window System API inaction. The screencast starts with an overview of the previousscreencasts, then discusses what a window system is, and then shows youthe main API classes in common scenarios.  

</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14718?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>      

              </tr>
              <tr>
                     <td><a href="http://medianetwork.oracle.com/media/show/14720?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (2) - Lookup API</strong><br>
             In part 2 of this series, we look at the Lookup API and we learn how it is similar and different to the JDK 6 ServiceLoader class. We also see some demos!  

</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14720?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>      

              </tr>
              <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14722?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Top 10 NetBeans Platform APIs (1) - Runtime Container</strong><br>
             Watch this if you are new to the NetBeans APIs orwant to understand how an application like the NetBeans IDE works. 

</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14722?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>    

              </tr>
              <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14723?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>NetBeans Platform Crash Course</strong><br>
             To celebrate Heiko Böck's book "The Definitive Guideto NetBeans Platform", here's a crash course into the world of theNetBeans Platform. Zero NetBeans Platform knowledge is assumed.
 

</td>
                    <td>2009-10</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14723?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>    

              </tr>
            
            
            
                        
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14733?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td><strong>Creating a WordPress PHP Plugin With NetBeans IDE</strong><br>
              This screencast demonstrates how to import WordPress sources as a NetBeans IDE project and use this project to create a simple plug-in.    </td>
                    <td>2009-10</td>
                    <td>PHP</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14733?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
            
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14745?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td>
                        <b>Database Support Improvements in NetBeans IDE 6.5</b><br>
                       NetBeans IDE 6.5 includes support for the Sakila database, improved support for MySQL, improvements to the SQL Editor, SQL code completion, displaying multiple rowsets, and SQL history.  </td>
                    <td>2008-12</td>
                    <td>JavaEE</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14745?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
            
            
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/15233?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td>
                        <b>Ruby Support in NetBeans IDE 6.9</b><br>
                       This video provides a high-level overview and demonstrates basic features of NetBeans IDE's support for PHP.
                       NetBeans 6.9 is the last version of NetBeans to include Ruby support.</td>
                    <td>2010-09</td>
                    <td>Ruby</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/15233?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14757?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td>
                        <b>The NetBeans IDE 6 Profiler</b><br>
                        This demo shows how to use Profiling Points, the Drill Down Graph, and   the Heap Walker in the NetBeans IDE 6 Profiler to identify performance   problems and to track down memory leaks.</td>
                    <td>2009-11</td>
                    <td>Java</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14757?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/15231?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td>
                        <b>Using JavaFX Composer in NetBeans IDE 6.9</b><br>
                        NetBeans IDE 6.9 introduces the JavaFX Composer, a visual layout tool   for building JavaFX GUI applications, similar to the Swing GUI Builder   for Java SE applications. See how to quickly and efficiently build   JavaFX applications using this  tool.</td>
                    <td>2010-09</td>
                    <td>PHP</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/15231?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/15230?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td>
                        <b>PHP Support in NetBeans IDE 6.9</b><br>
              This video provides a high-level overview and demonstrates basic features of NetBeans IDE's support for PHP. Video demonstrates how to create a PHP project, code completion, occurrance marking, version control.</td>
                    <td>2010-09</td>
                    <td>PHP</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/15230?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/15235?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td>
                        <b>Writing a Java Application in NetBeans IDE</b><br>
                        This demonstration walks you through creation of a simple Java   application in the Java Editor of NetBeans IDE 6.9. In the screencast,   you will see how to use editor productivity features, such as code   completion, code templates, and error hints. </td>
                    <td>2010-09</td>
                    <td>Java</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/15235?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

              </tr>
                        <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/15232?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td>
                        <b>Creating Applications on NetBeans Platform 6.9</b><br>
                        An in-depth overview of the powerful NetBeans Platform, which is a Swing-based framework for developing desktop applications.</td>
                    <td>2010-09</td>
                    <td>Platform</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/15232?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

                </tr>
            <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/15234?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
              <td>
                        <b>NetBeans IDE 6.9 Overview Screencast</b><br>
                        The NetBeans IDE is an integrated development environment for software   developers. It provides the tools you need to create professional   desktop, enterprise, web, and mobile applications. </td>
                    <td>2010-09</td>
                    <td>IDE</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/15234?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

                </tr>
                <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14814?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
                    <td>
                        <b>Announcing NetBeans IDE 6.8</b><br>
                        The NetBeans IDE 6.8 is the first integrated development environment to provide complete support of Java EE 6 and the GlassFish Enterprise Server v3 platform.

                    </td>
                    <td>2009-10</td>
                    <td>IDE</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14814?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

                </tr>
                <tr>
                    <td><a href="http://medianetwork.oracle.com/media/show/14732?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   
                    <td>
                        <b>Symfony Framework Support in NetBeans IDE 6.8</b><br>
                        This screencast demonstrates the built-in support for the Symfony framework in NetBeans IDE for PHP. 
                        It shows how to set up the IDE to use Symfony, how to create a 
                        PHP project that uses the Symfony framework, and a number of tips.

                    </td>
                    <td>2009-10</td>
                    <td>PHP</td>
                    <td><a href="http://medianetwork.oracle.com/media/show/14732?n=&nid=" target="_blank"><img src="/images_www/redirect.png" alt="Oracle Media Network"></a></td>   

                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('rename-refactoring.flv');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Rename Refactoring and Other Editor Improvements in NetBeans IDE 7.0 for PHP</b><br>
                        This screencast shows the new features of NetBeans PHP editor 7.0, such as
                        Rename Refactoring, Type Hierarchy View, Line Wrap, and Show
                        Non-Printable Characters.
                    </td>
                    <td>2010-11</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/rename-refactoring.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr>
                
                <tr>
                    <td><a href="" onClick="showMedia('phpdoc.flv');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Generating PHP Documentation With NetBeans IDE</b><br>
                        This screencast shows how to generate PHP documentation 
                        using PHPDocumentor with NetBeans IDE.
                    </td>
                    <td>2011-02</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/phpdoc.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast53.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 53</b><br>
                        News from the NetBeans Community. A packed podcast about the NetBeans IDE 7.0 Beta release featuring chats with members of the NetBeans engineering team and JavaEE expert Adam Bien.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast53.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('javaeditor.swf');return false;" class="playB" title="play">play</a></td>
                    <td><b>Editing Java Code in NetBeans IDE</b><br>
                  This demonstration walks you through creation of a simple Java application in the Java Editor of the NetBeans IDE. You will learn how to effectively use the capabilities of the IDE's Java editor.</td>
                    <td>2010-09</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/javaeditor.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('NewDataSources.mp4');return false;" class="playB" title="play">play</a></td>
                    <td><b>Using New Data Sources in JavaFX Composer (NetBeans IDE 7.0 M1)</b><br>This demonstration shows how to create a form that displays data from an XML file in JavaFX Composer. It demonstrates the use of File Data Source to enable access to the contents of an local file.                  </td>
                    <td>2010-09</td>
                    <td>JavaFX</td>
                    <td><a href="http://bits.netbeans.org/media/NewDataSources.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb-logo.mp4');return false;" class="playB" title="play">play</a></td>
                    <td><b>Creating an Animated NetBeans Logo Application in JavaFX Composer</b><br>This screencast demonstrates how you can quickly create a small demo with animated graphics using NetBeans JavaFX Composer and JavaFX Production Suite for Adobe Illustrator.</td>
                    <td>2010-09</td>
                    <td>JavaFX</td>
                    <td><a href="http://bits.netbeans.org/media/nb-logo.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('zf.flv');return false;" class="playB" title="play">play</a></td>
                    <td><b>Zend Framework Support in NetBeans IDE for PHP</b><br>This screencast demonstrates how to develop PHP applications using Zend Framework in the NetBeans IDE. Zend Framework support is introduced in NetBeans IDE version 6.9</td>
                    <td>2010-05</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/zf.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('php-cc-screencast-67.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Declaring Variables in Comments in NetBeans for PHP 6.7</b><br>
                        This screencast demonstrates how to declare PHP variables in comments, along with constructor code completion and SQL query code completion. These are new features in the NetBeans PHP editor 6.7.</td>
                    <td>2009-08</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/php-cc-screencast-67.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbcvsmovie.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans CVS Visualization</b><br>
                        A code_swarm visualization of the NetBeans CVS repository from 1998-2008</td>
                    <td>2008-10</td>
                    <td>Community</td>
                    <td><a href="http://bits.netbeans.org/media/nbcvsmovie.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('goslingnetbeans.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>James Gosling on Ten Years of NetBeans</b><br>
                        James Gosling speaks about NetBeans and wishes the project well on its 10th anniversary</td>
                    <td>2008-10</td>
                    <td>Community Interview</td>
                    <td><a href="http://bits.netbeans.org/media/goslingnetbeans.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast46.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 46</b><br>
                        Geertjan Wilenga and Lloyd Dunn present the NetBeans Podcast #46. Interviews with Tinu Awopetu (netbeans.org), Lukas Hasik (NetBeans Quality Engineering), James Branam (NetBeans Community Contributed Docs), Jaroslav Tulach (API Design Tips), plus the Podcast Mailbox, the Plugin of the Podcast and the Podcast Puzzler.</td>
                    <td></td><td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast46.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast48.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 48</b><br>
                        Interviews with Tinu Awopetu, Petr Pišl and Tomáš Myšík (NetBeans PHP Team), Jaroslav Tulach (API Design), Patrick Keegan (NetBeans Docs), Stefan Saring (SportsTracker) and more</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast48.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast47.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 47</b><br>
                        Interviews with Tinu Awopetu (netbeans.org), David Struple (JavaFX), Jaroslav Tulach (API Design Tips), Jiri Kovalsky (NetBeans Innovators Grants), Bryan Segale (DeviceAnywhere), plus the NetBeans Puzzler.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast47.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast49.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 49</b><br>
                        Interviews with Tinu Awopetu; the authors Brian Leonard, Ruth Kusterer, and David Heffelfinger; API design guru Jaroslav Tulach, and more.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast49.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast52.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 52</b><br>
                        News from the NetBeans Community. NetBeans IDE 6.8 debuts with support for Java EE 6 and GlassFish v3! The NetBeans Platform returns to the spotlight. Interviews with John Clingan from GlassFish; David Konecny, NetBeans Java EE team lead. NetBeans Dream Team member Ryan de Laplante gives a user's perspective on NetBeans 6.8. </td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast52.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast51.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 51</b><br>
                        News from the NetBeans Community: NetBeans 6.8 launch preview; NetBeans.org migrates to Kenai infrastructure; API design tips from Jaroslav Tulach; and more.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast51.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nbpodcast50.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 50</b><br>
                        News from the NetBeans Community: NetBeans 6.7 launch; a chat about Project Kenai integration with Sharat Chander; API design tips from Jaroslav Tulach; and more.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nbpodcast50.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb_podcast_45.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 45</b><br>
                        Interviews with Ted Leung (Python) and Jakub Franc (Experience Design). Also API Design Tips with Jaroslav Tulach, as well as the Plugin, Program, and Puzzler of the Podcast.</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nb_podcast_45.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb_podcast_44.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Podcast 44</b><br>
									  NetBeans Podcast Episode 44</td>
                    <td></td>
                    <td>Podcast</td>
                    <td><a href="http://bits.netbeans.org/media/nb_podcast_44.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('interview_romanstrobl.mp3');return false;" class="playB" title="play"></a></td>
                    <td><b>Roman Strobl at JavaOne 07</b><br>
                        Interview with Roman Strobl at JavaOne 2007</td>
                    <td>2007-05</td>
                    <td>Interview JavaOne</td>
                    <td><a href="http://bits.netbeans.org/media/interview_romanstrobl.mp3"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('RomanStrobl-RubyDebugger.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>The NetBeans Ruby Debugger</b><br>
                        Roman Strobl shows the NetBeans Ruby Debugger.</td>
                    <td></td>
                    <td>Ruby Debugger</td>
                    <td><a href="http://bits.netbeans.org/media/RomanStrobl-RubyDebugger.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('ort_strobl.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Interview with NetBeans evangelist Roman Strobl</b><br>
                        Ed Ort of java.sun.com interviews NetBeans evangelist Roman Strobl</td>
                    <td></td>
                    <td>Interview</td>
                    <td><a href="http://bits.netbeans.org/media/ort_strobl.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('kenai-issuetracking-screencast68.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Working with Issue Tracking in NetBeans IDE 6.8</b><br>
                        This short screencast demonstrates the basics of how you can work with a project's registered issue tracker in Netbeans IDE 6.8.</td>
                    <td></td>
                    <td>Kenai</td>
                    <td><a href="http://bits.netbeans.org/media/kenai-issuetracking-screencast68.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('kenai-opening-screencast68.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Opening a Kenai Project in NetBeans IDE 6.8</b><br>
                        A short screencast demonstrating how to use NetBeans 6.8 to get sources and open projects hosted on Kenai.com</td>
                    <td>2009-12</td>
                    <td>Kenai</td>
                    <td><a href="http://bits.netbeans.org/media/kenai-opening-screencast68.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('kenai-creating-screencast68.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Creating a Kenai Project in NetBeans IDE 6.8</b><br>
                        A short screencast demonstrating how to use NetBeans 6.8 to create a Kenai project and to share a local project on Kenai.com</td>
                    <td>2009-12</td>
                    <td>Kenai</td>
                    <td><a href="http://bits.netbeans.org/media/kenai-creating-screencast68.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb68-kenai-chat.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Using Chat and Notifications in NetBeans IDE 6.8</b><br>This screencast demonstrates how the chat and notifications features in NetBeans IDE 6.8 can be incorporated into your workflow.</td>
                    <td>2009-12</td>
                    <td>Kenai</td>
                    <td><a href="http://bits.netbeans.org/media/nb68-kenai-chat.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb68-gettingstarted-javaee6.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Getting Started with Java EE6 Applications in NetBeans IDE 6.8</b><br>
                        This screencast demonstrates the support provided by NetBeans IDE 6.8 for some of the technologies introduced as part of Java Enterprise Edition 6 (Java EE 6) specification.</td>
                    <td>2009-12</td>
                    <td>JavaEE</td>
                    <td><a href="http://bits.netbeans.org/media/nb68-gettingstarted-javaee6.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('debugger-evaluator.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans Debugger Evaluator and Formatters</b><br>
                        A screen-cast demonstrating the new code snippet evaluator and its application via variable formatters.</td>
                    <td>2009-06</td>
                    <td>Java Debugger</td>
                    <td><a href="http://bits.netbeans.org/media/debugger-evaluator.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('stepinto-debugger.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Visual Step Into Action in NetBeans Debugger</b><br>
                        Roman Ondruska demonstrates the Step Into action using the visual method call selector in the NetBeans debugger.</td>
                    <td>2009-06</td>
                    <td>Java Debugger</td>
                    <td><a href="http://bits.netbeans.org/media/stepinto-debugger.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('deadlock-detection.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Deadlock Detection Using the NetBeans Debugger</b><br>
                        Roman Ondruska demonstrates how to detect deadlocks using the NetBeans debugger.</td>
                    <td>2009-06</td>
                    <td>Java Debugger</td>
                    <td><a href="http://bits.netbeans.org/media/deadlock-detection.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('maven-dependecies-screencast.swf');return false;" class="playB" title="play"></a></td>
                    <td><b>Working with Maven Dependencies in NetBeans IDE 6.7</b><br>
                        This screencast demonstrates the basics of working with Maven project dependencies using NetBeans IDE 6.7.</td>
                    <td>2009-06</td>
                    <td>Java Maven</td>
                    <td><a href="http://bits.netbeans.org/media/maven-dependecies-screencast.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
 <!--               <tr>
                   <td><a href="" onClick="showMedia('nb68-java-editor.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Editing Java Code in NetBeans IDE 6.8</b><br>
                        Screencast showing how to edit Java code in NetBeans IDE 6.8.</td>
                    <td></td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/nb68-java-editor.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr> -->
                <tr>
                    <td><a href="" onClick="showMedia('nb68-java-editor.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Java Editor in NetBeans IDE 6.8</b><br>
										This screencast walks you through creation of a simple Java application and shows productivity features of the NetBeans IDE</td>
                    <td>2009-12</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/nb68-java-editor.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('restproject.swf');return false;" class="playB" title="play"></a></td>
                    <td><b>RESTful Web Services Pet Catalog</b><br>
         This Pet Store Catalog application exposes a catalog as a RESTful Web Service for remote client applications, and shows a Dojo client which gets and displays the Web Service responses in a dynamic Ajax table (Dojo grid). </td>
                    <td>2009-08</td>
                    <td>JavaEE</td>
                    <td><a href="http://bits.netbeans.org/media/restproject.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('NB65-flickrPHP-Screencast.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Building a Flickr Slideshow with PHP</b><br>
                        Building a Flickr Slideshow with PHP</td>
                    <td>2008-08</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/NB65-flickrPHP-Screencast.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('Class-Property-Variables-in-NetBeans-PHP.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans PHP IDE - Class Property Variables</b><br>
                        Demo of class property variables support in NetBeans PHP.</td>
                    <td>2008-08</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/Class-Property-Variables-in-NetBeans-PHP.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('NetBeans65PHP_demo_part_I.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Demo of PHP support in NetBeans 6.5 - Part I</b><br>
                        This is the first part of a demo NetBeans IDE 6.5 for PHP. This part is about PHP project and run configurations.</td>
                    <td>2008-08</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/NetBeans65PHP_demo_part_I.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('NetBeans65PHP_demo_part_II.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Demo of PHP support in NetBeans 6.5 - Part II</b><br>
                        This is the second part of the PHP distribution of NetBeans IDE 6.5. This part is about basic editor features.</td>
                    <td>2008-08</td>
                    <td>PHP</td>
                    <td><a href="http://bits.netbeans.org/media/NetBeans65PHP_demo_part_II.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('PythonCodeCoverage.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Python code coverage support in NetBeans</b><br>
                        A quick demo of the new code coverage support for Python in NetBeans 7.0.</td>
                    <td>2010-05</td>
                    <td>Python</td>
                    <td><a href="http://bits.netbeans.org/media/PythonCodeCoverage.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('RubyCodeCoverage.mov');return false;" class="playB" title="play"></a></td>
                    <td><b>Ruby code coverage support in NetBeans</b><br>
                        A quick demo of the new code coverage support for Ruby in NetBeans IDE</td>
                    <td>2010-06</td>
                    <td>Ruby</td>
                    <td><a href="http://bits.netbeans.org/media/RubyCodeCoverage.mov"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('netbeans-mysql.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>MySQL and NetBeans IDE</b><br>
                        With the NetBeans IDE, you can develop a wide range of applications that use MySQL databases.</td>
                    <td>2008-08</td>
                    <td>MySQL</td>
                    <td><a href="http://bits.netbeans.org/media/netbeans-mysql.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <!--
                <tr>
                    <td><a href="" onClick="showMedia('kenai-issuetracking-screencastflv.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Video of Using Integrated Issue Tracking in NetBeans IDE 6.7</b><br>
                        This screencast demonstrates how to use NetBeans IDE 6.7 to retrieve the sources of a project that is hosted on Kenai and open the project in the IDE. </td>
                    <td></td>
                    <td>Kenai</td>
                    <td><a href="http://bits.netbeans.org/media/kenai-issuetracking-screencastflv.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('kenai-creating-screencastflv.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Video of Creating a Kenai Project in NetBeans IDE 6.7</b><br>
                        This tutorial demonstrates how to use NetBeans IDE 6.7 to create a project on Kenai. </td>
                    <td></td>
                    <td>Kenai</td>
                    <td><a href="http://bits.netbeans.org/media/kenai-creating-screencastflv.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                -->
                <tr>
                    <td><a href="" onClick="showMedia('kenai-opening-screencastflv.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Opening a Kenai Project in NetBeans IDE 6.7</b><br>
                        This screencast demonstrates how to use NetBeans IDE 6.7 to retrieve the sources of a project that is hosted on Kenai and open the project in the IDE. </td>
                    <td>2009-06</td>
                    <td>Kenai</td>
                    <td><a href="http://bits.netbeans.org/media/kenai-opening-screencastflv.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('intronb67editing.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Introduction to Creating Java Applications in NetBeans IDE 6.7</b><br>
                        In this screencast, new Java developers will learn how to edit, compile, and run Java applications and how to use editor productivity features in NetBeans IDE 6.7.</td>
                    <td>2009-06</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/intronb67editing.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('netbeans-multithreaded-debugging.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Multi-threaded Debugging with NetBeans IDE</b><br>
                        This video demonstrates the NetBeans IDE's multi-threaded debugging capabilities including suspending threads, stepping in a selected thread, or handling breakpoints in multithreaded environments.</td>
                    <td>2009-07</td>
                    <td>Java Debugger</td>
                    <td><a href="http://bits.netbeans.org/media/netbeans-multithreaded-debugging.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('composer2.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>JavaFX Composer preview</b><br>
                        JavaFX Composer preview - simple app - rotate NB logo</td>
                    <td>2010-06</td>
                    <td>JavaFX</td>
                    <td><a href="http://bits.netbeans.org/media/composer2.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb-project-groups.swf');return false;" class="playB" title="play"></a></td>
                    <td><b>Project Groups in NetBeans IDE</b><br>
                        How the project groups work in NetBeans IDE</td>
                    <td>2008-05</td>
                    <td>Kenai</td>
                    <td><a href="http://bits.netbeans.org/media/nb-project-groups.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('nb-sql-editor.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>NetBeans SQL Editor</b><br>
                        A brief example of the IDE's SQL editor. This video is used in the NetBeans E-commerce Tutorial:
                        <a href="https://netbeans.org/kb/docs/javaee/ecommerce/connect-db.html">Connecting the Application to the Database</a>.</td>
                    <td>2010-04</td>
                    <td>JavaEE SQL</td>
                    <td><a href="http://bits.netbeans.org/media/nb-sql-editor.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('eclipselink-demo.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Using JPA Support with EclipseLink</b><br>
                        Demonstrates how to handle Java Persistence API support using EclipseLink in the NetBeans IDE.
                        Shows editor hints and refactoring support, and describes how to create entity classes from a database.
                         </td>
                    <td>2008-09</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/eclipselink-demo.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('debugger-screencast.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Working with the JavaScript Debugger in NetBeans IDE 6.5/6.7</b><br>
                        The JavaScript debugger provides you with a set of tools that aid in the process of inspecting and editing JavaScript code.
                        You can use the debugger to identify errors, or step through execution and explore the state of your application at any given moment.
                        This demo explores some of the debugger features by examining a project that uses a fisheye widget.
                         </td>
                    <td>2008-11</td>
                    <td>JavaScript Debugger</td>
                    <td><a href="http://bits.netbeans.org/media/debugger-screencast.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('js-toolkits-screencast.flv');return false;" class="playB" title="play"></a></td>
                    <td><b>Working with JavaScript Toolkits in NetBeans IDE 6.5</b><br>
                        A demonstration of how to work with JavaScript toolkits in the IDE.
                        The screencast is divided into two parts. The first part shows how to add a toolkit that is registered with the IDE to a project.
                        The second part shows how to register a new toolkit with the IDE.
                         </td>
                    <td>2008-11</td>
                    <td>JavaScript</td>
                    <td><a href="http://bits.netbeans.org/media/js-toolkits-screencast.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('weblogic4.mp4');return false;" class="playB" title="play"></a></td>
                    <td><b>Deploying a Web Application to the Oracle WebLogic Server</b><br>
                        This screencast demonstrates how to register an instance of the Oracle WebLogic server with the NetBeans IDE and then deploy a Java EE 5 web application.</td>
                    <td>2010-08</td>
                    <td>WebLogic</td>
                    <td><a href="http://bits.netbeans.org/media/weblogic4.mp4"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('IntroToNB65_sml.flv');return false;" class="playB" title="play">play</a></td>
                    <td><b>Introduction to NetBeans IDE 6.5</b><br>
		   Sridhar Reddy shows new Java developers NetBeans IDE 6.5 editor features
                        and gives a short introduction on how to edit, compile and run Java programs and
                        use the productivity features in NetBeans IDE. </td>
                    <td>2008-05</td>
                    <td>Java Editor </td>
                    <td><a href="http://bits.netbeans.org/media/IntroToNB65_sml.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
                <tr>
                    <td><a href="" onClick="showMedia('quickstart-gui-explore.swf');return false;" class="playB" title="play"></a></td>
                  <td><b>Designing a Swing GUI in NetBeans IDE</b><br>
		   This is a <a href="../kb/docs/java/gui-builder-screencast.html">series of screencasts</a> that walks you through designing a Swing GUI in the NetBeans IDE  described in the <a href="../kb/docs/java/quickstart-gui.html">Designing a Swing GUI in NetBeans IDE</a> tutorial.                    </td>
                    <td>2010-10</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/quickstart-gui-explore.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
				 <tr>
                    <td><a href="" onClick="showMedia('jdk7-nb70.swf');return false;" class="playB" title="play"></a></td>
                  <td><b>NetBeans IDE Support for JDK 7</b><br>
		   A quick demo of  the support for new JDK 7 language features in the NetBeans IDE. It demonstrates how to register JDK 7 in the IDE, configure a project to use JDK 7, and how the IDE handles new language constructs.</td>
                    <td>2011-02</td>
                    <td>Java</td>
                    <td><a href="http://bits.netbeans.org/media/jdk7-nb70.swf"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a></td>
                </tr>
				<tr>
                    <td><a href="" onClick="showMedia('gamebuilder.flv');return false;" class="playB" title="play"></a></td>
                    <td>
                        <b>Creating Mobile Games in NetBeans IDE</b><br>
                        This screencast will show you how to create a Java ME game using the NetBeans Mobile Game Builder and focuses on how to use the game designer to create the visual components of a game such as sprites and tiled layers. 
                    </td>
                    <td>2008</td>
                    <td>Java ME </td>
                    <td><a href="http://bits.netbeans.org/media/gamebuilder.flv"><img src="/images_www/disk.png" width="16" height="16" alt="Download" title="Download"></a> </td>
                </tr>
            </tbody>
        </table>

        <!--  this fires up the magic table -->
        <script type="text/javascript">
            var oTable;
            $(document).ready(function() {
                $('.playB').html('<img src="/images_www/control_play_blue.png" height="16" width="16"/>');
                oTable=$('#mediaTable').dataTable({
                    "bPaginate": true,
                    "bFilter": true,
                    "bAutoWidth": true,
                    "sPaginationType": "full_numbers",
                    "bStateSave": false,
                    "bJQueryUI": true,
                    "bSort": true,
                    "aaSorting": [[ 2, "desc" ]],
                    "aoColumns": [
                        { "sClass": "align-center play-col", "bSortable":false },
                        { "sClass": "title-col", "bSortable":true },
                        null,null,
                        { "sClass": "align-center play-col", "bSortable":false },
                    ],
                    "fnDrawCallback": function () {
                        $('#mediaTable').css('visibility','visible');
                    }
                });
                // do fintering if there is filter param in the request
                var filterString=jQuery.url.param('filter')? jQuery.url.param('filter') : '';
                var col=jQuery.url.param('col')? jQuery.url.param('col') : null;
                oTable.fnFilter(filterString, col);
                $('#mediaTable_filter input').val(filterString);

                $('#mediaTable_filter').append(' <a href="" onclick="cancelSearch();return false;">Clear Filter<a/>');

            } );

            function cancelSearch() {
                oTable.fnFilter('',null);
                $('#mediaTable_filter input').val('');
            }

            function showMedia(file) {
                var targetFile='http://bits.netbeans.org/media/'+file;
                var s1 = new SWFObject('/images_www/js/mediaplayer-5.2/player.swf','player','400','300','9');
                s1.addParam('allowfullscreen','true');
                s1.addParam('allowscriptaccess','always');
                s1.addParam('flashvars','file='+targetFile+'&autostart=true');
                s1.write('flashContent');
            }
        </script>

    </body>
</html>