Tecnologia Java - Mercado, Tendências e Futuro - Softech Network
Tecnologia Java - Mercado, Tendências e Futuro - Softech Network
Tecnologia Java - Mercado, Tendências e Futuro - Softech Network
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
TECNOLOGIA JAVA<br />
TENDÊNCIAS, MERCADO E FUTURO
Daniel Destro do Carmo<br />
Bacharel em Ciências da Computação – PUC/SP – 2001<br />
Pós-graduado em Gestão de Negócios (MBA) – IPT/USP – 2006<br />
Arquiteto de Software<br />
Desenvolvedor <strong>Java</strong><br />
Consultoria, Treinamento e Mentoring<br />
Experiência de 10 anos (8 anos em <strong>Java</strong>)<br />
Cerca de 50 aplicações <strong>Java</strong> diferentes<br />
Palestrante <strong>Java</strong>: Just <strong>Java</strong>, Conexão <strong>Java</strong><br />
Artigos Publicados: <strong>Java</strong> Magazine, GUJ
Discover Technology Informática<br />
Há mais de 12 anos no mercado de TI<br />
Consultoria, Projetos, Soluções e Treinamento<br />
Alguns dos clientes atendidos:<br />
Daniel Destro do Carmo
<strong>Java</strong> e Você
Quem já usou <strong>Java</strong>?<br />
Daniel Destro do Carmo
Quem já usou <strong>Java</strong>?<br />
Todo mundo usa <strong>Java</strong> no seu dia-a-dia!<br />
Imposto de Renda<br />
Daniel Destro do Carmo
<strong>Java</strong> is Everywhere
<strong>Java</strong> is Everywhere, <strong>Java</strong> Runs Anywhere<br />
Write Once, Run Anywhere!<br />
Daniel Destro do Carmo
<strong>Java</strong> is Everywhere, <strong>Java</strong> Runs Anywhere<br />
Compilador gera o bytecode (.class)<br />
<strong>Java</strong> Virtual Machine (JVM) executa o programa<br />
Daniel Destro do Carmo
<strong>Java</strong> is Everywhere<br />
E para provar...<br />
Daniel Destro do Carmo
TECNOLOGIA JAVA
Você já provou <strong>Java</strong>?<br />
Delicioso!<br />
Daniel Destro do Carmo
<strong>Tecnologia</strong> <strong>Java</strong> - Início<br />
Projeto inicial: Oak (liderado por James Gosling)<br />
Lançada oficialmente em 1995 como <strong>Java</strong><br />
Atualmente na versão 6<br />
Oak<br />
Daniel Destro do Carmo
<strong>Tecnologia</strong> <strong>Java</strong> – Linguagem <strong>Java</strong><br />
Orientada a objetos<br />
Fortemente (estaticamente) tipada<br />
Sintaxe parecida com C/C++<br />
Porém não possui ponteiros<br />
Daniel Destro do Carmo<br />
Poderosa linguagem de desenvolvimento de software<br />
public class PrimeiroPrograma {<br />
public static void main( String[] args ) {<br />
System.out.println( "Meu primeiro programa em <strong>Java</strong>" );<br />
}<br />
}
<strong>Tecnologia</strong> <strong>Java</strong> - Plataforma<br />
Não é apenas uma linguagem de programação<br />
É uma plataforma completa para:<br />
Desenvolvimento e<br />
Execução de sistemas de software<br />
Composta por:<br />
<strong>Java</strong> Standard Edition (<strong>Java</strong> SE ou JSE, antigo J2SE)<br />
Daniel Destro do Carmo<br />
Desenvolvimento em geral / API padrão – desktop, server<br />
<strong>Java</strong> Enterprise Edition (<strong>Java</strong> EE ou JEE, antigo J2EE)<br />
Desenvolvimento enterprise / server-side – larga escala<br />
<strong>Java</strong> Micro Edition (<strong>Java</strong> ME ou JME, antigo J2ME)<br />
Desenvolvimento para dispositivos móveis ou limitados
<strong>Tecnologia</strong> <strong>Java</strong> - Plataforma<br />
<strong>Java</strong> SE (atualmente versão 6)<br />
<strong>Java</strong> Runtime Environment (JRE) JVM + APIs<br />
Ambiente de execução das aplicações <strong>Java</strong><br />
<strong>Java</strong> Development Kit (JDK) JRE + kit desenv.<br />
Kit de desenvolvimento de aplicações <strong>Java</strong><br />
Daniel Destro do Carmo
<strong>Tecnologia</strong> <strong>Java</strong> - Plataforma<br />
<strong>Java</strong> EE (atualmente versão 5)<br />
Voltado para aplicações de larga escala<br />
Componentes reutilizáveis e distribuídos (EJB)<br />
Oferece serviços de infra-estrutura<br />
Ex: transações, mensagens, persistência etc<br />
Aplicações web e multi-camadas<br />
Daniel Destro do Carmo
<strong>Tecnologia</strong> <strong>Java</strong> - Plataforma<br />
<strong>Java</strong> ME<br />
Voltado para dispositivos móveis e/ou limitados<br />
Celular, PDA, dispositivos embarcados etc<br />
Funções mais limitadas que o <strong>Java</strong> SE<br />
Divida em CDC e CLDC<br />
Daniel Destro do Carmo
<strong>Tecnologia</strong> <strong>Java</strong> - Plataforma<br />
Daniel Destro do Carmo
<strong>Tecnologia</strong> <strong>Java</strong> – Aberta e Padronizada<br />
JVM é Open Source (Open JDK)<br />
Daniel Destro do Carmo<br />
<strong>Java</strong> não te prende a um fornecedor (vendor lock-in)<br />
Liberdade para escolher fornecedores<br />
Ex: servidores de aplicação, bibliotecas, ferramentas etc<br />
Mantido pelo <strong>Java</strong> Communnity Process (JCP)<br />
Formado por empresas e desenvolvedores<br />
Sun, Oracle, IBM, Google, Novell, Xerox, Motorola, etc<br />
Define os rumos e os padrões da tecnologia<br />
Expert Groups definem os padrões<br />
<strong>Java</strong> Specification Request (JSR)
JAVA E A SOPA DE LETRINHAS
Sopa de Letrinhas do <strong>Java</strong><br />
Causa certa confusão para os principiantes<br />
São muitas tecnologias e APIs<br />
Cada uma para um propósito<br />
Não se preocupe em saber tudo<br />
Aprenda o básico<br />
Depois foque no que lhe interessa<br />
Aos poucos vá pesquisando as<br />
outras letrinhas<br />
Daniel Destro do Carmo<br />
JVM, JRE, JDK, JSE, JEE, JME, JAX-WS, JAX-P, JAX-B,<br />
JNI, JINI, JSP, JSF, EJB, JMS, JMX, JDBC, AWT, XML,<br />
RMI/IIOP, SOAP, CDC, CLDC, MIDP, LOG4J…
COMEÇANDO COM JAVA
Começando com <strong>Java</strong><br />
Baixe e instale o JDK<br />
http://java.sun.com/javase/downloads/<br />
Escreva os primeiros programas no Notepad<br />
Daniel Destro do Carmo<br />
Compile e rode o código na mão (linha de comando)<br />
É fundamental entender como funciona o processo<br />
Depois baixe uma IDE (ambiente de programação)<br />
Escolha a sua preferida e ganhe em produtividade
Começando com <strong>Java</strong> - IDE<br />
Existem dezenas de boas IDEs para <strong>Java</strong><br />
Integrated Development Environment (IDE)<br />
Daniel Destro do Carmo
Começando com <strong>Java</strong> - IDE<br />
Eclipse<br />
Daniel Destro do Carmo<br />
Versão atual: Eclipse Ganymede – 3.4<br />
Pontos fortes:<br />
A mais adotada no mercado<br />
Leve e fácil de usar<br />
Ótimos plugins e ferramentas<br />
Ótima Integração<br />
Aceita outras linguagens<br />
Uso livre (gratuito)<br />
URL: www.eclipse.org<br />
Fornecedor: Eclipse Foundation
Começando com <strong>Java</strong> - IDE<br />
NetBeans<br />
Versão atual: NetBeans IDE 6.1<br />
Pontos fortes:<br />
Boa aceitação no mercado<br />
Leve e fácil de usar<br />
Ótimos plugins e ferramentas<br />
Ótima Integração<br />
Aceita outras linguagens<br />
Uso livre (gratuito)<br />
Open Source<br />
URL: www.netbeans.org<br />
Fornecedor: Sun (principal sponsor)<br />
Daniel Destro do Carmo
Começando com <strong>Java</strong> - IDE<br />
Oracle JDeveloper<br />
Versão atual: JDveloper 11g<br />
Daniel Destro do Carmo<br />
Pontos fortes:<br />
Ótimas ferramentas<br />
Ótima Integração com Oracle<br />
Uso livre (gratuito)<br />
Pontos negativos:<br />
Muito integrado com Oracle<br />
URL:<br />
oracle.com/technology/products/jdev/<br />
Fornecedor: Oracle
Começando com <strong>Java</strong> - IDE<br />
IntelliJ<br />
Versão atual: IntelliJ 7<br />
Pontos fortes:<br />
Ótimas ferramentas<br />
Ótima Integração<br />
Daniel Destro do Carmo<br />
Pontos negativos:<br />
Licensa paga (trialde 30 dias)<br />
URL: www.jetbrains.com/idea/<br />
Fornecedor: Jet Brains
Começando com <strong>Java</strong> - IDE<br />
JBuilder 2008<br />
Daniel Destro do Carmo<br />
URL: codegear.com/products/jbuilder<br />
Fornecedor: Embarcadero Technologies<br />
Web Sphere Application Developer<br />
URL:<br />
ibm.com/software/awdtools/developer<br />
/application/<br />
Fornecedor: IBM<br />
jEdit 4.3<br />
URL: www.jedit.org<br />
Fornecedor: jEdit Community
O QUE APRENDER SOBRE JAVA
O Que Aprender Sobre <strong>Java</strong><br />
Conhecimento básico inicial<br />
Fundamentos da linguagem<br />
Ferramentas de desenvolvimento<br />
Orientação a Objetos (essencial)<br />
APIs e bibliotecas padrão<br />
Coleções, I/O, JDBC, etc<br />
Conhecimento avançado<br />
Generics<br />
Threads<br />
Reflection<br />
Daniel Destro do Carmo
O Que Aprender Sobre <strong>Java</strong><br />
Conhecimento Web<br />
Especificação de Servlets / JSP<br />
Framework Web (MVC-2)<br />
Struts, Struts2, vRaptor, Mentawai, <strong>Java</strong>Server Faces (JSF)<br />
Servidores de Aplicação<br />
Web Container<br />
<strong>Java</strong>Script<br />
Ajax<br />
Web 2.0<br />
Daniel Destro do Carmo
O Que Aprender Sobre <strong>Java</strong><br />
Conhecimento <strong>Java</strong> EE<br />
Enterprise <strong>Java</strong> Beans (EJB)<br />
EJB 3.0 (atual) e EJB 2.1 (legado)<br />
<strong>Java</strong> Persistence API (JPA)<br />
Web Services (SOAP / REST)<br />
<strong>Java</strong> Message Service (JMS)<br />
Transações (JTS / JTA)<br />
Servidores de Aplicação<br />
<strong>Java</strong> EE Container<br />
Daniel Destro do Carmo
O Que Aprender Sobre <strong>Java</strong><br />
Servidores de aplicação<br />
São software de infra-estrutura (middleware)<br />
Daniel Destro do Carmo<br />
Onde as aplicações executam no servidor (server side)<br />
Provê: escalabilidade, manutenabilidade, confiabilidade,<br />
disponibilidade, extensibilidade, desempenho, gerenciamento<br />
e segurança
O Que Aprender Sobre <strong>Java</strong><br />
Servidores de aplicação<br />
Daniel Destro do Carmo<br />
Web Container – executam aplicações Web / Servlets<br />
Apache Tomcat<br />
Jetty<br />
<strong>Java</strong> EE Container – executam os EJBs e outros serviços<br />
Oracle Containers for <strong>Java</strong> (OC4J)<br />
IBM Web Sphere<br />
BEA Weblogic<br />
Glassfish<br />
JBoss
O Que Aprender Sobre <strong>Java</strong><br />
Conhecimento do desenvolvedor completo e eficaz<br />
Melhores práticas de programação<br />
Unified Modeling Language (UML)<br />
Design Patterns<br />
Domain Driven Design<br />
Arquitetura de software<br />
Modelo em camadas<br />
Cluster e Load Balance<br />
Alta disponibilidade (HA)<br />
Tolerância a falhas (fail over)<br />
Metodologias RUP, XP, Scrum<br />
Daniel Destro do Carmo
CERTIFICAÇÕES JAVA
Certificações <strong>Java</strong><br />
Sun Certified <strong>Java</strong> Associate (SCJA)<br />
Sun Certified <strong>Java</strong> Programmer (SCJP)<br />
Sun Certified <strong>Java</strong> Developer (SCJD)<br />
Daniel Destro do Carmo<br />
Sun Certified Web Component Developer (SCWCD)<br />
Sun Certified Business Component Developer (SCBCD)<br />
Sun Certified Developer for <strong>Java</strong> Web Services<br />
(SCDJWS)<br />
Sun Certified Mobile Application Developer (SCMAD)<br />
Sun Certified Enterprise Architect (SCEA)
Certificações <strong>Java</strong><br />
Daniel Destro do Carmo
RAIO-X DO MERCADO
Linguagens Mais Populares (setembro/08)<br />
Posição Linguagem Popularidade<br />
1 JAVA<br />
(%)<br />
20,715<br />
2 C 15,379<br />
2007/2008<br />
3 C++ 10,716 +<br />
4 Visual Basic 10,490 --<br />
5 PHP 9,243 --<br />
6 Python 5,012 +<br />
7 Perl 4,841 --<br />
8 C# 4,334 --<br />
9 <strong>Java</strong>Script 3,130<br />
10 Delphi 3,055 +<br />
11 Ruby 2,762 --<br />
13 PL/SQL 0,700 --<br />
20 COBOL 0,360 --<br />
Daniel Destro do Carmo<br />
* ASP, ASP.NET, Ruby on Rails desconsideradas. Fonte: TIOBE - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Linguagens Mais Populares (setembro/08)<br />
JAVA<br />
C<br />
C++<br />
VB<br />
Daniel Destro do Carmo<br />
* ASP, ASP.NET, Ruby on Rails desconsideradas. Fonte: TIOBE - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Linguagens Mais Populares (setembro/08)<br />
Categoria Participação (%)<br />
Linguagens Orientada a Objetos 57,60<br />
Linguagens Procedurais 39,90<br />
Linguagens Funcionais 1,90<br />
Linguagens Lógicas 0,70<br />
Categoria Participação (%)<br />
Ling. Estaticamente Tipadas 59,10<br />
Ling. Dinamicamente Tipadas 40,90<br />
Daniel Destro do Carmo<br />
* ASP, ASP.NET, Ruby on Rails desconsideradas. Fonte: TIOBE - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
TENDÊNCIAS DE MERCADO
<strong>Tendências</strong> de <strong>Mercado</strong> – SOA e ESB<br />
Service-Oriented<br />
Architecture (SOA)<br />
Enterprise Service Bus (ESB)<br />
Integração:<br />
Workflow, BPM,<br />
Messaging, EJB, FTP,<br />
Web Services, BD, ERP,<br />
CRM, etc<br />
Maior agilidade nos<br />
negócios<br />
Produtividade e reuso<br />
Daniel Destro do Carmo
<strong>Tendências</strong> de <strong>Mercado</strong> – Nova Onda<br />
Linguagens dinâmicas (Scripting languages)<br />
Ruby on Rails<br />
Python<br />
Groovy<br />
<strong>Java</strong>Script<br />
Ajax, Prototype, script.aculo.us (Web 2.0)<br />
Rodam na JVM e IDEs do <strong>Java</strong><br />
JRuby<br />
Jython<br />
Groovy<br />
Rhino<br />
Daniel Destro do Carmo
FUTURO DO JAVA
<strong>Futuro</strong> do <strong>Java</strong><br />
Novas versões a caminho<br />
<strong>Java</strong> SE 7<br />
<strong>Java</strong> EE 6<br />
Servlets 3.0<br />
EJB 3.1<br />
JPA 2.0<br />
JSF 2.0<br />
Daniel Destro do Carmo
MATERIAL DE REFERÊNCIA
Revistas<br />
<strong>Java</strong> Magazine - www.javamagazine.com.br<br />
Mundo <strong>Java</strong> - www.mundojava.com.br<br />
Daniel Destro do Carmo
Sites Especializados<br />
GUJ - www.guj.com.br<br />
Portal <strong>Java</strong> - www.portaljava.com.br<br />
<strong>Java</strong> - java.sun.com<br />
The Server Side - www.theserverside.com<br />
<strong>Java</strong> World - www.javaworld.com<br />
InfoQ - www.infoq.com<br />
Daniel Destro do Carmo
Eventos<br />
Just <strong>Java</strong> - www.justjava.com.br<br />
Sun Tech Days - www.suntechdays.com.br<br />
Daniel Destro do Carmo<br />
Falando em <strong>Java</strong> - www.falandoemjava.com.br<br />
TDC - www.thedevelopersconference.com.br<br />
Conexão <strong>Java</strong> - www.conexaojava.com.br<br />
Google Developer Day, É dia de <strong>Java</strong> (São Carlos)
daniel@danieldestro.com.br<br />
http://java.danieldestro.com.br<br />
http://www.discover.com.br<br />
Programa de Estágios 2009 (Janeiro)<br />
rh@discover.com.br<br />
Muito Obrigado!