Tornando-se um Programador Java Sênior Por Bruno E. Grossi Quem é Bruno Grossi? Formado em Ciência da Computação pela UFOP Mestre em Ciência da Computação pela UFMG Certificados Sun: SCJP, SCWCD e SCEA parte 1 Programa em Java desde 1997 Trabalha profissionalmente com desenvolvimento Java desde 2002 Um dos fundadores do MGJUG, em 2005 Participa de projetos open-source como Netbeans e JXTA Experiência em desenvolvimento de frameworks e plataformas Java Head of IT na Sambatech desde março/2009 Um pouco de história sobre Java Timeline do Java http://java.com/en/javahistory/timeline.jsp http://java.com/en/javahistory/index.jsp http://java.sun.com/features/1998/05/birthday.html Porque aprender e usar Java? Java está em todo lugar... Diversos eventos de desenvolvedores no mundo inteiro This happened at Sun Tech Days on Brazil 2006. Mr. Sang Shin, who works at Sun Microsystems as a Technology Architect, Consultant, and Evangelist of the Java technology show how he shakes the butt. http://www.youtube.com/watch?v=BXHE4SktsbM Um das linguagens mais usadas no mundo Fonte: langpop.com 20/10/2009 A maior comunidade de usuários de uma tecnologia no mundo! http://community.java.net/jugs JUG = 620 JUGs no mundo listados pela SUN: http://www.java.net/jugs/listing.csp Diversos eventos no Brasil e no mundo, o ano inteiro Milhares de frameworks, ferramentas e projetos de código fonte aberto E muito mais! Certificações Java Onde e como usar Java Como começar? New to Java Programming Center — Young Developers: http://java.sun.com/new2java/learning/young_developers.jsp Iniciantes sem experiência em programação Alice http://www.alice.org/ Greenfoot http://www.greenfoot.org/ BlueJ http://www.bluej.org/ Ambiente de Desenvolvimento Universo Java Edição rápida Compilação incremental, verificação de código ao editar Formatação e "coloramento" de código: melhor visibilidade Complementação de código Gerência de construção Depuração e Profiling de código Ligação com código fonte e documentação Ferramentas de Teste Automatizado como jUnit Java Standard Edition Java Enterprise Edition Java Micro Edition Livros Listas de Discussão dos JUGS MGJUG: www.mgjug.com.br SOUJAVA: www.soujava.org.br DFJUG: www.dfjug.org Participar da Comunidade Cursos online gratuítos Iniciativa JEDI: http://www.dfjug.org/DFJUG/jedi/ Java Passion: http://www.javapassion.com/ (em inglês) Próximos Eventos The Developers Conference Sun Tech Days (em várias cidades) Sites www.guj.com.br www.javaranch.com www.javafree.com.br www.java.net osum.sun.com Associado Certificado Sun para a Plataforma Java (SCJA) Esta certificação representa a entrada ideal para uma carreira de desenvolvimento de aplicativos ou de gerenciamento de projetos de software usando tecnologias Java. Ela valida conhecimentos básicos sobre conceitos orientados a objetos (OO), a linguagem de programação Java e conhecimentos gerais sobre plataformas e tecnologias Java. Realizado nos Centros Autorizados de Testes Prometric Pré-requisitos: nenhum Tipo de Exame: Múltipla escolha e Drag and Drop Número de questões: 51 Nota mínima: 68% (35 de 51 questões) Tempo limite: 115 minutos Realizado nos Centros Autorizados de Testes Prometric Pré-requisitos: nenhum Tipo de Exame: Múltipla escolha e Drag and Drop Número de questões: 60 Nota mínima: 58,33% (35 de 60 questões) Tempo limite: 180 minutos Esta certificação de base destina-se a programadores que estejam interessados em demonstrar proficiência nos fundamentos da linguagem de programação Java. Atualmente na versão Java 6. Programador Certificado Sun para a Plataforma Java (SCJP) Desenvolvedor Certificado Sun para a Plataforma Java (SCJD) Esta certificação baseada no desempenho destina-se a desenvolvedores que estejam interessados em demonstrar proficiência avançada na linguagem de programação Java usando a plataforma Java SE. Para obter esta certificação, o candidato deve concluir com êxito dois elementos: uma atribuição de programação e um exame de redação, ou seja, faz 2 etapas. Focado nas seguintes APIs: Thread handling and synchronization Swing (and AWT to the extent necessary to support Swing) Standard file IO (java.io, not java.nio) Either: Socket-based network programming and serialization _or_ Java RMI (Java Remote Method Invocation) (your choice of one or the other, not both). Realizado nos Centros Autorizados de Testes Prometric Pré-requisitos: SCJP qualquer versão Nota mínima: 320 de 400 na prova prática Tempo limite: 120 minutos na prova de redação Desenvolvedor de Componentes Web Certificado Sun (SCWCD) Esta certificação destina-se a desenvolvedores que estejam se especializando na aplicação das tecnologias JSP (JavaServer Pages) e servlet usadas para apresentar Web Services e conteúdo da Web dinâmico. Atualmente na versão JavaEE 5 Realizado nos Centros Autorizados de Testes Prometric Pré-requisitos: SCJP Tipo de Exame: Múltipla escolha e Drag and Drop Número de questões: 69 Nota mínima: 70% (49 de 69 questões) Tempo limite: 180 minutos Desenvolvedor de Componentes de Negócios Certificado Sun (SCBCD) Esta certificação destina-se a desenvolvedores de componentes de negócios com a tecnologia Enterprise JavaBeans (EJB) que são responsáveis pelas atividades de projeto, desenvolvimento, teste, implantação e integração de aplicativos EJB. Atualmente na versão JavaEE 5 Realizado nos Centros Autorizados de Testes Prometric Pré-requisitos: SCJP Tipo de Exame: Múltipla escolha, questões baseadas em cenários e Drag and Drop Número de questões: 61 Nota mínima: 59% (36 de 61 questões) Tempo limite: 145 minutos Desenvolvedor Certificado Sun para Web Services em Java (SCDJWS) Esta certificação destina-se a desenvolvedores que criam Web Services para aplicativos com componentes da tecnologia Java. Atualmente na versão JavaEE 5. Realizado nos Centros Autorizados de Testes Prometric Pré-requisitos: SCJP Tipo de Exame: Múltipla escolha e Drag and Drop Número de questões: 69 Nota mínima: 68% (47 de 69 questões) Tempo limite: 150 minutos Desenvolvedor de Aplicativos de Telefonia Móvel Certificado Sun (SCMAD) Esta certificação destina-se a desenvolvedores que criam aplicativos de telefonia móvel com tecnologias Java para celulares ou dispositivos "inteligentes". Realizado nos Centros Autorizados de Testes Prometric Pré-requisitos: SCJP Tipo de Exame: Múltipla escolha e Drag and Drop Número de questões: 68 Nota mínima: 55% (38 de 68 questões) Tempo limite: 150 minutos Arquiteto Corporativo Certificado Sun (SCEA) "O ato de obter certificação o tornará um arquiteto melhor." (Humphrey Sheil, CTO, SCEA e examinador SCEA) Esta certificação se destina a arquitetos corporativos responsáveis por arquitetar e projetar aplicativos compatíveis com Java EE, com ênfase na melhor forma de aproveitar os recursos da tecnologia Java EE para criar designs flexíveis, dimensionáveis e seguros. A certificação SCEA "significa que seus titulares podem assumir responsabilidades por designs avançados e funções de liderança na criação de aplicativos. Para ter um bom aproveitamento, o candidato a SCEA precisa demonstrar profundos conhecimentos dos usos adequados da moderna arquitetura de design e das atuais tecnologias Java EE para aplicativos de negócios." (Ed Tittel e Dr. Bill Brogden) Para obter esta certificação, o candidato deve concluir com êxito três elementos: um exame múltipla escolha baseado no conhecimento, uma atribuição e um exame de redação. (3 etapas) Realizado nos Centros Autorizados de Testes Prometric Pré-requisitos: nenhum Tipo de Exame: Múltipla escolha e Drag and Drop, na primeria fase, modelagem, na segunda, e arguição sobre o projeto na terceira fase. Java = Linguagem + JVM + Bibliotecas http://openjdk.java.net/projects/mlvm/ Dicas O que faz um bom programador: Java não é só a linguagem: é também a JVM Ensina boas práticas de programação e organização de código Outras linguagens podem ser usadas na mesma JVM Conhecer outras coisas além do Java: - BD, Ajax, JavaScript, HTML, Flex, ... Não existe mágica! - Entenda como as coisas funcionam - Aprenda a ler e debugar código! - Essa é a vantagem de projetos Open Source Aprenda Inglês - Há muita documentação em português - As boas documentações e fóruns de discussões são em inglês - Toda tecnologia de ponta é documentada em inglês Opções de Carreira Arquiteto Responsável pelas definições técnicas e estruturação de projetos corporativos de médio e grande porte. Conhecimento avançados sobre sistemas distribuídos, SOA, escalabilidade e alta disponibilidade de sistemas. Certificação: SCEA Outras certificações Líder Técnico Responsável pelo planejamento e bom andamento de projetos Java, solucionando problemas técnicos da equipe Profundo conhecedor da linguagem Java, da JVM e suas bibliotecas além das ferramentas utilizadas para desenvolvimento. Facilidade para ler, entender e apontar falhas e melhorias em código de outros desenvolvedores. Visão global do projeto. Certificação: SCJP Desenvolvedor Mobile Responsável pelo desenvolvimento de sistemas para dispositivos móveis ou sistemas embarcados. Esse tipo de sistema tem suas particularidades e necessita de conhecimentos diferenciados. Conhecedor das particularidades que envolvem o desenvolvimento para celulares e/ou sistemas embarcados, esse é um profissional cada vez mais requisitado. Certificação: SCMAD Consultor Especialista Java capaz de resolver problemas de sistemas complexos de terceiros. Conhecedor de uma grande gama de sistemas, frameworks e ferramentas, é capaz de apontar problemas, identificar soluções, e propor novas alternativas. Certificações: qualquer uma. Tecnologias de Ponta em Java Java EE 6 Jan/1996 - JDK 1.0 Fev/1997 - JDK 1.1 Dez/1998 - J2SE 1.2 Dez/1999 - J2EE 1.2 Mai/2000 - J2SE 1.3 Set/2001 - J2EE 1.3 Fev/2002 - J2SE 1.4 Nov/2003 - J2EE 1.4 Set/2004 - JavaSE 5.0 Mai/2006 - Java EE 5 Dez/2006 - Java SE 6 Final 2007 - OpenJDK Meio de 2009 - Oracle compra a Sun Em breve: Java SE 7 e Java EE 6 http://brunogrossi.com.br twitter: @begrossi Aplicações Corporativas Celulares Blu-ray Disc Saúde http://www.youtube.com/watch?v=9K5PDDF8mJU http://java.sun.com/developer/technicalArticles/xml/brazil/index.html http://w3.datasus.gov.br/datasus/index.php?area=040202 Smartcards e Sistemas Embutidos TV Digital Brasileira http://www.java.com/en/java_in_action Obrigado! http://prezi.com/6aktm7nsn1fy/ Dúvidas? Perguntas? Java 7 Monster.com, dia 01/11: Java: 5000+ Delphi: 75 PHP: 1611 Ruby: 530 Python: 886 Ceviu, dia 01/11: Java: 418 vagas Delphi: 127 vagas PHP: 161 vagas Ruby ou Python: 4 vagas Grande demanda do Mercado 1991 - Inicio do GreenProject de Patrick Naughton, Mike Sheridan, and James Gosling para criar um Set-Top TV 1992 - Criada a linguagem "Oak" e o mascote "Duke" 1993 - Lançado o Mosaic v1.0 - Internet se torna mais popular 1994 - Lançado o WebRunner: primeiro navegador com conteúdo dinâmico 1995 - Oak vira Java, lançado para um seleto grupo. Java na primeira página. Nasce oficialmente. 1996 - Primeiro JavaOne Developer Conference - JDK 1.0 1997 - Mais de 220.000 downloads do JDK 1.1 em 3 semanas. JavaOne se torna maior conferência de desenvolvedores do mundo. 1998 - 2 milhões de usuários. Visa cria primeiro Smart Card com Java. JCP formalizado. 1999 - Lançado plataforma Java 2. Java EE beta. 2000 - Mais de 400 JUGS em volta do mundo. 1,5 milhões no Java Developer Connection. Apple apóia Java 2001 - JavaOne Internacional no Japão. 1 milhão de downloads do Java EE SDK. 2002 - 2 milhões de downloads Java EE SDK. 78% dos executivos acreditam no Java EE. 2003 - Java rodando em quase 550 milhões de desktops. 75% dos desenvolvedores usando Java. 2004 - Java 5 lançado. Mars Rover (Spirit) toca o solo de Marte, "powered by Java". Sun Java Studio Creator 2005 - 10 anos do Java. 4,5 milhões de desenvolvedores. 2,5 bilhões de dispositivos Java. 2006 - Rich Green anuncia início do processo de abertura do Java. NetBeans IDE 5.0 e Glassfish lançados.