conhecendo java
Post on 22-May-2015
6.356 Views
Preview:
DESCRIPTION
TRANSCRIPT
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)
top related