<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-->

<html>
<head>
        <title>Vídeo Configurando o NetBeans IDE para Desenvolvimento Móvel no Windows</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css"> 
        <meta name="description" content="This screencast demonstrates how to set up NetBeans IDE for mobile development on  Windows operating system.">
</head>
<body>
    

<h1>Vídeo Configurando o NetBeans IDE para Desenvolvimento Móvel no Windows</h1>

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

<p>Este screencast demonstra o suporte para o Java ME SDK no NetBeans IDE. Este screencast mostra como ativar os plug-ins Java ME e registrar o SDK de Java ME no NetBeans IDE. </p>
<P>Autora: Alyona Stashkova <br> Hora: 4:22 </p>
 <p><a href="http://bits.netbeans.org/media/nb_mesdk.mp4">Veja em tela cheia/Download</a> (.mp4) (Ctrl-Clique para fazer o download, 6,5 MB)</p>

 <div class="feedback-box"><a href="/about/contact_form.html?to=6&amp;subject=Feedback:%20Screencast%20-%20Setting%20up%20NetBeans%20IDE%20for%20Mobile%20Development%20on%20Windows">Envie-nos Seu Feedback</a></div>


 <br style="clear:both;">
    </td>

                <td width="5">&nbsp; </td>
      <td class="valign-top" width="486">
   <script src="/images_www/js/mediaplayer-5.2/swfobject.js" type="text/javascript"></script>
    <div id="player" >
        <center>
	    <div id="flashContent"></div>
        </center>
    </div>
    <script type="text/javascript">
	$(function(){
	    var targetFile='http://bits.netbeans.org/media/nb_mesdk.mp4';
            var s1 = new SWFObject('/images_www/js/mediaplayer-5.2/player.swf','player','530','340','9');
            s1.addParam('allowfullscreen','true');
            s1.addParam('allowscriptaccess','always');
            s1.addParam('flashvars','file='+targetFile+'&autostart=true');
            s1.write('flashContent');
	});
    </script>
 
  </td>
  </tr>
        </table>
        <h2>Links relacionados</h2>

        <ul>
            <li><a href="https://netbeans.org/kb/trails/mobility.html">Trilha de Tecnologia de Aplicações Java ME e Java Card</a></li>
			<li><a href="http://wiki.netbeans.org/JavaMESDKSupport">Perguntas Frequentes sobre Java ME SDK Support no NetBeans IDE</a></li>
			<li><a href="http://docs.oracle.com/javame/developer/developer.html">Documentação das Ferramentas do Desenvolvedor Java ME</a></li>
			<li><a href="http://www.oracle.com/technetwork/java/javame/javamobile/download/overview/index.html">Visão Geral do Download do Java Mobile</a></li>
			<li><a href="https://blogs.oracle.com/javamesdk/">Blog da Equipe do Java ME SDK</a></li>
	    </ul>

</body>
</html>
