Conhecendo Java

55
Conhecendo Java O passado, o presente, e as tendências futuras da plataforma de desenvolvimento livre mais utilizada no mundo. Andre Luiz Monteiro da Costa [email protected]

description

Slides da Palestra Conhecendo Java, ministrada por André Luiz Costa, Instrutor do Instituto Infnet. O passado, o presente, e as tendências futuras da plataforma de desenvolvimentolivre mais utilizada no mundo. Descubra suas principais aplicações, características e as certificações disponíveis.

Transcript of Conhecendo Java

Page 1: 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]

Page 2: Conhecendo Java

• 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.

Page 3: Conhecendo Java

Palestrante

� Professor do Infnet:

- Projeto de Sistemas e Orientação a Objetos com UML

- Java Programming

- Java Web Applications

Page 4: Conhecendo Java

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.

Page 5: Conhecendo Java

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).

Page 6: Conhecendo Java

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.

Page 7: Conhecendo Java

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

Page 8: Conhecendo Java

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.

Page 9: Conhecendo Java

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)‏

Page 10: Conhecendo Java

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.

Page 11: Conhecendo Java

Funcionamento

• Programas tradicionais devem ser compilados para cada plataforma.

WINDOWS

LINUX

Page 12: Conhecendo Java

Funcionamento

• Programas Java podem ser compilados uma única vez, e executam em qualquer lugar.

“write once, use anywhere!”

Page 13: Conhecendo Java

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

Page 14: Conhecendo Java

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.

Page 15: Conhecendo Java

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.

Page 16: Conhecendo Java

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.

Page 17: Conhecendo Java

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)

Page 18: Conhecendo Java

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.

Page 19: Conhecendo Java

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

Page 20: Conhecendo Java

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.

Page 21: Conhecendo Java

A Plataforma Java - Standard Edition

Page 22: Conhecendo Java

A Plataforma Java - Standard Edition

Page 23: Conhecendo Java

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.

Page 24: Conhecendo Java

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)‏

Page 25: Conhecendo Java

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)‏

Page 26: Conhecendo Java

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) ‏

Page 27: Conhecendo Java

A Plataforma Java

Page 28: Conhecendo Java

Java na atualidade

Presente

Java e os Dias de Hoje

Page 29: Conhecendo Java

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.

Page 30: Conhecendo Java

Java na atualidade

http://meapplicationdevelopers.dev.java.net/fragmentation.html

Page 31: Conhecendo Java

Java na atualidade

Page 32: Conhecendo Java

Java na atualidade

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 33: Conhecendo Java

Java na atualidade

Page 34: Conhecendo Java

Ambientes de Desenvolvimento Java

• Netbeans.

• Eclipse.

• Borland JBuilder.

• Oracle JDeveloper.

Page 35: Conhecendo Java

IDEs Java

Page 36: Conhecendo Java

Inserir IDE NEtbeans

Page 37: Conhecendo Java

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.

Page 38: Conhecendo Java

Os Desafios Futuros

• O mercado está cada vez mais optando por ambientes híbridos, com o Java e .NET convivendo.

Page 39: Conhecendo Java

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

Page 40: Conhecendo Java

Os Desafios Futuros

• Produtividade do desenvolvedor:

› .NET é geralmente aceita por ter maior produtividade.

› JAVA EE pode requerer desenvolvedores mais sofisticados.

Page 41: Conhecendo Java

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;

Page 42: Conhecendo Java

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

Page 43: Conhecendo Java

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””””

Page 44: Conhecendo 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.

Page 45: Conhecendo Java

Tipagem ?

Page 46: Conhecendo Java

Futuro ?

Java é mais que uma Linguagem

Page 47: Conhecendo Java

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.

Page 48: Conhecendo Java

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

Page 49: Conhecendo Java

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).

Page 50: Conhecendo Java

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 ).).

Page 51: Conhecendo Java

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

Page 52: Conhecendo Java

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

Page 53: Conhecendo 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

Page 54: Conhecendo Java

Agradecimentos

- Tomás de Aquino

- Rafel Castaneda

OBRIGADO!

Page 55: Conhecendo Java

www.infnet.edu.br

[email protected]

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:

[email protected]