Download - Conhecendo Java
Conhecendo JavaO passado, o presente, e as
tendências futuras da plataforma de desenvolvimento livre mais
utilizada no mundo.Andre Luiz Monteiro da [email protected]
• Desenvolvedor JAVA com experiência na utilizaçãode ferramentas e frameworks OpenSource.
• Ex-docente do Senac - curso de desenvolvedor JAVA.
• Ex-Analista de Sistemas da IplanRio.
• Docente da Academia do Concurso Público – área de TI.
• Ex-docente das Faculdades São José e Moacyr Bastos.
• Atualmente trabalha como arquiteto de software na FAPES.
Palestrante
• Docente da SOFEP.
Palestrante
� Professor do Infnet:
- Projeto de Sistemas e Orientação a Objetos com UML
- Java Programming
- Java Web Applications
A Infância de Uma Linguagem
O Java é uma linguagem baseada no C++, seu desenvolvimento teve inicio em 1991 com a Sun Microsystemsem um projeto de codinome Green.
A Infância de Uma Linguagem
Java foi criado em 1991 por James Gosling, sob o nome Oak, em homenagem a uma árvore de carvalho que ele via da janela de seu escritório.
Mais tarde descobriu-se que jáexistia uma linguagem com esse nome.
O nome java foi sugerido por acaso quando a equipe visitava a cafeteria (java era o nome de uma cidade de origem de um caféimportado).
O Objetivo por trás de tudo
O objetivo do projeto não era a criação de uma nova linguagem de programação, mas antecipar e planejar a “próxima onda” do mundo digital.
Eles acreditavam que, em algum tempo, haveria uma convergência dos computadores com os equipamentos e eletrodomésticos comumente usados pelas pessoas no seu dia-a-dia.
Característica Principal
DUKEDUKE
mascote da SUNmascote da SUN
• Capaz de rodar em diferentes dispositivos de hardware, sem
alteração ou recompilação.
• Era parte do projeto Star Seven (*7), em automação de
equipamentos e casas inteligentes.
Fonte: Sun Microsystems http://java.sun.com/features/1998/05/birthday.html
A Infância e o Crescimento
• Infelizmente, esta era uma idéia muito a frente do seu tempo, e o projeto *7 nunca foi comercializado.
• Em 1994, com o boom da internet, surgiu uma nova área de aplicação para a linguagem: navegação com conteúdo dinâmico (APPLET JAVA).
• Após seu lançamento oficial em 1995, Java e a tecnologia de Applets cresceramrapidamente, através de colaboração com a Netscape.
Finalidade da Tecnologia
Criar páginas Web com conteúdo interativo e dinâmico
Desenvolver aplicativos corporativos de grande porte
Aprimorar a funcionalidade de servidores da WWW
Fornecer aplicativos para dispositivos destinados ao consumidor final (telefones celulares, pagers, assistentes pessoais digitais)
Fase Adulta
• Com a adoção de novos padrões para páginas dinâmicas, como Flash, a tecnologia de applets perdeu importância.
• Lançada em 1999, a especificação J2EE 1.2 (Java Enterprise Edition) jácontinha as sementes da plataforma livre dominante no mercado de aplicações web.
Funcionamento
• Programas tradicionais devem ser compilados para cada plataforma.
WINDOWS
LINUX
Funcionamento
• Programas Java podem ser compilados uma única vez, e executam em qualquer lugar.
“write once, use anywhere!”
Características
SimplicidadeSimplicidade
A linguagem é derivada da linguagem C e C++, amplamente utilizadas à época. Além disso, o ambiente retira do programador a responsabilidade de gerenciar a memória e os ponteiros.
Garbage Collector
Características
SimplicidadeSimplicidade
Orientada a ObjetosOrientada a Objetospermite a herança e a reutilização de códigos de forma dinâmica e estática.
Características
SimplicidadeSimplicidade
Orientada a ObjetosOrientada a Objetos
Independente de PlataformaIndependente de Plataforma
permite a herança e a reutilização de códigos de forma dinâmica e estática.
Características
SimplicidadeSimplicidade
Orientada a ObjetosOrientada a Objetos
Independente de PlataformaIndependente de Plataforma
DistribuDistribuíídadaAplicações Java podem abrir e
acessar objetos através da rede via URL's (http/ftp) e com a mesma facilidade que os programadores
usam quando acessam um sistema de arquivo local.
Características
SimplicidadeSimplicidade
Orientada a ObjetosOrientada a Objetos
Independente de PlataformaIndependente de Plataforma
DistribuDistribuíídada
RobustaRobustaJava trabalha com uma rígida prevenção de comportamento
malicioso dos programas, tais como: estouro de pilha, corrupção de
memória de outros processos, etc.(fortemente tipada)
Características
SimplicidadeSimplicidade
Orientada a ObjetosOrientada a Objetos
Independente de PlataformaIndependente de Plataforma
DistribuDistribuíídada
RobustaRobusta
Alto DesempenhoAlto Desempenho
A linguagem Java suporta vários recursos de alto desempenho,
como multithreading, compilação just-in-time e utilização de código
nativo.
Versões
Java 7
Java 6
Java 5
Java 2
Developer Version
Dolphin
Mustang
Tiger
Mantis
Codename
2007JSE 7.0
Code Version
Release
J2SE 1.4.2 2003
JSE 5.0 2005
JSE 6.0 2006
A Plataforma Java
:: Java é mais que uma linguagem, é uma plataforma:
• Java Standard Edition (JSE)
� Edição básica para desenvolvimento desktop.
• Java Micro Edition (JME) � Edição para desenvolvimento para dispositivos móveis.
• Java Enterprise Edition (JEE) � Tecnologias para desenvolvimento em servidores.
A Plataforma Java - Standard Edition
A Plataforma Java - Standard Edition
A Plataforma Java - Enterprise Edition
• JEE é uma gama de tecnologias desenvolvidas sobre a distribuição básica.
• Fornecem bases de implementação para software de estrutura cliente-servidor, como as aplicações web.
• O desenvolvedor encontra na plataforma suporte a implementação de interfaces, controle da lógica interna de negócio, acesso a banco de dados, transações, etc.
A Plataforma Java – Enterprise Edition
“Java EE é desenhado para suportar aplicações que implementem serviços empresariais para clientes, empregados, fornecedores e quaisquer outros que gerem demandas ou contribuições para a empresa” (Tutorial JEE - Sun)
A Plataforma Java – Mobile Edition
“There are two configurations. The first configuration, the Connected Device Configuration (CDC), uses theclassic Java virtual machine. This virtual machine is a full-featured virtual machine with the same functionalityyou would find in the virtual machine residing on your desktop system. The second configuration, theConnected Limited Device Configuration (CLDC), uses the K Virtual Machine, a small footprint virtual machine for severely memory constrained environments. The CLDC is targeted for Java environments of 128-512KB,
and the CDC is targeted for Java environments of greater than 512KB. ”(java.sun.com/products/personaljava/faq.html)
A Plataforma Java – Enterprise Edition
Entre as especificações JEE se encontram: • Servlets (aplicações web)
• JDBC (bancos de dados relacionais)
• JCA (conexão com mainframes e aplicações legadas)
• JTA (acesso a transações distribuídas)
• JavaMail (e-mail internet em Java)
• JMF (acesso a informações multimídia)
• EJB (componentes distribuídos e persistentes)
• JAXP (processamento de XML e web services)
• JMX (gerenciamento de servidores, redes e aplicações)
A Plataforma Java
Java na atualidade
Presente
Java e os Dias de Hoje
Java na atualidade
• Hoje Java pode ser encontrado em celulares, DVD´s, chips, servidores, browsers, desktops, robôs e até espaçonaves.
• Conta com mais de 5 milhões de desenvolvedores ao redor do mundo, organizados em comunidades que atuam em fóruns, projetos e especificações oficiais.
• Desde 2006, em uma iniciativa surpreendente da Sun, Java é uma plataforma Open-Source.
Java na atualidade
http://meapplicationdevelopers.dev.java.net/fragmentation.html
Java na atualidade
Java na atualidade
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Java na atualidade
Ambientes de Desenvolvimento Java
• Netbeans.
• Eclipse.
• Borland JBuilder.
• Oracle JDeveloper.
IDEs Java
Inserir IDE NEtbeans
Os Desafios Futuros
• Ao mesmo tempo em que parece estar em seu ápice, a linguagem Java nunca enfrentou tantas controvérsias.
• Diversas iniciativas, em linguagens dinâmicas como Ruby/Rails, desafiam abertamente premissas fundamentais do estilo de programação experimentado em Java.
Os Desafios Futuros
• O mercado está cada vez mais optando por ambientes híbridos, com o Java e .NET convivendo.
Os Desafios Futuros
• Dados de mercado – por tamanho:
› Pequenas e médias empresas são dominadas pela Microsoft:
• .NET
› Grandes empresas e multi-nacionais guiadas por infra-estruturas heterogêneas:
• JAVA EE
Os Desafios Futuros
• Produtividade do desenvolvedor:
› .NET é geralmente aceita por ter maior produtividade.
› JAVA EE pode requerer desenvolvedores mais sofisticados.
Os Desafios Futuros
• Estratégia de decisão – 5 fatores a considerar:
› Examinar possibilidades de investimentos;› Pesar a portabilidade das aplicações;
• JAVA EE é portável› Verificar complexidade das aplicações;
• UI complexas = .NET• Arquitetura complexa = JAVA EE
› Investigar suporte do fabricante;› Computar custos com cuidado;
Os Desafios Futuros
• Comparativo:
CARACTERÍSTICA JAVA EE .NETTecnologia Padrão Depende do ProdutoLinguagem JAVA C#Fabricantes Mais de 30Interpretador JRE CLR
JSP ASP.NETAplicativos RADComponentes de negócio EJB .NETAcesso a base de dados JDBC ADO.NET
Sim SimBalanceamento de carga Sim Sim
Microsoft
Páginas Web dinâmicasSwing, JSF e AJAX Win Forms e Web Forms
Suporta webservices
Tipagem ?
• Ruby é uma linguagem de tipagem-dinâmica, como Python, Groovy, Scala, e outras.
• Rails é um framework desenvolvido para Ruby, a fim de agilizar o desenvolvimento de sistemas de internet.
• A solução RubyOnRails compete com as tecnologias Java destinadas a construção de Aplicações Web.
• A popularidade do Ruby, vem de uma linguagem mais simples, e de um framework que requer pouco código para fazer muitas coisas.
““““Uma pUma pUma pUma páááágina em Python ou Ruby pode levar metade do tempo que se tomariagina em Python ou Ruby pode levar metade do tempo que se tomariagina em Python ou Ruby pode levar metade do tempo que se tomariagina em Python ou Ruby pode levar metade do tempo que se tomaria para escrevêpara escrevêpara escrevêpara escrevê----la em Javala em Javala em Javala em Java””””
Tipagem ?
• A comunidade Java não vê linguagens dinamicamente-tipadas como inimigas.
• A especificação Java JSR-223 (Scripting for the Java Platform) prevê a abertura da plataforma para execução de linguagens de script.
• A possibilidade de utilizar linguagens diferentes para seus fins mais apropriados, em uma plataforma madura é um ponto positivo para a maior parte da comunidade Java.
• Assim, as aplicações não precisam abrir mão dos tantos recursos e frameworks disponíveis para plataforma Java.
Tipagem ?
Futuro ?
Java é mais que uma Linguagem
Futuro ?
• O futuro do Java não reside na linguagem, mas na plataforma e no ecossistema que se desenvolveu em torno dela.
• Um exemplo é a IDE Eclipse, que apesar de feita em Java, é utilizada para desenvolvimento em inúmeras linguagens, ambientes, e para fins diversos.
• Outros exemplos são os super-servidores de aplicações, como WebSphere, BEA Logic ou JBOSS, que vão muito além da própria linguagem, oferecendo melhoria contínua de aplicações e processos, através da concorrência aberta.
Futuro ?• Por ser portável e robusta, além de possuir um rico conjunto de classes, a linguagem Java tem ganhado espaço em projetos de robótica e pesquisa aeroespacial.
Fonte: Sun Microsystems
java.sun.com/developer/technicalArticles/
Programming/robotics/
Fonte: blogs.sun.com/simonri
Fonte: blogs.sun.com/simonri
Uma Aposta para o Futuro • Mercado de jogos – rodam em qualquer celular com JVM Java.
• TV Digital – conversores possuem Java em seu middleware.
• GSM – 90% dos chips GSM adotaram Java como padrão.
• G24-Java – módulo wireless da Motorola desenvolvido para operar em java, ampliando o potencial para personalização de aplicativos e configurações, além de permitir que as atualizações sejam realizadas remotamente (11/09/2008).
Uma Aposta para o Futuro
Televisão Digital no Brasil: os conhecimentos e tecnologias associadas a ela ganham destaque e o mercado deve crescer muito nos próximos anos.
Nicho: desenvolvimento de sistemas que ofereçam sup orte á produção de conteúdo ..
A tecnologia da plataforma JAVA é o suporte a várias tecnologias que permitem a criação de sistemas deste tipo que, unindo-se a pacotes e Frameworks específicos, oferecem as ferramentas necessárias. ((JavaTVJavaTV ).).
Mercado Java - Salários
Desenvolvedor Junior = R$ 2.259,00 (CLT)
Desenvolvedor Pleno = R$ 3.560,00 (CLT)
Desenvolvedor Sênior = R$ 5.015,00 (CLT)
*Valores M*Valores M éédios de Mercado dios de Mercado
Fonte: dicasinfoFonte: dicasinfo --ExameExame
Gerente de Projetos de Sistemas = R$ 3.832,00 – R$ 8.80 3,00
Gerente de TI = R$ 5.563,00 – R$ 13.243,00
O Pioneirismo do Infnet
• O Infnet foi o pioneiro do ensino de Java no Rio de Janeiro,
ministrando curso desta tecnologia antes mesmo da Sun.
48 h
Java Web Applications
Ensinar questões avançadas do desenvolvimento de aplicações Web com a linguagem de programação Java e os frameworks mais usados no mercado.
I554
48 h
Java Programming
Ensinar a programar em Java para alunos que já sabem programar em qualquer outra linguagem.
I552
40 h
Projeto de Sistemas e Orientação a Objetos com UML
Ensinar conceitos de orientação a objetos e sua utilização no processo de desenvolvimento de software usando UML.
I550
HorasNome do cursoCódigo
Formação Desenvolvedor Java
A Formação Completa do Infnet
32 hJava WorkshopColocar em prática o conhecimento avançado de desenvolvimento de aplicações Java.
I562
32 hJava MobileEnsinar programação Java para dispositivos móveis, como celulares e hand helds.
I560
24 hJava SecurityEnsinar conceitos avançados de segurança em Java para sistemas desktop e J2EE.
I558
48 hJava Enterprise ApplicationsEnsinar conceitos avançados de programação em Java para sistemas com alta demanda de acesso e segurança.
I556
48 h
Java Web ApplicationsEnsinar questões avançadas do desenvolvimento de aplicações Web com a linguagem de programação Java e os frameworks mais usados no mercado.
I554
48 hJava ProgrammingEnsinar a programar em Java para alunos que já sabem programar em qualquer outra linguagem.
I552
40 hProjeto de Sistemas e Orientação a Objetos com UMLEnsinar conceitos de orientação a objetos e sua utilização no processo de desenvolvimento de software usando UML.
I550
HorasNome do cursoCódigo
Formação Desenvolvedor Java: Sistemas Distribuídos
Agradecimentos
- Tomás de Aquino
- Rafel Castaneda
OBRIGADO!
www.infnet.edu.br
2122-8800
Esta palestra está disponível em:http://www.infnet.edu.br/Home/Eventos/CiclodePalest raseMiniCursos//tabid/253/Default.aspx
Ministrada por
André Luiz Monteiro da Costa
E-mail: