Mostrando postagens com marcador Java. Mostrar todas as postagens
Mostrando postagens com marcador Java. Mostrar todas as postagens

Envio de e-mail utilizando JavaMail

Olá, amigos! Estive desenvolvendo uma aplicação e me deparei com o problema de enviar e-mail utilizando o JavaMail. Há bastante material na internet mas é muito complicado encontrar algum que explique passo a passo, de forma visual e didática, como utilizar o JavaMail em sua aplicação.


Assim, hoje vou apresentar a vocês um exemplo de como enviar e-mail utilizando a API JavaMail. Neste exemplo em especial eu utilizarei o servidor de e-mails do GMail.

Antes de abordar o exemplo com JavaMail, é interessante aprendermos um pouco sobre esta API, sobre a Arquitetura de Sistemas de e-mail e os protocolos envolvidos nessa arquitetura.

O que é JavaMail?

O JavaMail oferece uma API independente de plataforma e independente de protocolo para criar mensagens de correio e aplicações. A API JavaMail está disponível como um pacote opcional para uso com a plataforma Java SE e está também incluída na plataforma Java EE.

Esta API possui implementações para alguns dos protocolos mais populares para envio e recebimento de e-mails e fornece um forma bem fácil de usá-los.

Embora o JavaMail seja uma das APIs da Sun, ela não é incluída nos downloads do SDK. Dessa forma, você deverá obter os arquivos da API JavaMail, e integrá-los à sua aplicação.

Onde obter os arquivos?

Os arquivos da API podem ser baixados do site da Sun. Neste nosso exemplo eu utilizarei o JavaMail API 1.4.2 Release e o JavaBeans Activation Framework (JAF).

É importante ressaltar que sem o JAF o JavaMail não funcionará.

Quando você baixar os arquivos do site da Sun, eles virão compactados em um .zip. Dentro do .zip há dois arquivos importantes que utilizaremos neste exemplo: mail.jar e activation.jar.

A Sessão

A Sessão possui dois papéis importantes:
  • guardar propriedades acessíveis via construtores
  • oferecer métodos de fábrica para objetos Store e Transport

Temos dois tipos de objetos Session:

  • Session session = Session.getDefaultInstance(props)
  • Session session Session.getInstance(props)

Os autenticadores são passados como parâmetro nos métodos getInstance()

public class MyAuthenticator extends Authenticator {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("scott", "tiger");
}
}
(...)
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, new MyAuthenticator());

As Mensagens

As mensagens são encapsuladas na classe abstrata Message, que possui:
  • Conjunto de cabeçalhos RFC822 (Headers)
  • Conteúdo (javax.activation.DataHandler)

Há métodos get/set para conteúdo e cabeçalhos.

O JavaMail traz uma implementação da classe abstrata Message: MimeMessage

Message msg = new MimeMessage(session);

Destinos e origens são definidos em objetos do tipo Address e adicionados nos cabeçalhos To e From

msg.setFrom(new InternetAddress("fulanodestino.org"));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(recv, false));
msg.setSubject("JavaMail Test Message");
msg.setHeader("X-Mailer", "My Simple JavaMail Client");
msg.setText("This is the sample message text");

Envio de Mensagens

Depois de criada a mensagem, basta passá-la para um meio de transporte para enviá-la. A forma mais simples de fazer é passar para o método (estático) send(), de javax.mail.Transport.

Transport.send(msg);


Pode-se também controlar o tipo de transporte usado (de acordo com o protocolo)

Transport smtp = session.getTransport("smtp");

smtp.send(msg);

Transport nntp = session.getTransport("nntp");

nntp.send(msg);


Protocolos Envolvidos em uma Arquitetura de Sistemas de E-mail

Neste artigo discutiremos três protocolos para envio e recebimento de e-mails: SMTP, POP3 e IMAP.

Estes protocolos fazem parte da camada de aplicação de uma rede de computadores.

O termo camada de aplicação é um termo utilizado em redes de computadores para designar a sétima camada do modelo OSI (Open Systems Interconnection - Interconexão de Sistemas Abertos). É responsável por prover serviços para aplicações de modo a abstrair a existência de comunicação em rede entre processos de diferentes computadores. Também é a camada número quatro do modelo TCP/IP que engloba também as camadas de apresentação e sessão no modelo OSI.


Protocolo SMTP

SMTP é a sigla para Simple Mail Transfer Protocol (Protocolo de Transferência de Correio Simples) e está definido na RFC 2821.

Ele é usado na comunicação direta entre servidores de correio e para o envio de mensagens a partir do seu software cliente de e-mail. O SMTP é um protocolo de "uma via" - isto é, as mensagens podem ser enviadas ou recebidas pelo servidor de correio, mas não é possível obter as mensagens em qualquer outro servidor de correio com o uso deste protocolo.

Para isso, é necessário um cliente de email com suporte ao protocolo POP3 ou IMAP.


Protocolo POP3

POP3 é a sigla para Post Office Protocol e está definido na RFC 1225. O número "3" significa que é a terceira revisão da norma.

Este protocolo é utilizado no acesso remoto a uma caixa de correio eletrônico e permite que todas as mensagens contidas em uma caixa de correio eletrônico possam ser transferidas sequencialmente para um computador local.


Protocolo IMAP

IMAP é a sigla para Internet Message Access Protocol e está definido na RFC 3501.

Ele é um protocolo de gerenciamento de correio eletrônico superior em recursos ao POP3 - protocolo que a maioria dos provedores oferece aos seus assinantes. A última versão é o IMAP4.

O mais interessante é que as mensagens ficam armazenadas no servidor e o internauta pode ter acesso a suas pastas e mensagens em qualquer computador, tanto por webmail como por cliente de correio eletrônico (como o Outlook Express ou o Evolution). Outra vantagem deste protocolo é o compartilhamento de caixas postais entre usuários membros de um grupo de trabalho. Além disso, é possível efetuar pesquisas por mensagens diretamente no servidor, utilizando palavras-chaves.

Assim, podemos ilustrar a Arquitetura de Sistemas de E-mail com a seguinte Figura:



Há alguns artigos no iMasters que podem ajudar a entender melhor esses protocolos:

O modelo OSI e suas sete camadas

IMAP4 e POP3 - qual a melhor solução?


O Exemplo!

Neste exemplo, vamos usar uma aplicação web e realizar o envio através de uma página .jsp. Então, vamos lá!


Primeira Etapa - Criando uma aplicação web no NetBeans

  • Abra o seu NetBeans;
  • Vá em File > New Project;

A tela exibida será a seguinte:

  • Selecione em Categories a categoria Web e em Projetcs, Web Application.
  • Nomeie o seu Projeto, no meu caso ProjetoEmail.
  • Selecione como Server o Apache Tomcat.
  • Clique em Finish.

Segunda Etapa - Importação dos arquivos para a aplicação

Vamos então importar os arquivos do JavaMail à aplicação antes de criar a classe.

  • Clique com o botão direito na pasta Libraries de seu Projeto
  • Selecione Add JAR/Folder...
  • Encontre, um por vez, os arquivos mail.jar e activation.jar
  • Lembre-se, basta descompactar a pasta baixada do site da Sun!

Terceira Etapa - Criando a Classe de E-mail

  • Vá na pasta Source Packages de seu Projeto
  • Clique com o botão direito
  • Crie um novo Java Package chamado com.projetoemail.email

Dentro do pacote criado, crie uma classe java chamada SendMail e insira o código abaixo:

package com.projetoemail.email;

import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;


//clase que retorna uma autenticacao para ser enviada e verificada pelo servidor smtp
public class SendMail {

private String mailSMTPServer;
private String mailSMTPServerPort;

/*
* quando instanciar um Objeto ja sera atribuido o servidor SMTP do GMAIL
* e a porta usada por ele
*/
public SendMail () { //Para o GMAIL
mailSMTPServer = "smtp.gmail.com";
mailSMTPServerPort = "465";
}
/*
* caso queira mudar o servidor e a porta, so enviar para o contrutor
* os valor como string
*/
public SendMail (String mailSMTPServer, String mailSMTPServerPort) { //Para outro Servidor
this.mailSMTPServer = mailSMTPServer;
this.mailSMTPServerPort = mailSMTPServerPort;
}

public void sendMail(String from, String to, String subject, String message) {

Properties props = new Properties();

// quem estiver utilizando um SERVIDOR PROXY descomente essa parte e atribua as propriedades do SERVIDOR PROXY utilizado
/*
props.setProperty("proxySet","true");
props.setProperty("socksProxyHost","192.168.155.1"); // IP do Servidor Proxy
props.setProperty("socksProxyPort","1080"); // Porta do servidor Proxy
*/

props.put("mail.transport.protocol", "smtp"); //define protocolo de envio como SMTP
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host", mailSMTPServer); //server SMTP do GMAIL
props.put("mail.smtp.auth", "true"); //ativa autenticacao
props.put("mail.smtp.user", from); //usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)
props.put("mail.debug", "true");
props.put("mail.smtp.port", mailSMTPServerPort); //porta
props.put("mail.smtp.socketFactory.port", mailSMTPServerPort); //mesma porta para o socket
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");

//Cria um autenticador que sera usado a seguir
SimpleAuth auth = null;
auth = new SimpleAuth ("seu_emailgmail.com","sua_senha");

//Session - objeto que ira realizar a conexão com o servidor
/*Como há necessidade de autenticação é criada uma autenticacao que
* é responsavel por solicitar e retornar o usuário e senha para
* autenticação */
Session session = Session.getDefaultInstance(props, auth);
session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email

//Objeto que contém a mensagem
Message msg = new MimeMessage(session);

try {
//Setando o destinatário
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
//Setando a origem do email
msg.setFrom(new InternetAddress(from));
//Setando o assunto
msg.setSubject(subject);
//Setando o conteúdo/corpo do email
msg.setContent(message,"text/plain");

} catch (Exception e) {
System.out.println(">> Erro: Completar Mensagem");
e.printStackTrace();
}

//Objeto encarregado de enviar os dados para o email
Transport tr;
try {
tr = session.getTransport("smtp"); //define smtp para transporte
/*
* 1 - define o servidor smtp
* 2 - seu nome de usuario do gmail
* 3 - sua senha do gmail
*/
tr.connect(mailSMTPServer, "seu_emailgmail.com", "sua_senha");
msg.saveChanges(); // don't forget this
//envio da mensagem
tr.sendMessage(msg, msg.getAllRecipients());
tr.close();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(">> Erro: Envio Mensagem");
e.printStackTrace();
}

}
}
class SimpleAuth extends Authenticator {
public String username = null;
public String password = null;


public SimpleAuth(String user, String pwd) {
username = user;
password = pwd;
}

protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication (username,password);
}
}

Há dois lugares desta classe que você precisará colocar o seu usuário e sua senha do GMail.

Nestes dois lugares eu coloquei "seu_emailgmail.com" e "sua_senha".


Quarta Etapa - Criando o arquivo JSP

Vá na pasta Web Pages e edite o arquivo index.jsp, ou crie um outro arquivo, com o seguinte código:


< page import="com.projetoemail.email.*" >
<
SendMail mail = new SendMail();

try {
mail.sendMail("seu_emailgmail.com", "email_destinodestino.com.br", "TESTE JAVAMAIL", "TESTE");
} catch (Exception e) {
e.printStackTrace();
}
>


Está Pronto!

A partir de agora você consegue enviar e-mail via aplicação acessando o seu GMail.

Até breve!


Veja este artigo no iMaters

Leia Mais…

Validação de Formulários no NetBeans com Struts

Olá, amigos! Este é o meu primeiro artigo no iMasters e espero que seja o primeiro de muitos! Estudo Java há alguns anos e pretendo ajudar a comunidade de desenvolvedores com artigos como este.
Hoje vou apresentar a vocês um exemplo de validação de formulários em páginas JSP com o auxílio do Framework Struts.

Todos sabem que a validação de formulários é algo primordial para a manutenção da "saúde" de qualquer aplicação. Neste caso, em especial, uma aplicação web. Sem qualquer tipo de validação, você poderá ter inconsistências em seu banco de dados com informações inseridas de forma incorreta pelos usuários.

O Struts implementa o padrão MVC (Model-View-Controller) fazendo com que sua regra de negócio fique separada da parte visual de sua aplicação. Se quiser saber um pouco mais sobre Struts antes de prosseguir, leia esta matéria publicada aqui no iMasters.

Então, vamos ao que interessa: o exemplo! Para quem é iniciante em Java e/ou não conhece o NetBeans, vou prosseguir com o artigo passo a passo com as telas apresentadas pela IDE.

Primeira Etapa - Criando uma aplicação web no NetBeans

  • Abra o seu NetBeans;
  • Vá em File > New Project;

A tela exibida será a seguinte:


  • Selecione em Categories a categoria Web e em Projetcs, Web Application.

Na tela seguinte você irá inserir um nome para o seu Projeto e a pasta em que ele será salvo. Vou chamar o meu de ProjetoStruts.

Acompanhe os passos até chegar ao quarto passo de criação conforme tela abaixo:

Nesta tela você selecionará os Frameworks que serão utilizados na aplicação:

  • Selecione o Framework Struts.
  • Altere em Application Resource o nome do package inserindo o nome de seu Projeto no lugar de myapp. No meu caso ficou: com.projetostruts.struts.ApplicationResource
  • Finalize a criação.


Segunda Etapa - Criação do formulário

Antes de qualquer coisa, você deve ter percebido que foram criados dois arquivos em seu Projeto, dentro da pasta WEB-INF: index.jsp e welcomeStruts.jsp.

Se você rodar o seu Projeto pressionando a tecla F6, você observará no browser o funcionamento do Framework Struts.

Vamos então criar nosso formulário:

  • Abra o arquivo index.jsp
  • Edite o index.jsp para deixá-lo com o seguinte código:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

<html:html>
<head>
<title>Trabalhando com Struts</title>
<style>
.visualInputErro {
border: 1px solid #b22222;
font-family: Arial, Helvetica, sans-serif;
color: #666666;
background-color: #ffe4e1;
}
</style>

</head>
<body>
<html:form action="login">
<table border="0">
<thead>
<tr>

<th colspan="2"><html:errors property="status"/></th>
</tr>
</thead>
<tbody>
<tr>

<td><bean:message key="login.usuario" /></td>
<td><html:text property="usuario" errorStyleClass="visualInputErro"/></td>
</tr>
<tr>
<td><bean:message key="login.senha" /></td>

<td><html:password property="senha" errorStyleClass="visualInputErro"/></td>
</tr>
<tr>
<td colspan="2"><html:submit value="Login"/></td>
</tr>

</tbody>
</table>
</html:form>
</body>
</html:html>

Terceira Etapa - Criação das Ações

Vamos então criar as ações que validarão nosso formulário.

  • Clique com o botão direito sobre o seu projeto, selecione New > Struts ActionForm Bean:

  • Em Class Name digite: AcaoFormLogin
  • Ajuste o Package para com.projetostruts.struts
  • Neste arquivo você realizará a validação dos campos que virão do formulário. Edite o arquivo AcaoFormLogin.java conforme abaixo:
package com.projetostruts.struts;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
*
* @author Gustavo
*/
public class AcaoFormLogin extends org.apache.struts.action.ActionForm {

private String usuario;
private String senha;

public String getUsuario() {
return usuario;
}

public void setUsuario(String usuario) {
this.usuario = usuario;
}

public String getSenha() {
return senha;
}

public void setSenha(String senha) {
this.senha = senha;
}

public AcaoFormLogin() {
super();
// TODO Auto-generated constructor stub
}

@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
boolean flag = false;
if (getUsuario() == null || getUsuario().length() < 1) {
errors.add("usuario", new ActionMessage("error.usuario.required"));
if (flag == false) {
errors.add("status", new ActionMessage("error.status"));
flag = true;
}
}
if (getSenha() == null || getSenha().length() < 1) {
errors.add("senha", new ActionMessage("error.senha.required"));
if (flag == false) {
errors.add("status", new ActionMessage("error.status"));
flag = true;
}
}
return errors;
}
}

Vale ressaltar que neste arquivo a única validação que estou fazendo é se o campo é nulo ou se há algum texto digitado nele. Outras validações poderão ser implementadas de acordo com a necessidade.

Vá ao arquivo ApplicationResource.properties no package com.projetostruts.struts. No final do arquivo, insira o seguinte código:

login.usuario=Usuário
login.senha=Senha
error.usuario.required=O campo 'Usuário' deve ser preenchido
error.senha.required=O campos 'Senha' deve ser preenchido
error.status=Os campos destacados são de preenchimento obrigatório

Observe que este código descreve o retorno que será dado caso um dos erros tratados no arquivo AcaoFormLogin.java apareça. Neste exemplo, apesar de declarar as mensagens de erro para usuário e senha, eu destacarei o input que apresentou erro através do estilo .visualInputErro declarado no arquivo index.jsp.


Vamos então criar outro arquivo:

Clique com o botão direito sobre o pakage com.projetostruts.struts, selecione New > Struts Action.
  • Em Class Name digite: AcaoLogin

  • Ajuste o Package para com.projetostruts.struts

  • Em Action Path, digite: /login

  • Pressione next

  • Em Input Resource, localize o arquivo index.jsp

  • Em Scope, selecione request e finalize.

Neste arquivo que foi criado, AcaoLogin.java, você notará a palavra success. Eu costumo alterá-la para descrever melhor o tipo de sucesso que foi obtido. Então, altere para: successLogin

  • Encontre a pasta Configuration Files e abra o arquivo struts-config.xml

  • Encontre a seguinte linha de código:

<action input="/index.jsp" name="AcaoFormLogin" path="/login" scope="request" type="com.projetostruts.struts.AcaoLogin"/>

Altere-a e deixe conforme segue:


<action input="/index.jsp" name="AcaoFormLogin" path="/login" scope="request" type="com.projetostruts.struts.AcaoLogin">
<forward name="sucessLogin" path="/login"/>
</action>

Quarta Etapa - Criação do Servlet

Nesta etapa vamos criar o Servlet que será responsável por tratar os dados. Como o objetivo deste artigo é apenas demonstrar o funcionamento do Struts, o Servlet criado não executará nenhuma ação, apenas irá encaminhar para a página login.jsp a ser criada.

  • Crie um novo package denominado com.projetostruts.conexao

  • Crie nesse package um Selvlet chamado Login.java

  • Na tela de configuração do Servlet, ajuste a URL Pattern para: /login


No Servlet Login.java, localize o método processRequest e altere-o conforme abaixo:


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
response.sendRedirect("login.jsp");
} finally {
out.close();
}
}

Mais uma vez lembrando que este Servlet apenas redireciona para a página login.jsp.


Quinta Etapa - Criação do Destino

Nesta última etapa, vamos criar o arquivo destino que mostrará o sucesso da validação:

  • Clique com o botão direito na pasta Web Pages e crie um novo arquivo chamado login.jsp

  • Edite o arquivo conforme abaixo:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
</head>
<body>
<h2>Todos os campos foram preenchidos!!!</h2>

</body>
</html>

Está pronto! Esse é o conceito básico do Struts e espero que tenha ajudado. Já vi outras formas de realizar validações com struts mas ficará para um próximo artigo aqui no iMasters.

Então, até breve!

Veja este artigo no site iMasters!

Leia Mais…

Série Java: Passos para criação e execução de um aplicativo Java

Dando continuidade a nossa série, falaremos um pouco sobre o que acontece desde o processo de criação até a execução de um aplicativo Java.

A criação de uma aplicativo pode ser dividida em cinco etapas: edição, compilação, carregamento, verificação e execução. Vamos falar sobre cada uma dessas etapas:

1ª Etapa: Edição


Esta fase consiste em editar um arquivo com um programa editor de texto ou um IDE (Integrated Development Environment - Ambiente de Desenvolvimento Integrado), veremos algumas no nosso próximo tópico. Basta digitar o código-fonte de seu programa Java e salvar em disco com a extesão .java.

A vantagem de se utilizar um IDE é a quantidade de ferramentas que eles oferecem para o processo de desenvolvimento de software, desde editor de código fonte até depuradores em tempo real.

2ª Etapa: Compilação

O compilador do Java é o Javac. O compilador converte o código-fonte em bytecodes que serão interpretados pela Java Virtual Machine (JVM). Para compilarmos manualmente um arquivo chamado Teste.java, por exemplo, devemos digitar os seguintes comandos no prompt:

javac Teste.java

Se o arquivo for compilado e nenhum erro ocorrer, o arquivo Teste.class será gerado no mesmo diretório do arquivo Teste.java. O arquivo Teste.class contém os bytecodes resultantes da compilação. Para executar este arquivos devemos digitar:

java Teste

Perceba que não há a necessidade de digitar Teste.class

3ª Etapa: Carregamento

Para ser executado o arquivo deve ser carregado para a memória. Dessa forma, o carregador de classe entra em ação e transfere o arquivo .class para a memória.

4ª Etapa: Verificação

Nesta fase o verificador de bytecodes do Java examina os bytecodes do arquivo .class para assegurar que eles são válidos e não violam restrições de segurança do Java. O Java impõe uma forte segurança para que os arquivos não danifiquem o sistema.

5ª Etapa: Execução

Neste ponto a JVM entra novamente em ação realizando as operações especificadas no programa. Nas primeiras versões do Java a JVM apenas interpretava os códigos e realizava as operações, o que rendeu a fama de que o Java era mais lento que as demais linguagens.

Entretanto, as JVM atuais utilizam uma combinação de interpretação junto à execução dos bytecodes chamada compilação just-in-time (JIT). Este processo consiste na procura de hot spots (pontos ativos) no código - bytecodes utilizados com mais freqüência. Nestes pontos um compilador JIT - conherido como Java HotSpot - traduz os bytecodes em código de linguagem de máquina do computador subjacente. Quando essa parte do código é acessada novamente o código de linguagem de máquina mais rápido é executado.

Por enquanto é isso, no próximo tópico discutiremos sobre as IDEs.

Até lá

Leia Mais…

Série Java: IDEs

A primeira coisa que você deve procurar quando começar a estudar uma linguagem é um ambiente de desenvolvimento, ou seja, uma IDE. IDE é a sigla de Integrated Development Environment, traduzindo Ambiente Integrado de Desenvolvimento.

Logo que começei a ver Java na faculdade foi penoso... a Professora insistia em utilizar o notepad rs... Até que não é de todo inútil, pelo menos você se vê na necessidade de saber o que está acontecendo em seu código... Muitas vezes, nas IDEs de hoje, não se vê o código fonte... o simples "arrasta e solta", configura propriedades no panel ao lado e dá F6 pra rodar resolve muita coisa!

IDEs para Java são comuns e tem opções extremamente eficazes! Para citar, temos Eclipse, NetBeans, BlueJ, JBuilder, JDeveloper, JCreator, J...

A que eu mais utilizo é o NetBeans... Não é raro encontrar alguém apaixonado por Eclipse tentando te convencer que ele é melhor... Bom, instalei em minha máquina e até agora não consegui fazer coisas extraordinárias nele...

O Netbeans é desenvolvido pela Sun Microsystems.


O NetBeans IDE é um ambiente de desenvolvimento integrado gratuito e de código aberto para desenvolvedores de software. O IDE é executado em muitas plataformas, como Windows, Linux, Solaris e MacOS. É fácil de instalar e usar. O NetBeans IDE oferece aos desenvolvedores todas as ferramentas necessárias para criar aplicativos profissionais de desktop, empresariais, Web e móveis multiplataformas.

Atualmente está distribuído em diversos idiomas e isto tem o tornado cada vez mais popular, facilitando o acesso a iniciantes em programação e possibilitado o desenvolvimento de aplicativos multilíngüe.

Como o NetBeans IDE é escrito em Java, é independente de plataforma, funciona em qualquer sistema operacional que suporte a máquina virtual Java (JVM).

Alguns dos seus principais recursos são:

  • editor de código fonte integrado, rico em recursos para aplicações Web (Servlets e JSP, JSTL, EJBs) e aplicações visuais com Swing que é uma API (Interface de Programação de Aplicativos) Java para interfaces gráficas. A API Swing procura desenhar por contra própria todos os componentes, ao invés de delegar essa tarefa ao sistema operacional, como a maioria das outras APIs de interface gráfica trabalham;
  • visualizador de classes integrado ao de interfaces, que gera automaticamente o código dos componentes de forma bem organizada, facilitando assim o entendimento de programadores iniciantes;
  • suporte ao Java Enterprise Edition, plataforma de programação de computadores que faz parte da plataforma Java voltada para aplicações multicamadas, baseadas em componentes que são executados em um servidor de aplicações;
  • plugins para UML, Unified Modeling Language, linguagem de modelagem não proprietária de terceira geração, e desenvolvimento remoto em equipes; interface amigável com CVS ou Concurrent Version System (Sistema de Versões Concorrentes) é um sistema de controle de versão que permite que se trabalhe com diversas versões de arquivos organizados em um diretório e localizados local ou remotamente, mantendo-se suas versões antigas e os logs de quem e quando manipulou os arquivos;
  • CSS, algumas funcionalidades para editar folhas de estilos como destaques, recursos de auto-completar, análise de código;
  • help local e on-line; debug apurado de aplicações e componentes;
  • auto-completar avançado; total suporte ao ANT, ferramenta de automatização da construção de programas e TOMCAT, servidor de aplicações Java para web;
  • integração de módulos;
  • suporte a Database (banco de dados), Data view e Connection wizard que são os módulos embutidos na IDE; geração de Javadoc: a ferramente permite a geração automática de arquivos javadoc em HTML a partir dos comentários inseridos no código, além de recursos que facilitam a inclusão de comentários no código.
Bom pessoal, por enquanto é só sobre o NetBeans.

Abraço!

Leia Mais…

Série Java: Introdução

Bom galera, no post anterior eu disse que utilizaria este blog para divulgar mais sobre o que eu estudo... Pois bem, começaremos com Java!

Começei a estudar Java já tem dois anos... Aprofundei um pouco no final de 2006 quando fiz o curso Intensivo Academia do Java oferecido pela Globalcode! Aliás, aproveitando, um abraço para a Melissa e o Spock que são instrutores fantásticos! Desde então venho estudando pouco a pouco... Alguns já devem ter lido meu perfil e notaram que em breve estarei em um projeto que envolve Java e Oracle... Então, estou retomando os estudos com mais vigor ;)

Estou com a idéia de montar um mini-curso aqui no Blog... como não sei tudo sobre Java, me ajudará a aprender mais e a fixar o que já aprendi ;)

O material que irei me apoiar será basicamente os Livros do Deitel (Java: Como Programar) e Sierra & Bates (da Série Use a Cabeça! Java)... são ótimos livros!

Bom, como uma boa introdução, começaremos pela histótia daquilo que estudaremos, a história do Java!

Introdução

Tudo teve início em 1991 quando a Sun começou a financiar um projeto de pesquisa corporativa interna chamado Green. Esse projeto resultou em uma linguagem baseada em C++. O desenvolvedor desse projeto era James Gosling e "batizou" essa linguagem de Oak (carvalho) pois era possível observar uma árvore dessa espécie da janela do laboratório da Sun... O problema era que já havia uma linguagem com esse nome... Então, enquanto a equipe da Sun visitava uma cafeteria local onde tinha um café importado de um local chamado Java, o nome foi sugerido e acabou pegando... Daí o nome e o símbolo da xícara :b

Logo no início o projeto ía de mal a pior... corria o risco de ser cancelado... isso porque os dispositivos eletrônicos voltados para o consumo popular não estavam se desenvolvendo como a Sun havia planejado... Mas aconteceu algo inesperado que deu um novo sopro de vida ao projeto (filosófico não!? rs). Em 1993 a World Wide Web explodiu em popularidade e logo a Sun percebeu a potencialidade do Java para geração de conteúdo dinâmico.

Oficialmente o Java foi apresentado em maio de 1995 em uma conferência. Desde então vem sendo utilizado para o desenvolvimento de aplicativos de grande porte, para melhorias de funcionalidades em servidores Web, aplicativos para dispositivos móveis entre outros.

Principais Características

A linguagem Java foi projetada tendo em vista os seguintes objetivos:

Orientação a objeto - Baseado no modelo de Smalltalk e Simula67;
Portabilidade - Independência de plataforma - "write once run anywhere";
Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP;
Segurança - Pode executar programas via rede com restrições de execução;

Além disso, podem-se destacar outras vantagens apresentadas pela linguagem:

Sintaxe similar a Linguagem C/C++.
Facilidades de Internacionalização - Suporta nativamente caracteres Unicode;
Simplicidade na especificação, tanto da linguagem como do "ambiente" de execução (JVM);
É distribuída com um vasto conjunto de bibliotecas (ou APIs);
Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa);
Desalocação de memória automática por processo de coletor de lixo (garbage collector);
Carga Dinâmica de Código - Programas em Java são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização.

JVM (Java Virtual Machine)

A portabilidade de Java existe graças a JVM. A Máquina Virtual do Java funciona como um intermediador entre o código Java e o Sistema Operacional. Quando você compilar um código Java ele não será traduzido para linguagem de máquina, mas sim para bytecodes. Esses bytecodes são interpretados pela Virtual Machine e ela se encarrega em realizar a transformação em código de máquina para a comunicação com o Sistema Operacional que está por baixo. Contudo, lembre-se sempre Java é compilado e não interpretado!

Versões Java

J2SE - É uma ferramenta para desenvolvimento na plataforma Java composta pela JVM, o compilador Java (Javac) e as APIS.
J2ME - É uma tecnologia que possibilita o desenvolvimento de software para sistemas embarcados, ou seja, todo aquele que roda em um dispositivo de propósito específico. Essa é a plataforma para dispositivos móveis como celulares e PDAs
J2EE - uma plataforma de programação de computadores que faz parte da plataforma Java. Ela é voltada para aplicações multi-camadas, baseadas em componentes que são executados em um servidor de aplicações.

Bom, de início é isso... em breve veremos alguns códigos em Java!

Até mais,

Leia Mais…