14.06.2013 Views

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

SHOW MORE
SHOW LESS

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!

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!