Upload
lydieu
View
235
Download
0
Embed Size (px)
Citation preview
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 1
Iniciando no JavaIniciando no Java
Tutorial Básico Sobre Java
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 2
AGENDAAGENDA
Histórico
O que é um Framework
Edições do Java JEE, JSE, JME e
JavaCard
JUG, RSJUG, FUJA
Paradigmas
Java
Programação OOJUnit
Agile Manifesto
Hello World (Exemplo)
Visão Geral
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 3
Paradigmas de LinguagensParadigmas de Linguagens
ProgramaProgramaçção Lão Lóógica gica –– Planner/PrologPlanner/Prolog
ProgramaProgramaçção Funcional ão Funcional –– LispLisp
ProgramaProgramaçção Orientada a Objetos ão Orientada a Objetos –– JavaJava
ProgramaProgramaçção Procedural ão Procedural –– ClipperClipper
Orientação a Objetos
Em Em SmalltalkSmalltalk tudo tudo éé um Objetoum Objeto
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 4
HistHistóórico Javarico JavaGreen Project, pontapGreen Project, pontapéé inicial (1991)inicial (1991)
Mike Sheridan, James Gosling, Patrick NaughtonMike Sheridan, James Gosling, Patrick Naughton
ReformulaReformulaçção do projetoão do projetoProjeto certo na Projeto certo na éépoca errada !!poca errada !!
LanLanççamento oficial (amento oficial (23/05/199523/05/1995))James Gosling James Gosling -- SunWorldSunWorld 9595
Internet Explorer Internet Explorer Vs.Vs. NetscapeNetscape
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 5
19961996 Release do JDK 1.0;Release do JDK 1.0;Apresentado as tecnologias Servlet e JavaBeansApresentado as tecnologias Servlet e JavaBeans
no primeiro Java One;no primeiro Java One;Anunciado a API do Java Card;Anunciado a API do Java Card;
19971997 AnunciadooAnunciadoo o release do JSDK o release do JSDK (Java Servlet Developers kit)(Java Servlet Developers kit)
19981998 Inicio do projeto JSF/SWING;Inicio do projeto JSF/SWING;LanLanççamento do primeiro projeto Java Card (VISA);amento do primeiro projeto Java Card (VISA);Formalizado o Java Community Process (JCP);Formalizado o Java Community Process (JCP);
Histórico Java
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 6
19991999 Release do Java 2 Plataform;Release do Java 2 Plataform;Divisão da tecnologia em 3 EdiDivisão da tecnologia em 3 Ediçções (J2SE, J2EE, J2ME);ões (J2SE, J2EE, J2ME);
20002000 Release do J2SE V 1.3;Release do J2SE V 1.3;20012001 Anunciada a J2EE Connector Architecture;Anunciada a J2EE Connector Architecture;
Release do J2EE Patterns e da tecnologia Java web Start;Release do J2EE Patterns e da tecnologia Java web Start;Release do J2EE 1.3 beta( JSF 1.2 e Servlet 2.3);Release do J2EE 1.3 beta( JSF 1.2 e Servlet 2.3);
20022002 Release do J2SE V 1.4 beta;Release do J2SE V 1.4 beta;
2003200320042004 Release do Java 5.0;Release do Java 5.0;
20052005 1010°°AniversAniversáário da tecnologia ;rio da tecnologia ;JavaOne de nJavaOne de núúmero 10;mero 10;
Histórico Java
Release da Java Portlet API (PadronizaRelease da Java Portlet API (Padronizaçção dos portais);ão dos portais);
2006200620072007
LanLanççamento do JDK 1.5amento do JDK 1.5LanLanççamento do JDK 1.6 beta2 / OPENJDK (amento do JDK 1.6 beta2 / OPENJDK (GPLv.2GPLv.2))
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 7
Visão geral sobre o JavaVisão geral sobre o Java
Não possui aritmNão possui aritméética de ponteirostica de ponteiros
BytecodesBytecodes –– CCóódigo intermedidigo intermediáário (.rio (.classclass))
SoluSoluçção padrão JCP (ISO, ABNT, ANSI etc)ão padrão JCP (ISO, ABNT, ANSI etc)
Sintaxe parecida com CSintaxe parecida com C
VVáárias edirias ediçções: JEE, JSE e JMEões: JEE, JSE e JME
Java
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 8
Java
O QUE FAZ DO JAVA SERO QUE FAZ DO JAVA SERMULTIPLATAFORMA?MULTIPLATAFORMA?
CCÓÓDIGO FONTEDIGO FONTE(*.(*.javajava))
JAVAC.EXEJAVAC.EXE
JAVA.EXEJAVA.EXE
BYTECODEBYTECODE(*.(*.classclass))
MAQUINA VIRTUALMAQUINA VIRTUAL
WINDOWSWINDOWS LINUXLINUX
Iniciando no JavaIniciando no Java Java
Guilherme Elias / Rafael Bitello 9
JVMJVM““WORAWORA””
WRITE ONCE,WRITE ONCE,RUN ANYWHERERUN ANYWHERE
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 10
Como comeComo começçarar
Efetuar o download do JDKEfetuar o download do JDK
http://java.sun.com/j2se/1http://java.sun.com/j2se/1.5.0/download..5.0/download.jspjsp
Verificar a instalaVerificar a instalaçção (ão (javacjavac ––versionversion))
Instalar e configurar as variInstalar e configurar as variááveis de ambienteveis de ambiente
Usar o bloco de notas e compilar via comandoUsar o bloco de notas e compilar via comando
Java
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 11
AS EDIAS EDIÇÇÕES DA ÕES DA PLATAFORMA JAVAPLATAFORMA JAVA
Edições Java
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 12
A DivisãoA Divisão
Divida em 3 ediDivida em 3 ediççõesões(Junho de 1999)(Junho de 1999)
•• JAVA STANDARD EDTION JAVA STANDARD EDTION –– JSEJSE
•• JAVA ENTERPRISE EDTION JAVA ENTERPRISE EDTION –– JEEJEE
•• JAVA MICRO EDITION JAVA MICRO EDITION –– JMEJME
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 14
A Divisão
Java Micro Edition Java Micro Edition –– JMEJME
Tecnologia mobile, pequenas dispositivos;Tecnologia mobile, pequenas dispositivos;
Java Standard Edition Java Standard Edition –– JSEJSE
Tecnologia para desenvolvimento de aplicaTecnologia para desenvolvimento de aplicaçções ões em Java ;em Java ;
Java Enterprise Edition Java Enterprise Edition –– JEEJEE
Tecnologia voltada para desenvolvimento de Tecnologia voltada para desenvolvimento de aplicaaplicaçções Java em servidores.ões Java em servidores.
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 15
APLICAAPLICAÇÇÕESÕESDESKTOPDESKTOP
Aplicações Desktop
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 16
AplicaAplicaçções ões DesktopDesktop
AWT e Swing AWT e Swing –– Bibliotecas padrão Bibliotecas padrão SunSun para GUIpara GUI
Swing Swing –– EvoluEvoluçção do AWT.ão do AWT.
http://javootoo.l2fprod.comhttp://javootoo.l2fprod.com –– VVáários rios LookAndFeelsLookAndFeels
Swing Swing –– Implementa Implementa LookAndFeelsLookAndFeels
AWT AWT –– Primeira biblioteca para GUI do JavaPrimeira biblioteca para GUI do Java
Aplicações Desktop
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 17
AplicaAplicaçções ões DesktopDesktop
SWT e SWT e ThinletThinlet –– Outras opOutras opçções para ões para DesktopDesktop
ThinletThinlet –– http://www.thinlet.com/http://www.thinlet.com/
ThinletThinlet –– O kit de ferramentas tem 39KbO kit de ferramentas tem 39Kb
SWT SWT –– http://www.eclipse.org/swt/http://www.eclipse.org/swt/
Aplicações Desktop
SWT SWT –– Foi usado para desenvolver o EclipseFoi usado para desenvolver o Eclipse
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 18
APLICAAPLICAÇÇÕESÕESJAVA WEBJAVA WEB
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 19
Java WebJava WebJSP & Servlet (Java Server Pages)JSP & Servlet (Java Server Pages)
CriaCriaçção de pão de pááginas dinâmicas <% %>ginas dinâmicas <% %>
Servlet (Estrutura de Controle)Servlet (Estrutura de Controle)
Jsp (PJsp (Pááginas dinâmicas)ginas dinâmicas)<%<%requestrequest..getContextPatchgetContextPatch()%>()%>
Web
FAZ O MEIO CAMPOFAZ O MEIO CAMPO
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 20
Java WebJava Web•• JSF (Java Server Faces)JSF (Java Server Faces)
criacriaçção de pão de pááginas ginas ““ligadasligadas””;;
•• Manager BeanManager Bean•• FacesFaces--ConfigConfig•• JSF HTML (JSF HTML (TagTag LibLib’’s)s)
Web
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 22
JMEJME
Tecnologia Java voltada para dispositivos mobile
Telefonia móvel ;
PDA’s (Personal Digital Assistant);
Hanheld’s, Palm Top’s, entre outros
Linguagem OO, de código reusável e portável
Iniciando no Java
Guilherme Elias / Rafael Bitello 23
JME
Surgimento de novas oportunidades
Mais de um bilhão de celulares no mundo
Ramo promissor
Ambiente para desenvolvimento gratuito
KVM (KVM (KilobyteKilobyte Virtual Virtual MachineMachine))
CaracterCaracteríísticassticas
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 24
JME
MMááquina virtual J2MEquina virtual J2ME -- CompactaCompacta
DivisãoDivisãoConfiguraConfiguraçção (ão (ConfigurationConfiguration))
Perfis (Perfis (ProfilesProfiles))
Determina a tecnologia Java mDetermina a tecnologia Java míínima que podenima que podeesperar de um equipamento.esperar de um equipamento.
Tecnologia Java que permite o incremento deTecnologia Java que permite o incremento deuma configurauma configuraçção para dispor funcionalidadesão para dispor funcionalidadesPara determinados dispositivos.Para determinados dispositivos.
ConfiguraConfiguraçções e Perfisões e Perfis
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 25
JME
ConfiguraConfiguraçções(ões(ConfigurationConfiguration))
Perfis(Perfis(ProfilesProfiles))
APIAPI’’s opcionais (Fabricantes)s opcionais (Fabricantes)
CLDC (CLDC (ConectedConected LimtedLimted Device Device ConfigurationConfiguration))128Kb 128Kb memmem. Vol. Voláátil e 32Kb p/ runtimetil e 32Kb p/ runtime
CDC (CDC (ConectedConected Device Device ConfigurationConfiguration))2Mb 2Mb memmem. Vol. Voláátiltil
MIDP (Mobile Information Device MIDP (Mobile Information Device ProfileProfile))FP (Foundation FP (Foundation ProfileProfile))PBP (Personal Basis PBP (Personal Basis ProfileProfile))
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 26
JME
RequisitosRequisitosConhecimento em JavaConhecimento em JavaJDK (Kit de Desenvolvimento Java)JDK (Kit de Desenvolvimento Java)
Ferramenta para desenvolvimento mobileFerramenta para desenvolvimento mobile
Editor de cEditor de cóódigodigo
Mobile Mobile HelloWorldHelloWorld
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 27
Utilizando Utilizando WTK (Wireless Tool Kit)WTK (Wireless Tool Kit)http://java.sun.com/products/sjwtoolkit/download-2_2.html
JSDKJSDKhttp://java.sun.com/j2se/1.5.0/download.jsp
Eclipse 3.1Eclipse 3.1http://www.eclipse.org/downloads/http://www.eclipse.org/downloads/
EclipseME (EclipseME (PluginPlugin p/ o Eclipsep/ o Eclipse))http://sourceforge.net/project/showfiles.php?group_id=86829&package_id=90314
JME
Complemento Complemento ààs demais tecnologias Javas demais tecnologias Java
Desenvolvimento para Smart CardsDesenvolvimento para Smart Cards
Sobre Java CardSobre Java Card
S.O. S.O. multimulti--aplicaaplicaççãoão para Smart para Smart CardsCards
Iniciando no Java
Guilherme Elias / Rafael Bitello 32
Java Card
ÉÉ necessnecessáário ter o JSDK e o JCDK instaladorio ter o JSDK e o JCDK instaladoDominar os conceitos de APDUDominar os conceitos de APDUOs Os appletsapplets devem ser selecionados no cartãodevem ser selecionados no cartão
ReferênciasReferências
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 33
Java Card
http://java.sun.com/products/javacard/specs.htmlhttp://java.sun.com/products/javacard/specs.html
http://java.sun.com/javacard/dev_kit.htmlhttp://java.sun.com/javacard/dev_kit.html
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 34
JSF
Vamos Vamos àà PrPráática !!tica !!
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 35
OrientaOrientaçção a Objetosão a Objetos
Orientação a Objetos
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 36
Conceitos BConceitos Báásicos de OOsicos de OO
AbstraAbstraçção do mundo Real para o Computacionalão do mundo Real para o Computacional
EncapsulaEncapsulaççãoão
HeranHerançça e Polimorfismoa e Polimorfismo
Orientação a Objetos
Classe Classe –– Representa entes do mundo RealRepresenta entes do mundo Real
Objeto Objeto –– AbstraAbstraçção que se torna realidadeão que se torna realidade
Pessoa
+ nome+ idade
publicpublic classclass PessoaPessoa{{
String nome;String nome;int idade;int idade;
}}
CLASSECLASSE
Pessoa: p
+ nome: Estrôncio+ idade: 23
......Pessoa Pessoa pp = new Pessoa();= new Pessoa();pp.nome = .nome = ““EstrôncioEstrôncio””;;pp.idade = 23;.idade = 23;......
OBJETOOBJETO
Iniciando no JavaIniciando no Java Orientação a Objetos
Guilherme Elias / Rafael Bitello 37
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 38
CaracterCaracteríísticassticas
AbstraAbstraçção ão –– ““ImitarImitar”” o mundo realo mundo real
Orientação a Objetos
Pessoa: p
+ nome: Estrôncio+ idade: 23+ olhos: azuis
+ andar() + falar()+ beber()
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 39
CaracterCaracteríísticassticas
EncapsulaEncapsulaççãoão –– ““EsconderEsconder”” as especificidadesas especificidades
Orientação a Objetos
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 40
CaracterCaracteríísticassticas
HeranHerançça a –– Conceito de classe Pai e classe FilhaConceito de classe Pai e classe Filha
Orientação a Objetos
Pessoa
+ nome
Pessoa Jurídica
+ CNPJ
Pessoa Física
+ CPF
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 41
CaracterCaracteríísticassticas
Polimorfismo Polimorfismo –– Um mUm méétodo pode ter vtodo pode ter váárias formasrias formas
Orientação a Objetos
Animal
Ser Humano Cachorro
+ andar()
+ andar() + andar()
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 42
VisibilidadesVisibilidades
Um modo de implementar a Um modo de implementar a EncapsulaEncapsulaççãoão
PrivatePrivate –– SSóó pode ser acessada pela Entidadepode ser acessada pela Entidade
PublicPublic –– AcessAcessíível por qualquer Entidadevel por qualquer Entidade
ProtectedProtected –– AcessAcessíível pela Entidade e Filhosvel pela Entidade e Filhos
Visibilidade de Pacote Visibilidade de Pacote –– Sem palavra chaveSem palavra chave
Orientação a Objetos
obj
Tela obj = new Tela();
obj.setNome(“TelaPrincipal”);
nome = “TelaPrincipal”
obj = null;
x
Memória
Tela obj = new Tela();
obj.setNome(“TelaPrincipal”);
obj = null;
...
...
Iniciando no JavaIniciando no Java Java
Guilherme Elias / Rafael Bitello 43
GarbageGarbage CollectorCollector
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 44
Orientação a Objetos
2F6A45C6
2F6A3642
2F6A213C
2F6A1122
int i;
i = 6;
int x;
x = i;
i 6
x 6
int i;
i = 6;
int x;
x = i;
Passagem por valorPassagem por valor
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 45
Orientação a Objetos
2F6A45C6
2F6A3642
2F6A213C
2F6A1122
Pessoa p = new Pessoa();
s Idade = 20
Passagem por referenciaPassagem por referencia
p.idade = 20;Pessoa s = ps.idade = 50;
p 2F6A45C6
2F6A45C6 Idade = 50
Pessoa p = new Pessoa();
p.idade = 20;Pessoa s = ps.idade = 50;
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 46
Revisão de POORevisão de POO
ProgramaProgramaçção OO ão OO –– Abstrair o mundo realAbstrair o mundo real
Conceitos de Classes e ObjetosConceitos de Classes e Objetos
VisibilidadesVisibilidades
CaracterCaracteríísticassticas
Valor e ReferênciaValor e Referência
Orientação a Objetos
GarbageGarbage CollectorCollector
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 48
DefiniDefiniççãoão
Framework
Um Framework ou “estrutura”, por si próprio não passa de um “projeto”orientado a objetos reutilizáveis por todo um sistema, aonde possui em sua implementação, um conjunto de classes abstratas, que poderão ser implementadas uma vez que instanciadas.
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 49
Exemplos de FrameworksExemplos de Frameworks
Framework
Exemplos de Framework (Java)
Framework Spring (Fixador para outros frameworks)
Framework Struts (Aplicações Java Web)
Framework JSF (Aplicações Java Web - MVC)
Framework IBATIS (Modelo)
Framework Hibernate (Modelo)
Framework MiddleGen (Geração de Código)
JUnitJUnit -- Eric Eric GammaGamma ee KentKent BeckBeck
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 51
JUnit
FrameworkFramework JAVAJAVA
Teste UnitTeste Unitááriorio
EliminaEliminaçção de errosão de erros
Ambiente de testes ConfiAmbiente de testes Confiááveisveis
Funcionalidade especificaFuncionalidade especificaSuSuííte de testeste de testesCCóódigo Coesodigo CoesoFracamente acopladoFracamente acoplado
AgileAgile manifestomanifestohttp://www.agilemanifesto.org/http://www.agilemanifesto.org/
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 52
Métodos Ageis
XPXP –– Extreme Extreme ProgrammingProgramminghttp://www.extremeprogramming.org/http://www.extremeprogramming.org/
BDD BDD –– BehaviourBehaviour DrivenDriven DevelopmentDevelopmenthttp://behaviourhttp://behaviour--driven.org/driven.org/
SCRUM SCRUM -- Foco em gerência e controleFoco em gerência e controlehttp://www.controlchaos.com/about/http://www.controlchaos.com/about/
FDD FDD –– FeatureFeature--DrivenDriven DevelopmentDevelopmenthttp://www.featuredrivendevelopment.com/http://www.featuredrivendevelopment.com/
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 53
JUGsJUGs ((javajava..sun.comsun.com//jugsjugs/)/) e RSJUG e RSJUG ((www.rsjug.orgwww.rsjug.org))
Java Java UsersUsers GroupsGroups
Como participar? Entrar nas listas de discussão.Como participar? Entrar nas listas de discussão.
RSJUG RSJUG –– Primeiro JUG BrasileiroPrimeiro JUG Brasileiro
Enriquecer o conhecimento do GrupoEnriquecer o conhecimento do Grupo
JUGs e RSJUG
Divulgar e incentivar o uso da linguagem JavaDivulgar e incentivar o uso da linguagem Java
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 54
FUJA FUJA -- FACENSA USUARIOS JAVAFACENSA USUARIOS JAVA
Faculdade Cenecista Nossa Senhora dos Anjos, Faculdade Cenecista Nossa Senhora dos Anjos, GravataGravataíí
Site Site https://fuja.dev.java.net/https://fuja.dev.java.net/
WikiWiki http://wiki.java.net/bin/view/Gelc/FUJAhttp://wiki.java.net/bin/view/Gelc/FUJA
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 55
LinkLink’’s de apoios de apoio
JavaOneJavaOnehttp://java.sun.com/javaone/http://java.sun.com/javaone/
Java Community Process (JCP)Java Community Process (JCP)http://jcp.org/http://jcp.org/
Java Java LookLook andand FeelsFeelshttp://javootoo.l2fprod.com/http://javootoo.l2fprod.com/
Portais sobre a tecnologiaPortais sobre a tecnologiahttp://www.portaljava.com.br/http://www.portaljava.com.br/http://www.rsjug.org/http://www.rsjug.org/http://www.devmedia.com.br/http://www.devmedia.com.br/http://www.javafree.org/http://www.javafree.org/http://www.theserverside.comhttp://www.theserverside.com
Iniciando no JavaIniciando no Java
Guilherme Elias / Rafael Bitello 56
LinkLink’’s de apoios de apoio
MMéétodos todos ÁÁgeisgeishttp://www.agilemanifesto.org/http://www.agilemanifesto.org/http://www.xprogramming.com/http://www.xprogramming.com/http://www.controlchaos.com/about/http://www.controlchaos.com/about/http://www.poppendieck.com/ilsd.htmhttp://www.poppendieck.com/ilsd.htmhttp://www.featuredrivendevelopment.com/http://www.featuredrivendevelopment.com/
Grupos de Estudo JavaGrupos de Estudo Javahttp://fuja.dev.java.nethttp://fuja.dev.java.nethttp://confrariadojava.dev.java.nethttp://confrariadojava.dev.java.netMais informaMais informaçções:ões:https://studyhttps://study--groups.dev.java.net/groups.dev.java.net/https://eduhttps://edu--gelc.dev.java.net/gelc.dev.java.net/