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

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

<html>
  <head>
    <title>Introduction to NetBeans IDE 6.5</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
    <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
  </head>
  <body>
    
    <h1>Introduction to NetBeans IDE 6.5</h1>
    
    <table><tr><td class="valign-top">
          
          <p>
            In this screencast, 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.
          </p>
          <p>
            This tutorial is part of the <a href="../intro-screencasts.html">Guided Video Tour of NetBeans IDE 6.5</a>.
          </p>
          
          <p>Author: Sridhar Reddy<br />
            Time: 14:21<br />
            <a href="http://mediacast.sun.com/users/sridharpreddy/media/IntroToNB65_sml.flv">Download</a> [66.5 MB]
          </p>
          <h2>Related links</h2>
          <ul>
            <li><a href="http://java.sun.com/developer/onlineTraining/">Java Online Training</a>
            <li><a href="http://java.sun.com/javase/6/docs/">Java SE Documentation</a>
            <li><a href="https://netbeans.org/kb/index.html">NetBeans IDE Tutorials</a>
            <li><a href="http://java.sun.com/javase/">Java SE Overview</a>
            <li><a href="http://developers.sun.com/events/techdays/">Sun Tech Days</a>
          </ul>
          <div class="feedback-box" style="float:left">
            <a href="/about/contact_form.html?to=3&subject=Feedback: NB 6.5 intro screencast">Send Feedback on This Tutorial</a>
          </div>
          <br style="clear:both;">
        </td><td width="425" class="valign-top" class="align-center">
          
          <!-- <object width="480" height="376"><param name="movie" value="http://mediacast.sun.com/flash/jw-flv-player/mediaplayer.swf?width=480&height=360&autostart=false&type=flv&file=http%3A%2F%2Fmediacast.sun.com%2Fusers%2Fsridharpreddy%2Fmedia%2FIntroToNB65_sml.flv"/><param name="allowFullScreen" value="true"/><embed src="http://mediacast.sun.com/flash/jw-flv-player/mediaplayer.swf?width=480&height=360&autostart=false&type=flv&file=http%3A%2F%2Fmediacast.sun.com%2Fusers%2Fsridharpreddy%2Fmedia%2FIntroToNB65_sml.flv" type="application/x-shockwave-flash" allowfullscreen="true" width="480" height="376"></embed></object> -->
          
          <div id="videoPlayer"></div>
          <script type="text/javascript" src="http://www.netbeans.tv/js/swfobject.js"></script>
          <script type="text/javascript">
            <!--
            var so = new SWFObject("http://www.netbeans.tv/images/playerWidget.swf" , "pv", "410", "331", "8", "#666666");
            so.addParam("quality", "high");
            so.addParam("allowScriptAccess", "sameDomain");
            so.addParam("allowFullScreen", "true");
            so.addVariable("autoPlay", "false");
            so.addVariable("urlFileIdList", "6756");
            so.addVariable("show_title", "true");
            so.addVariable("PLAY_CALLBACK","emphasize");
            so.addVariable("resizeLimitMax","true");
            so.addVariable("lang", "en");
            so.addVariable("flash_play","true");
            so.addVariable("author_name","NetBeans.tv");
            so.addVariable("configUrl","http://sun.ora.ma/config.sun.ora.ma.xml");
            so.write("videoPlayer");
            // -->
          </script> 
          
          
      </td></tr>
    </table>
    
  </body>
</html>
