Conhecendo Java

Post on 22-May-2015

6.356 views 1 download

description

Apresentação da palestra Conhecendo Java na Faculdade de Juazeiro do Norte, em 30/11/07.

Transcript of Conhecendo Java

por Rafael Carneiro

rafael@cejug.org

Conhecendo o Java

30/11/2007

Agenda

A História O que é Java? JCP Prog. Orientada a

Objetos Arquitetura Java em todo lugar Como começar

Exemplos Produtividade Java e o Mercado Comunidades Futuro e

Tendências E agora?

Rafael Carneiro V. Batista Coordenador dos eventos Café com

Tapioca do CEJUG;

Coordenador do PortalJava;

Diretor comercial da Triadworks;

Desenvolvedor do projeto open-source CEJUG Classifieds;

30/11/2007

A História

Como Java nasceu… Patrick Naughton, engenheiro da Sun,

estava cansado e iria sair; Scott McNealy, CEO da Sun, pediu para

que ele escrevesse o que estava errado; Naughton não poupou palavras, mas achou

que não ia dar em nada; McNealy enviou a mensagem para outros e

Naughton recebeu uma enxurrada de mensagens de apoio, inclusive de Bill Joy (fundador da Sun) e James Gosling (seu mentor), que colocaram lenha na fogueira;

Como Java nasceu… A Sun, então, faz sua contra-proposta: cria

o projeto Green para desenvolver algo inovador;

Reclusos e sem contato com a Sun, os melhores desenvolvedores analisavam e debatiam sobre tecnologias existentes;

A sacada: como aparelhos eletrônicos (jogos, TVs, VCRs, etc.) poderiam comunicar-se uns com os outros?

Logo notaram que estes aparelhos todos possuem hardware diferente e limitado;

Como Java nasceu…

Começaram a desenvolver uma nova linguagem, batizada de Oak; Criada por James Gosling; Orientada a Objetos; Parecida com C++; Projetada para rodar em diferentes hardwares.

Desenvolveram, então, um controle remoto interativo para receptores de TV a cabo, chamado “*7”.

Como Java nasceu… Depois de 18 meses, a Sun transforma o projeto

Green em uma empresa, chamada “First Person”e tira o time da reclusão;

A empresa tinha uma boa idéia, mas não tinha mercado;

Em 1993 foi lançado o Mosaic, primeiro navegador para a World Wide Web;

O projeto muda de rumo e aposta no sucesso da Internet, que se encaixava perfeitamente com as idéias do grupo;

A nova idéia era criar um sistema para permitir o uso de multimídia na Web;

Enfim, Java A linguagem Oak se tornaria o produto.

Naughton sugere que seja distribuída gratuitamente na web;

O time desenvolve o navegador WebRunner, mais tarde HotJava Browser. Nascem as Applets;

Sun concorda em disponibilizar Oak, mas antes troca seu nome para Java (outros mais cotados: Neon, Lyric, Pepper e Silk);

A Netscape anuncia seu novo navegador com suporte a Java e a tecnologia dispara;

Java hoje Java fez 10 anos em 2005; Evolução:

Java 1.0a; Java Development Kit 1.1; Java 2 Platform 1.2; Java 2 Platform 1.3; Java 2 Platform 1.4; Java 2 Platform 5.0 (Tiger); Java 6 (Mustang) Próxima: Java 7 (Dolphin).

30/11/2007

O que é Java?

O que é Java?

Java é... Um software? Uma tecnologia? Uma linguagem de programação? Uma plataforma de desenvolvimento? Uma ilha da Indonésia? Um ator?

Jawa

Java Mayan (Malhação)?

JavaScript?

Java é tudo isso

Simples, orientada a objetos; Independente de plataforma (WORA); Portável, baseada no poder das redes; Versátil, dinâmica, robusta e segura; Gratuita; Fácil de usar e desenvolver; Popular e rodeada por uma comunidade

vibrante!

Java é…

Orientada a objetos; Híbrida (compilada e interpretada); Semelhante a C/C++, mas:

É mais simples e tão poderosa quanto*: não tem ponteiro, #define, .h, etc.

É independente de plataforma; É mais robusta e segura: coletor de lixo,

exceções, verificação de tipos, checagem de integridade, suporte nativo a threads.

* Exceto por herança múltipla, que Java não tem (mas é possível simular).

30/11/2007

Java Community Process

Java é software?

Java é uma EspecificaçãoThe Java Language Specification Especifica a linguagem de programação Java, sintática e semanticamente, descrevendo todos os seus aspectos.

Pode ser comprada como livro ou baixada gratuitamente: http://java.sun.com/docs/books/jls/.

The Java Virtual Machine SpecificationEspecifica como uma máquina virtual Java funciona.

Pode ser comprada como livro ou baixada gratuitamente:http://java.sun.com/docs/books/vmspec/.

Porque uma especificação?

Organizações podem criar suas próprias versões de Java;

Todas elas serão compatíveis, pois devem passar por um teste;

Você não fica preso a um fornecedor de software.

Quem faz a especificação?

No início, quem criou Java foi a Sun; A partir de 1998, foi criado o Java

Community Process (www.jcp.org): O JCP é um processo aberto e

participativo de desenvolvimento e revisão das especificações Java;

A Sun possui grande influência (Executive Comitee), mas não domina o JCP.

Quem participa do JCP Mais de 900 pessoas, empresas e

organizações sem fins lucrativos; Empresas desenvolvedoras: Apple, BEA, IBM,

JBoss, Oracle, etc. Empresas usuárias: Boeing, Computer

Associates, Google, LG, MySQL, Motorola, PalmSoftware, PeopleSoft, Sony, Sybase, etc.

Pessoas: Bruno Souza, Michael Nascimento, Osvaldo Doederlein, etc.

Organizações: Apache Software Foundation, SouJava, etc.

Como participar

Assinando a JSPA (Java Specification Participation Agreement) e pagando a anuidade;

É possível colaborar sem ser membro, revisando e comentando especificações.

Anuidade JCP Anuidade W3C

Empresas US$ 5.000,00 Até US$63.500,00

Organizações US$ 2.000,00 US$ 6.350,00

Pessoas US$ 0,00 ---

E quem implementa o Java?

Muita gente: A Sun Microsystems (a mais usada); Não-livres: IBM, BEA, Apple, Microsoft, JET,

Blackdown, etc.; Livres: GNU GCJ/Classpath, Kaffe, etc.; Para fins de pesquisa: JNode, Jikes RVM, Sun

MVM, IBM CJVM, etc. Todas são compatíveis com a

especificação, você escolhe.

OpenSource ou Proprietária?

Java ERA uma especificação aberta, agora, Java é Open Source, sob a licença GPL v2;

A implementação da Sun do Java ME e Java SE já são Open Source, sob a licença GPL v2. Também se tornaram Open Source o NetBeans, Solaris, OpenSPARC e StarOffice. http://www.sun.com/software/opensource/java https://mobileandembedded.dev.java.net

Mitos

Java é lenta! As primeiras versões eram lentas, mas as novas

são até mais rápidas que C++. Não possui um ambiente RAD (like Visual Studio)!

Há muitas ferramentas de alta produtividade disponíveis, inclusive gratuitas.

JavaScript é uma derivação de Java! Não. Em comum elas só tem o nome e a

sintaxe. São duas linguagens diferentes.

Mitos

Java só serve para fazer Applets! Ledo engano. Java serve para fazer de

clientes desktop à aplicações enterprise, passando por dispositivos móveis.

Java é a melhor forma de fazer tudo! Bem que eu queria, mas não é. Java é

bastante versátil, mas não faz tudo.

Por que usar Java?

Precisa de mais motivos? Projetada para redes desde o começo –“The

network is the computer”; Alta aceitação e suporte da indústria; Muitas ferramentas disponíveis, várias delas

gratuitas e livres; Vasta documentação, fácil de aprender; Alta produtividade; Open Source; Etc, etc, etc.

30/11/2007

Programação Orientada a Objetos

Engenharia de Software

Desenvolver software não é uma arte; A Engenharia de Software busca

formalizar metodologias; Paradigmas regem as tarefas de

análise, projeto e codificação; Os mais conhecidos:

Paradigma Estruturado (ou Procedural); Paradigma Orientado a Objetos.

Java é Orientada a Objetos

Para desenvolver bem em Java é preciso saber os conceitos de OO;

Se não... Dificilmente conseguirá evoluir além de

programas bem simples; Será difícil entender outros programas e

outras pessoas entenderem o seu; Você estará perdendo tempo. Use C,

Pascal, etc. que são procedurais.

Orientação a Objetos

Análise, projeto e programação; Mapear o mundo real no mundo

computacional utilizando objetos; Abstração mais próxima do mundo

real do que o paradigma estruturado.

Conceitos

Abstração; Encapsulamento; Modularidade; Objetos; Classes; Ligações e

associações; Composição e

agregação;

Herança; Mensagens e

métodos; Persistência; Classes e operações

abstratas; Sobrecarga e

sobrescrita; Polimorfismo.

Abstração

Ignorar aspectos irrelevantes e concentrar nos principais;

Tipos: Abstração de dados; Abstração de procedimentos.

Encapsulamento

Separar os aspectos externos (o que faz) dos aspectos internos (como faz): Aspectos externos = interface, contrato; Aspectos internos = implementação.

Modularidade

Decomposição do sistema em módulos: Coesos (baixo acoplamento); Autônomos; De interface simples e coerente.

Fundamental para o reuso.

Objetos

Conceito central deste paradigma; Entidades que incorporam abstrações

relevantes do problema; Um objeto tem três características

principais: Estado (estrutura); Comportamento; Identidade;

Classes

Objetos que possuem mesma estrutura e comportamento são de uma mesma classe;

Definimos classes, não objetos.

Ligações e Associações

Objetos relacionam-se entre si: Ligação: conexão entre objetos; Associação: conexão entre classes que

representa existência de ligações. Associações podem ter

cardinalidades.

09/10/2007

Composição e Agregação

Associações todo-parte; Objetos complexos são compostos de

objetos mais simples; Composição: as partes estão sempre

relacionadas ao todo; Agregação: as partes podem ser

decompostas.

Herança

Quando classes têm semelhanças podemos generalizá-las;

Hierarquias: Relações de

superclasse x subclasse;

“Filhos” herdam estrutura e comportamento dos “pais”.

Mensagens e Métodos

Objetos trocam mensagens para se comunicar (deve ser a única forma);

Métodos: operações que um objeto pode realizar.

Persistência

Capacidade do objeto de transcender o tempo e o espaço; Armazenamento em banco de dados; Transmissão pela rede.

Classes e operações abstratas

Classes abstratas não podem ser instanciadas;

Operações abstratas não possuem implementação;

Classe composta somente por operações abstratas = interface.

09/10/2007

Sobrecarga e sobrescrita

Sobrecarga: operações distintas com o mesmo nome;

Sobrescrita: subclasse define nova implementação para operação definida na superclasse.

09/10/2007

Polimorfismo

Habilidade de tomar várias formas.

30/11/2007

Arquitetura

Java é muita coisa

A Linguagem de programação Java; O ambiente de execução Java; O kit de desenvolvimento Java; Uma biblioteca de classes (API) Java.

Plataforma Java 2 Desde a versão 1.2 até a 1.5, passou a ser

chamada de “Java 2” e foi dividida em: Java 2 Platform Standard Edition (JavaSE); Java 2 Platform Enterprise Edition (JavaEE); Java 2 Platform Mobile Edition (JavaME).

Cada uma tem sua API; A JavaSE é base para as outras.

Novos ares

A partir da versão 6, tira-se o “2”: Java Platform, Standard Edition 6 ou

Java SE 6; Java Platform, Enterprise Edition 6 ou

Java EE 6; Java Platform, Mobile Edition 6 ou Java

ME 6. O “Java2” permanece na versão 1.5 e

anteriores.

Java Platform, Standard Edition

Ferramentas de desenvolvimento + API núcleo da plataforma Java; Permite o desenvolvimento de aplicações

desktop, inclusive com interface gráfica, acesso à banco de dados, I/O, rede, etc.

Dividida em: JDK = Java Development Kit; JRE = Java Runtime Environment.

Java Development Kit

Somente para os programadores; Contém:

Ferramentas de desenvolvimento; Ambiente de execução (JRE); API Java SE (compilada e código-fonte); Programas de demonstração; Bibliotecas adicionais; Documentação (obtida separadamente).

Java Runtime Environment

Necessária para rodar programas Java, pois além de compilada, Java também é interpretada;

É a única parte da plataforma Java que os clientes necessitam instalar;

Em alguns sistemas operacionais (ex. MacOS X) já vem instalada.

Implementação da Sun: ~ 15 MB.

Feramentas Disponíveis Compilador (javac); Interpretador (java); Gerador de documentação (javadoc); Depurador (jdb); Gerador de pacotes (jar); Outros:

Visualisador de applets (appletviewer); Criptografia (keytool, jarsigner, etc.); Etc.

Plataforma suportadas

A Sun dá suporte às seguintes plataformas: Windows i586 / AMD64; Linux i586 / AMD64; Solaris SPARC / x86 / x64.

A Apple desenvolveu versão para MacOS. Outras:

HP UX, FreeBSD, OS/2, AIX, AS/400, OS/390, IRIX, Alpha, SCO, NetWare, etc.;

Nem todas são atuais ou completas.

Write Once, Run Anywhere

Java é compilada e interpretada: 1. Códigos das classes são compilados

para uma linguagem intermediária chamada Bytecode;

2. O Bytecode é interpretado por uma “máquina virtual”: a JVM;

3. A JVM envia comandos específicos da plataforma para o sistema operacional.

Write Once, Run Anywhere

09/10/2007

Principais APIs

Principais APIs AWT/Swing: interfaces gráficas; Java2D: desenho; JDBC: acesso a bancos de dados; JNDI: acesso a servidores de nomes; RMI: invocação remota de métodos; Beans: padrão JavaBeans; i18n: suporte a internacionalização; I/O: entrada e saída (arquivos); JNI: integração com linguagens nativas; Math: cálculos matemáticos;

Principais APIs Networking: transmissão pela rede; Security: segurança; Serialization: persistência por serialização; XML: processamento de XML e afins; Lang & Util: núcleo da linguagem, utilitários

(coleções, datas, compactação, etc.); Concurrency: programação concorrente

(threads); Logging: funções de relatório (log); Reflection: reflexão e instrospecção.

Java Platform, Enterprise Edition

Permite o desenvolvimento de aplicações corporativas: Multi-camada, distribuídas, centradas em

servidores, altamente robustas, estáveis e escaláveis;

Inclui as especificações para desenvolvimento Web: Servlets, JSP, Web Services.

Servlets, JSP e EJBs

Servlets e JSPs: Componentes que respondem à requisições

web, usados para construir páginas dinâmicas e Web Services.

EJBs: Componentes gerenciados integrados a outras

tecnologias Java EE para prover acesso remoto, persistência e transações transparentes, processamento assíncrono, etc.

Outras tecnologias

Java EE não é só Servlets e EJB: RMI/IIOP e Java IDL: conectividade; JNDI: serviço de nomes; JAC e JNI: acesso a sistemas legados; JAAS: segurança; JTA: transações em bancos de dados; JMS e JavaMail: envio de mensagens; E tudo mais que já temos no J2SE...

Servidores Java EE

Ao contrário do Java SE, a implementação da Sun é só para referência;

Servidores web: Apache Tomcat, Caucho Resin, Jetty, etc.

Servidores de aplicação: BEA WebLogic, Borland Enterprise Server,

JBoss Application Server, Oracle Application Server, IBM WebSphere, etc.;

Java Platform, Mobile Edition

Permite o desenvolvimento de aplicações para dispositivos móveis: Telefones celulares; PDAs (Palm, iPaq, etc.); Dispositivos embarcados (embedded); Etc.

Java Card: aplicações para Smart Cards e outros dispositivos muito limitados.

Configurações Java ME

Atualmente são duas: CLDC: Connected Limited Device

Configuration; CDC: Connected Device Configuration.

Cada uma possui uma API diferente, dependendo da capacidade do dispositivo (limitada ou não).

30/11/2007

Java em todo lugar

Java está em todo lugar

09/10/2007

Applets

09/10/2007

Enterprise

09/10/2007

Móveis

09/10/2007

Desktop

09/10/2007

De ponta a ponta

30/11/2007

Como começar

Preparando o Ambiente

Fazer download do JDK E também da documentação

http://java.sun.com Escolha a versão do seu sistema

operacional.

Instalando

Windows Instalador padrão Microsoft, simplificado. Documentação compactada (zip).

Linux Algumas distros possuem pacote de

instalação e/ou repositórios. Documentação compactada.

Escrevendo Programas

Use uma IDE: Eclipse; NetBeans; JetBrains IntelliJ IDEA; Borland JBuilder; Etc.

Editores mais simples: JEdit; JCreator, etc.

30/11/2007

Exemplos e Produtividade

30/11/2007

Java e o Mercado

09/10/2007

Empresas

O mercado em números Informações do JavaOne:

900+ milhoes de micros rodando aplicacoes Java; 300 milhoes de downloads da Java desde junho de

2003; 12 milhoes de visitas por mes ao site java.com; 5 milhoes de desenvolvedores Java no mundo; 180.000 desenvolvedores registrados no site

java.net; 912 membros no JCP; 1++ bilhoes de celulares rodando Java no mundo;

O mercado em números

Informações do JavaOne: 635 modelos de celular no mundo com Java; 32 fabricantes de celulares Java no mundo; 140 operadoras de telefonia movel usando Java; 3 milhoes de downloads de JavaEE; 28 tipos diferentes de servidores Java; A e-Bay confia em Java para todas suas vendas

que ultrapassam US$ 1.400,00 por segundo!

O mercado em números Estimativa que Java movimenta US$ 100

bilhões / ano e vem crescendo; A Sun está em mais de 170 países e tem

uma receita anual de mais de US$ 18,3 bilhões;

100% das 500 maiores empresas (segundo a Fortune) usam Java;

A Sun mudou o seu nome na bolsa de valores de SUNW para JAVA;

O mercado em números

Segundo o Instituto Gartner: Java é a tecnologia escolhida pelas

empresas, 60% já usam, 22% planejam; Java e .NET terão 80% do mercado até

2008 (40% cada uma). Java x .NET:

Muita guerra de marketing e religião; Não há consenso de qual é superior.

09/10/2007

Mercado Brasileiro

Fonte: DFJUG

Mercado Brasileiro

Fonte: DFJUG

Mercado Brasileiro

Fonte: DFJUG

Mercado Brasileiro

Fonte: DFJUG

Mercado Brasileiro

5 milhões de desenvolvedores Java no Mundo. Estima-se 50 mil no Brasil

Empregos Oportunidade:

Muitas vagas surgindo; Poucos capacitados, poucos certificados; Bons salários.

No Ceará: Mercado em ótima fase de crescimento e

oportunidades;

Certificações A Sun cria provas para certificar

profissionais na plataforma Java; O instituto Thomson Prometric aplica a

prova em vários lugares do Brasil; No Ceará:

Evolução: http://www.evolucao.com.br Lanlink: http://www.lanlink.com.br

Profissional certificado possui reconhecimento no mercado;

Infelizmente não tem tanto efeito no salário;

As Certificações

30/11/2007

Comunidades

Java e OpenSource

Centenas de projetos no SourceForge: perde apenas para C/C++;

Primeiro lugar no FreshMeat; Java.net: 180.000 membros e mais de

1.500 projetos; Java-Source.net: projetos divididos em mais

de 50 categorias; Mais de 550 grupos de usuários no mundo.

Comunidades Virtuais

PortalJava (http://www.portaljava.com);

GUJ (http://www.guj.com.br); JavaFree (http://www.javafree.com.br); E muitos outros (google.com.br);

Como participar

O que podem fazer por você: Notícias; Artigos e tutoriais; Fóruns; Downloads e links; Eventos; Etc.

O que você pode fazer? Cadastrar-se; Participar

respondendo dúvidas;

Escrever artigos; Enviar notícias; Etc.

09/10/2007

Grupos de Usuário

CEJUG!

Atividades

Cursos; Grupos de estudo; Reuniões mensais; Palestras; Eventos; Etc.

Participe!

Revistas

30/11/2007

Futuro e Tendências

Tendências

JavaME – Aplicações para dispositivos móveis. Mercado em ampla expansão. Ajuda das empresas de celulares. Ainda não se sabe tudo que é possível

fazer.

Tendências AOP – Programação Orientada a Aspectos

Criada em 1997 pela Xerox; Tem sido a grande vedete em Java atualmente; Base de muitos frameworks importantes e

conhecidos; SOA – Arquitetura Orientada a Serviços

Montagem de aplicações com serviços compartilhados;

Não é tecnologia, framework ou software;

Tendências

Web 2.0 e AJAX Novo conceito para desenvolvimento de páginas

e sistemas web; Usuário em foco; Conteúdo criado por usuários para usuário; Necessidade de interfaces ricas e de alta

usabilidade;

Tendências

Profissonal Cuidado com a “novidade do mês” Mais que saber a linguagem, é preciso

saber a arquitetura e como elas se ligam.

30/11/2007

E agora?

Gostei, quero me aprofundar

Você está com sorte: Muitos livros (alguns até gratuitos); Muitos tutoriais (o da Sun é muito bom); Cursos; Portais; Grupos de usuários; Eventos;

Gostei, quero me aprofundar

Cuidado com o framework ou com a API da moda;

Defina um foco; Procure participar de projetos

liderados por outras pessoas. Ganhe experiência; Conheça novas técnicas;

Referências Empresas que promovem cursos:

http://www.caelum.com.br http://www.argonavis.com.br

Comunidades virtuais: http://www.portaljava.com http://www.guj.com.br

Grupos de usuários: http://www.soujava.org.br http://www.cejug.org

Materiais: Apostila Java Básico e Intermediário (Felipe Gaúcho) Apostilas Java Básico Caelum

That’s all folks Muito obrigado a todos;

Contatos: Rafael Carneiro V. Batista (Carneiro)

www.rafaelcarneiro.org rafael@portaljava.com | rafael@cejug.org

www.portaljava.com | www.cejug.org

30/11/2007

Agradecimentos FJN – Faculdade de Juazeiro do Norte

Paulo César M. Jeveaux (www.jeveaux.com)