Java – Até onde podemos ir tomando café? Pensamentos elevados devem ter uma linguagem elevada – Aristófanes O que é Java? Linguagem ou Tecnologia? O que é Java? • Ao contrário do que muitos pensam, Java não é apenas uma linguagem de programação, mas sim uma 'Plataforma de Desenvolvimento e Execução de Software'. • Plataforma composta principalmente por: – – – – Máquina Virtual Java(JVM). Linguagem de programação. Conjunto padrão de bibliotecas (Core API). Ambiente de Deployment. Java 2: As 3 grandes áreas Arquitetura J2SE Java Community Process www.jcp.org Java Community Process • Organização aberta e participativa de desenvolvedores e licenciados da tecnologia Java. • Objetivo: Desenvolver e revisar as especificações Java, implementações de referência e os kits de compatibilidade. • Conta hoje (20/09/2008) com mais de 1500 membros. Java Specification Request (JSR) • Solicitação para uma nova especificação. • Pode ser: – Modificação de uma especificação existente. – Nova biblioteca. – Nova plataforma. • Possui um líder (Spec Lead) e um grupo (Expert Group). • Fases: – – – – JSR Review. Community Draft. Public Draft. Final Release. • Exige uma Implementação de Referência (RI) e um kit de teste de compatibilidade (TCK). JSR#176: J2SE 1.5 (Tiger) • • • • • • • • • • • • • Apache Software Foundation Borland Software Corporation Hewlett-Packard Nokia Corporation SAP AG SavaJe Tecnologies Apple Computer, Inc Cisco Systems Fujitsu Limited IBM Macromedia, Inc Oracle Sun Microsystems (Lead) JSR#26: UML → EJB • • • • • • • • Fujitsu Limited IONA Tecnologies PLC Oracle Sun Microsystems, Inc IBM Open Cloud Rational Software (Lead) Unisys JSR#37: MIDP • • • • • • • • • • • • America Online • Espial Group • Hitachi, Ltda • KDDI Corporation Mitsubishi Eletric Corp• • NEC • Oracle SONY International • • Sharp Corporation • Sun Microsystems Telcordia Tecnologies Ericsson Inc Fujitsu Limited J-Phone Tokio Matsushita Eletric Motorola (Lead) Nokia Corporation Research In Motion Samsung Eletronics Siemens AG Symbian SunSource.net • A Sun Microsystems suporta alguns projetos de software livre: – – – – – – – – – – OpenSolaris: sistema operacional. Brazil: desenvolvimento de aplicações Web. GlassFish: servidor de aplicações. Grid Engine: administração de recursos distribuídos. Interoperability Prototype for Liberty. JRMS: multicast applications. JXTA: computação distribuída com peer-to-peer. Netbeans: ide java. OpenOffice.org: office livre. Jini: descoberta de serviços em rede. LINGUAGEM MAIS UTILIZADA DO MUNDO • Java tem 20.72% de popularidade entre os programadores. Java.net • O site foi criado para centralizar a comunidade Java mundial em um local de discussão, de troca de informação, código e experiências. • Foi observado que foram criadas diversas tecnologias que tornaram-se padrões mesmo sem terem passado pelo JCP. • Alguns projetos: – – – – Java Desktop Java Games Java Patterns Javapedia Máquinas Virtuais Livres Projetos de JVM GNU e Java • GCJ: The GNU Compiler for Java – Fonte Java diretamente para código de máquina. – Fonte Java para bytecodes Java. – Bytecodes Java para código de máquina. • The GNU Package – Coleção de pacotes Java licenciadas pela GPL. • Máquinas virtuais Kaffe e Japhar Java e Linux • Primeiro porte foi efetuado pela Blackdown. • Existem também máquinas fornecidas pela IBM e pela Sun. • A Sun libera simultâneamente suas versões da máquina virtual Java para Solaris, Windows e Linux. Java e FreeBSD • Em Dezembro de 2001, a Fundação FreeBSD recebeu a licença para portar oficialmente a máquina virtual Java para o sistema operacional FreeBSD de maneira nativa. • Antes disto, os usuários usavam a máquina virtual para Linux. • http://www.freebsd.org/java Kaffe e Guaraná • Kaffe é uma implementação livre da máquina virtual Java em conjunto com a bibliotecas básicas de classes (core api). • Boa escolha para pesquisas e estudos de máquina virtual. • Foi usada como base para uma máquina virtual reflexiva no Brasil: Guaraná. Projeto Javali • Projeto criado pelo jug Soujava para auxiliar o uso de tecnologias abertas pelo Governo Brasileiro. • http://www.javali.org.br • Objetivos: – Promover geração de tecnologia. – Geração de conhecimento em universidades e centros de pesquisa. – Auxiliar o Governo no desenvolvimento de aplicações. – Ampliar a atividade dos JUG's. – Posicionar o Brasil no mercado mundial. – Integrar desenvolvedores nacionais com os internacionais. Projetos Javali • • • • • • • Máquina Virtual Livre Conjunto de Bibliotecas Livres IDE Soluções de Integração de Aplicações Cliente Componentes Visuais para eGov Tecnologia para TV Digital Geração de Documentação em Português SuperWaba • Máquina virtual similar ao Java para PDA's Palm e Pocket PC e Symbian. • Utilizado pela COPEL (Compania Paranaense de Eletricidade) em seus sistemas. • Mantido por um brasileiro. LeJOS: Java em Lego • Máquina virtual livre que possibilitou uso de Java em controladores RCX. Outras Máquinas Livres • Jikes RVM (IBM) – Máquiva virtual para pesquisas. – Testes de design. • Japhar – Máquina virtual escrita do zero. • LaTTe – Específica para máquinas RISC. • JamVM – Pequena VM para PowerPC • kissme – Criada inicialmente para decoders de satélite. • SableVM – Projeto de pesquisas de Etienne M. Gagnon, Ph.D. • joeq – Escrita totalmente em Java. Software Livre com Java Alguns exemplos: IDE's Java Livres • NetBeans – IDE patrocinada pela Sun. • Eclipse – IDE patrocinada pela IBM. • jEdit – Editor de fontes baseado em plugin's. • Jext – IDE para diversas linguagens escrita em Java. • BlueJ – IDE para aprendizado introdutório de OO. Servidores J2EE • JBossAS – Foi escolhido como melhor servidor de aplicação pela revista JavaWorld no ano de 2002. • JOnAS – Já foi chamado de JBoss Killer :-). • Apache Geronimo – Servidor que vem sendo desenvolvido pela Apache. • JFox – Servidor J2EE chinês. • GlassFish – Projeto java.net promovido pela Sun. Servidores J2EE - Servlets/JSP • Jetty – Servidor Servlet/JSP da Mort Bay. (Consultora Jetty e JBoss). • Jigsaw – Servidor HTTP 1.1 de referência da W3C. • Tomcat – Servidor de referência da tecnologia Servlet/JSP. Banco de Dados e Prevalência • HSQL – Banco de Dados SQL leve escrito em Java. – Usado no programa de acompanhamento da apuração eleitoral. • McKoi – Banco de Dados SQL escrito em Java para execução emambiente Client/Server. • Derby – Projeto da Apache derivado do Cloudscape. • Prevailer – Camada de prevalência escrita em Java. – Escrito por um brasileiro e utilizado mundialmente. Projeto Jakarta • Jakarta é um projeto da Fundação Apache, encarregado da criação e manutenção de soluções server-side de fonte aberto e de qualidade comercial para a plataforma Java, baseadas na licença da própria fundação para serem distribuídos sem custo para o público. Enhydra • Projeto similar ao Apache, mas com maior foco no E-Business. • Milhares de desenvolvedores em 50 países. • Aplicações: – Open Source Enhydra: Application Server baseado em XML. – Enhydra ME: Apis para Java 2 Micro Edition. – Applications: Design Gráfico para Workflow. – Tools & Tecnologies: Ferramentas XML, plugins para IDE's, relacionamento objeto-relacional. ObjectWeb Consortium • Comunidade de software Open Source criada no final de 1999 pela France Telecom, Bull e INRIA e é mantido pelo Ministério Francês da Economia, Finanças e Industria. • Objetiva o desenvolvimento de middleware Open Source. Compiere ERP & CRM • Implementação de um ERP com CRM integrado desenvolvido em Java 2 Enterprise Edition. • Contra: Fortemente integrado com Oracle 9i. Atualmente sendo desenvolvido o porte para PostgreSQL. • CompiereBR: Versão suportada no Brasil. – Abrange os processos de Vendas, Compras, Financeiro, Contabilidade, Custos, Manufatura, Estoque, Projetos, Serviços e WebStore. OpenSymphony • Projeto Open Source dedicado a prover aplicações e componentes J2EE (maioria Servlet). • Objetivo similar ao Jakarta Commons. • Possue: – – – – – Classes utilitárias. Layout para páginas web. Engine de Workflow. Cache para J2EE. etc... sourceFORGE.net • É o maior site de desenvolvimento Open Source e abriga muitos projetos em Java. • Java é a terceira tecnologia mais utilizada no site. • No dia 10/09/2005 estava com 17.352 projetos em Java. Segunda colocada. Projetos por Linguagem 18000 16000 16192 15970 15479 14000 12000 11647 10000 8000 6000 4000 2682 2137 1872 2000 0 C++ Java C PHP Delphi C# 4 25 Cobol Progress VisualBasic jake2 • Porte do engine Quake2 da idSoftware para java. Joone • Java Object Oriented Neural Engine • Joone é framework livre para criação, treinamento, e testes de redes neurais. • Inclui um editor visual. MegaTrack • Faz o tracking de tempestades tropicais. jlGui – Java Music Player • Aplicação em Java que suporta os formatos MP3, OGG Vorbis, WAV, AIFF, AU e SPEEX. • Clone do winamp ;-), inclusive suporte as skins. • Você pode iniciá-lo da sua pagina via JWS. Columba • Cliente de e-mail Azureus • Cliente BitTorrent em Java. Software Livre com Java Por que usar? Padrão Aberto e MultiPlataforma Java e Software Livre Obrigado pela paciência! ... If you can imagine it, Someone is doing it in Java