O documento fornece um resumo da história e evolução da linguagem de programação Java, desde sua criação pela Sun Microsystems até os desafios atuais e futuras tendências. Aborda as principais características e aplicações de Java, assim como as diferentes plataformas (Standard Edition, Enterprise Edition e Mobile Edition).
1. Conhecendo Java
O passado, o presente, e as
tendências futuras da plataforma
de desenvolvimento livre mais
Andre Luiz Monteiro da Costa
utilizada no mundo.
andre.monteiro@prof.infnet.edu.br
2. Palestrante
• Desenvolvedor JAVA com experiência na utilização
de ferramentas e frameworks OpenSource.
• Ex-docente do Senac - curso de desenvolvedor JAVA.
• Ex-docente das Faculdades São José e Moacyr Bastos.
• Ex-Analista de Sistemas da IplanRio.
• Docente da Academia do Concurso Público – área de TI.
• Docente da SOFEP.
• Atualmente trabalha como arquiteto de software na FAPES.
3. Palestrante
Professor do Infnet:
- Projeto de Sistemas e Orientação a Objetos com UML
- Java Programming
- Java Web Applications
4. A Infância de Uma Linguagem
O Java é uma
linguagem baseada
no C++, seu
desenvolvimento teve
inicio em 1991 com
a Sun Microsystems
em um projeto de
codinome Green.
5. 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).
6. 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.
7. Característica Principal
• 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.
DUKE
mascote da SUN
Fonte: Sun Microsystems http://java.sun.com/features/1998/05/birthday.html
8. 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 cresceram
rapidamente, através de colaboração com a Netscape.
9. 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)
10. 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.
12. Funcionamento
• Programas Java podem ser compilados uma única vez, e executam em
qualquer lugar.
“write once, use anywhere!”
13. Características
Simplicidade
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
16. Características
Simplicidade
Orientada a Objetos
Independente de Plataforma
Distribuída
Aplicaçõ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.
17. Características
Simplicidade
Orientada a Objetos
Independente de Plataforma
Distribuída
Robusta
Java 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)
18. Características
Simplicidade
Orientada a Objetos
Independente de Plataforma
Distribuída
A linguagem Java suporta vários
recursos de alto desempenho,
Robusta como multithreading, compilação
just-in-time e utilização de código
Alto Desempenho nativo.
20. A Plataforma Java
:: Java é mais que uma linguagem, é uma plataforma:
• Java Standard Edition (JSE)
Edição básica para desenvolvimento desktop.
• Java Enterprise Edition (JEE)
Tecnologias para desenvolvimento em servidores.
• Java Micro Edition (JME)
Edição para desenvolvimento para dispositivos móveis.
23. 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.
24. 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)
25. A Plataforma Java – Mobile Edition
“There are two configurations. The first configuration, the Connected Device Configuration (CDC), uses the
classic Java virtual machine. This virtual machine is a full-featured virtual machine with the same functionality
you would find in the virtual machine residing on your desktop system. The second configuration, the
Connected 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)
26. 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)
29. 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.
30. Java na atualidade
http://meapplicationdevelopers.dev.java.net/fragmentation.html
37. 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.
38. Os Desafios Futuros
• O mercado está cada vez mais optando por ambientes híbridos, com o Java e
.NET convivendo.
39. 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
40. Os Desafios Futuros
• Produtividade do desenvolvedor:
› .NET é geralmente aceita por ter maior produtividade.
› JAVA EE pode requerer desenvolvedores mais sofisticados.
41. 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;
42. Os Desafios Futuros
• Comparativo:
CARACTERÍSTICA JAVA EE .NET
Tecnologia Padrão Depende do Produto
Linguagem JAVA C#
Fabricantes Mais de 30 Microsoft
Interpretador JRE CLR
Páginas Web dinâmicas JSP ASP.NET
Aplicativos RAD Swing, JSF e AJAX Win Forms e Web Forms
Componentes de negócio EJB .NET
Acesso a base de dados JDBC ADO.NET
Suporta webservices Sim Sim
Balanceamento de carga Sim Sim
43. 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 página em Python ou Ruby pode levar metade do tempo que se tomaria para escrevê-la em Java”
pá escrevê- Java”
44. 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.
47. 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.
48. 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
49. 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).
50. 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 suporte á 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. (JavaTV ).
52. 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.
Formação Desenvolvedor Java
Código Nome do curso Horas
Projeto de Sistemas e Orientação a Objetos com UML
I550 40 h
Ensinar conceitos de orientação a objetos e sua utilização no processo de desenvolvimento
de software usando UML.
Java Programming
I552 48 h
Ensinar a programar em Java para alunos que já sabem programar em qualquer outra
linguagem.
Java Web Applications
I554 48 h
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.
53. A Formação Completa do Infnet
Formação Desenvolvedor Java: Sistemas Distribuídos
Código Nome do curso Horas
Projeto de Sistemas e Orientação a Objetos com UML
I550 Ensinar conceitos de orientação a objetos e sua utilização no processo 40 h
de desenvolvimento de software usando UML.
Java Programming
I552 Ensinar a programar em Java para alunos que já sabem programar em 48 h
qualquer outra linguagem.
Java Web Applications
Ensinar questões avançadas do desenvolvimento de aplicações Web
I554 48 h
com a linguagem de programação Java e os frameworks mais usados
no mercado.
Java Enterprise Applications
I556 Ensinar conceitos avançados de programação em Java para sistemas 48 h
com alta demanda de acesso e segurança.
Java Security
I558 Ensinar conceitos avançados de segurança em Java para sistemas 24 h
desktop e J2EE.
Java Mobile
I560 Ensinar programação Java para dispositivos móveis, como celulares e 32 h
hand helds.
Java Workshop
I562 Colocar em prática o conhecimento avançado de desenvolvimento de 32 h
aplicações Java.
55. www.infnet.edu.br
cursos@infnet.edu.br
2122-8800
Esta palestra está disponível em:
http://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos//tabid/253/Default.aspx
Ministrada por
André Luiz Monteiro da Costa
E-mail:
andre.monteiro@prof.infnet.edu.br