quarta-feira, 22 de agosto de 2012

Engenharia de Software - Apresentação

Apresentação realizada na faculdade UNASP para a turma do 5º Semestre de Ciências da Computação e 4º Semestre Analise de Sistemas Visão geral de Engenharia de Software, Aula aplicada no dia 27/04/2011

terça-feira, 21 de agosto de 2012

Plataformas Java




JSE
A Plataforma JSE ou Java Standart Edition é a plataforma padrão para o desenvolvimento, basicamente quem está aprendendo deverá baixar esta Plataforma.

JEE
A Plataforma JEE ou Java Enterprise Edition é a versão da Plataforma focado em desenvolvimento “Enterprise”, ou seja Sites, acesso a Banco de Dados, Gestão de Componentes,  normalmente não é necessário fazer download desta versão, pois normalmente se utiliza este junto com um servidor de aplicação que sempre possui uma versão do JEE implementad.

JME
A Plataforma focada em dispositivos limitados, aqui você encontrará as ferramentas necessárias para programar em Celulares, Chips, e qualquer dispositivo com poucos recursos de memória e processador, normalmente estes dispositivos possuem uma Virtual Machine executando em sua ROM.


E as J2EE ou J2SE que tanto se falava? 

Na verdade são os mesmos JSE e JEE que falamos hoje, estas porem a partir da versão 5 do Java, ou foi retirado da nomenclatura o numero 2. Este numero 2 se referia a qualquer versão do Java posterior a versão 1, pois a versão 1 do Java é muito diferente das versões posteriores.
Outro detalhe interessante é que não existe versão 2, 3 ou 4 do Java, na verdade o que existiu foram as versões 1.0 e 1.1 que são as versões 1 do Java a partir daí surgiram as versões 1.2, 1.3 e 1.4, estas verões perduraram por quase 8 anos no mercado, só então surgiu a versão 5 que na verdade seria a versão 1.5
No momento em que escrevo este post estamos trabalhando na versão 1.7.6 ou seja versão 7 update 6

O que é o JAVA?



O que é o Java?
Java é uma das mais utilizadas plataforma e linguagem de desenvolvimento de software

O Java é de que empresa?
O Java foi uma iniciativa da SUN um grande empresa que em um determinado momento de crise econômica mundial foi comprada pela Oracle, hoje a Oracle mantêm o  desenvolvimento do Java, porem diferente dos concorrentes o Java tem uma filosofia semi aberta, onde a comunidade é quem realmente mantem a linguagem.
Para que a Linguagem seja mantida pela comunidade, foi criado um grupo denominado JCP que nada mais é do que um grupo de especialistas das maiores empresas (Oracle, IBM, HP) que sugerem as melhorias e validam como ela será implementada.

Java é de Graça?
Sim o Java é de graça, qualquer um pode fazer download do Java direto no Site da Oracle. Existem iniciativas de versões do Java open-sources porem até hoje a melhor versão e mais completa e confiável ainda é a da Oracle.

Java é a Mesa coisa que JavaScript?
Não, Java é uma linguagem multiplataforma compilada e executada por uma Virtual Machine, em quanto que o Javascript é outra linguagem que é Interpretada e executada basicamente pelos Navegadores.

O que é uma Virtual Machine?
Uma das vantagens do Java é o fato de ser mult-plataforma, bem, mas o que é ser multi-plataforma? É simples, você desenvolve um programa em Java, e ele poderá ser executado no Windows, no Linux, no Mac e em qualquer plataforma. Mas para que esta mágica funcione, é necessário que seja instalado na máquina um software chamado Virtual Machine. Que nada mais é do que uma camada intermediária na arquitetura onde o seu software irá conversar com a Virtual Machine e a Virtual Machine irá conversar com o Computador.

Java é Lento? A Virtual Machine causa lentidão?
Não, atualmente Java é comparado com a linguagem C,  uma das mais rápidas linguagens de programação, sim a Virtual Machine nas primeiras versões do Java interferia, porem com a tecnologia atual, esta diferença é praticamente imperceptível, isso graças a tecnologia de HotSpots que transformam o código Java em código que máquina, mas em 90% isso será transparente para o programador.

O que é Orientação a Objetos.
Orientação a Objetos é um paradigma da programação, ou seja, é a estrutura como a programação deve seguir, neste paradigma é possível criar varias classes representando um mundo real, separando o código em pequenos trechos, isso auxilia na manutenção, correção e crescimento do software, outras características da Orientação a Objetos são Herança, Polimorfismo, Encapsulamento, entre outros, mas isso é assunto para outro tópico.

segunda-feira, 20 de agosto de 2012

Padrão de Texto Mime


Quando estamos lendo e-mail com javamail, se neste e-mail tem acentos ou caracteres especiais é comum se deparar com formatos parecidos com este:

=?UTF-8?arquivo.XLSX?=

este padrão é o padrão Mime para texto com caracteres especiais onde o que estrá entre =? e o primeiro ? é o padrão do encode utilizado.

para reverter este padrão em algo que nós, mortais, conseguimos ler, podemos utilizar uma classe do próprio javamail.

MimeUtility


System.out.println(MimeUtility.decodeText("=?UTF-8?arquivo.XLSX?="));


a linha acima deve imprimir no console

arquivo.XSLX

segunda-feira, 14 de maio de 2012

Enviar EMail do GMAIL com JavaMail

Muitas aplicações hoje em dia necessitam enviar e-mail, utilizar o gmail é uma alternativa barata para isso, 

porem a conexão com gmail é feito atravez de SSL ou seja é feito atravez de uma conexão segura, conexão segura, então para se conectar deve ser utilizado uma conexão segura.

Utilizando JavaMail, o codigo para conexão é o seguinte:

private void connect() {

  Properties props = new Properties();

  props.put("mail.smtp.auth", "true");

  props.put("mail.smtp.starttls.enable", "true");

  props.put("mail.smtp.host", "smtp.gmail.com");

  props.put("mail.smtp.port", "465");

  session = Session.getInstance(props, new javax.mail.Authenticator() {

    protected PasswordAuthentication getPasswordAuthentication() {

       return new PasswordAuthentication("contaemail@ gmail.com", "senhanogmail")

    }

   });

}

Para montar a mensagem que será utilizada para envar há várias formas, estou utilizando MultiPart por dois motivos
  1. para que o conteudo possa ser um HTML
  2. para que possa posteriormente enviar anexos no e-mail.

note que onde é informado o texto é informado também que o email é html e que ele utiliza chartset = ISO-8859-1, isso faz com que o e-mail reconheça acentos utilizado em portugues.

private void enviarMenssagem(String para, String assunto, 
String texto) throws Exception{

  Message message = new MimeMessage(session);

  message.setFrom(new InternetAddress(this.usuario));

  message.setRecipients(Message.RecipientType.TO,  
      InternetAddress.parse(para));

  message.setSubject(assunto);

  BodyPart messageBodyPart = new MimeBodyPart();

  messageBodyPart.setContent(texto, "text/html; charset=ISO-8859-1");

  Multipart multipart = new MimeMultipart();

  multipart.addBodyPart(messageBodyPart);

  message.setContent(multipart );

  Transport.send(message);

}