1º Seminário de Software Livre Tchêlinux Gravataí ­ ULBRA Desenvolvendo Aplicações Livres em Java João Avelino Bellomo Filho Ranieri de Souza Fernandes Desenvolvendo Aplicações Livres em Java Os Palestrantes Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Agenda ✔ Java, como começou... ✔ Plataforma Java ✔ Java e Software Livre ✔ Ferramentas: Eclipse, Netbeans, etc... ✔ Servidor de Aplicação ✔ Frameworks: Google Web Toolkit, ANDROID, OpenLazlo, etc... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Java, como começou? ✔ ✔ ✔ Linguagem Oak Green Project → *7 (StarSeven) Objetivos ✔ Orientada a objetos ✔ Permitir a execução em diferentes S.O.s ✔ Conter suporte nativo para redes ✔ Execução segura a partir de fontes remotas ✔ Fácil de usar aproveitando características de outras Linguagens Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Java, como começou? ✔ ✔ ✔ ✔ ✔ Linguagem Oak Green Project Objetivos A integração com o Netscape Browser Applets, Java 2, evolução do desenvolvimento Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Quem ”manda” no Java? ✔ JCP – Java Community Process ✔ Qualquer um pode se inscrever ✔ O processo é aberto desde o início ✔ O papel da Sun Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Membros JCP ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Apache Software Foundation BEA Systems Borland Google Fujitsu Limited Hewlett­Packard IBM Intel Oracle Red Hat SAP Sun Microsystems ... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Brasil no JCP ✔ SouJava ✔ Bruno Souza ✔ ✔ Marlon Luz Osvaldo Pinali Doederlein ✔ Waldir Pires Jr. ✔ ... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java O que é realmente o Java? ✔ A visão comum ­ linguagem ✔ O que realmente é? Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Plataforma Java ✔ Três grande subdivisões: • JSE (Java SE): Java Standard Edition • JEE (Java EE): Java Enterprise Edition • JME (Java ME): Java Micro Edition Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java JVM – O segredo da portabilidade Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java JVM – O segredo da portabilidade ✔ ✔ ✔ ✔ Java Virtual Machine é, a grosso modo, um interpretador de bytecodes Interpreta os bytecodes e transforma­os em uma série de instruções nativas, utilizando recursos do SO. É a base de toda plataforma Java Contém a API, o gerenciamento de memória, e todos os recursos base utilizados pelas outras edições Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java JVM – O segredo do desempenho J I T Compilador just­in­time Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java JVM – O segredo do desempenho ✔ Paul Buchheit foi o criador e líder de desenvolvimento do Gmail. Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java JVM – O segredo do desempenho Trecho da entrevista com Orkut Buyukkokten, criador do Orkut “ Ontem, aqui na Abril, nós conversamos com o Orkut umas duas horas. Ele contou que criou o site de relacionamentos em .Net – gosta particularmente de C# pela rapidez de programação – mas teve de passar para Java por ter a escalabilidade necessária. A passagem de uma tecnologia para a outra durou um ano – daí as 80 horas por semana” (InfoOnline) Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java A API Java ✔ ✔ ✔ ✔ ✔ ✔ Conjunto de funcionalidades nativas da linguagem Carga dinâmica de bibliotecas Abstração do sistema operacional O que não estiver implementado, é facilmente integrado Não é engessado. O programador pode fazer suas próprias implementações Garbage Collector Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Garbage Collector Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Detalhes sobre a plataforma ✔ JSE (Java SE): contém a JVM, API e recursos Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Detalhes sobre a plataforma ✔ ✔ ✔ ✔ JME (Java ME): é, basicamente, um subset da JSE, utilizada para ambientes embedded É a tecnologia mais utilizada no mundo para dispositivos embedded Pode rodar numa infinidade de dispositivos: telefones celulares, PDA's, TV's, impressoras, etc... Possui um robusto sistema de segurança, protocolos de comunicação integrados e todas as características de portabilidade do Java Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Detalhes sobre a plataforma ✔ ✔ ✔ ✔ JEE (Java EE): é a plataforma de desenvolvimento de aplicações enterprise É construída sobre a J2SE Provê recursos para desenvolvimento de aplicações de grande porte, multi­camadas, portáveis e escaláveis Possibilita o desenvolvimento da aplicação, livrando o programador de criar do zero estruturas altamente complexas e que não estão diretamente relacionadas à lógica da aplicação Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Detalhes sobre a plataforma ✔ J2EE (Java EE): • JDBC (Java Database Connectivity), utilizado no acesso a bancos de dados; • Servlets, são utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico • JSP (Java Server Pages), um especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido. Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Detalhes sobre a plataforma ✔ JEE (Java EE): • JTA (Java Transaction API), é uma API que padroniza o tratamento de transações dentro de uma aplicação Java. • EJBs, utilizados no desenvolvimento de componentes de software. • JCA (Java Connector Architecture), é uma API que padroniza a ligação a aplicações legadas. Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Detalhes sobre a plataforma ✔ ✔ ✔ ✔ ✔ ✔ ✔ Java Card: Interoperabilidade: “Escreva uma vez e rode em qualquer Java Card; Seguro: Além do ambiente de execução seguro herdado de JSE, Java Card implementa diversas funções criptográficas, aproveitando as funções dos cartões inteligentes como tokens criptográficos; É Java! Aproveite seus conhecimentos JSE para desenvolver para cartões inteligentes! Capacidade de múltiplos aplicativos no mesmo cartão inteligente Dinâmico: É possível instalar um novo applet que já foi distribuído. Se precisar atualizar o serviço no cartão de seus clientes, na próxima vez que o cartão for inserido no terminal ele será atualizado. Compatível com padrões da indústria: Suporta a norma ISO7816 e padrões de telecomunicações. Boa parte dos SIM Cards no Brasil são JavaCards. Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Hmmm... E onde está o Software Livre??? Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Considerações Filosóficas ✔ O que é Software Livre??? “Softwares que são fornecidos aos seus usuários com a liberdade de executar, estudar, modificar e repassar (com ou sem alterações) sem que, para isso, os usuários tenham que pedir permissão ao autor do programa.” ✔ O que define um Software como Livre? O Licenciamento, a licença de uso adotada. Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Considerações Filosóficas ✔ Licenças de Software Livre: • GPL (General Public License) • BSD (Berkeley Software Distribution) • Mozilla • Apache • etc ... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Considerações Filosóficas ✔ Quais as motivações de desenvolver Software Livre? • Ambiente de teste amplo • Desenvolvimento Colaborativo • O nome do Desenvolvedor fica conhecido • Devolve a sociedade, e recebe dela, conhecimento • etc... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Java não é e nunca será Software Livre! Java não é software, é uma especificação! As implementações de Java que podem ser Software Livre! Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Por quê Java? ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ O processo sempre foi aberto A Sun liberou o código­fonte de toda a plataforma A estratégia dos grandes (IDEs, ferramentas) É um padrão de indústria As características favorecem a usabilidade A disputa entre .Net X Java Possui um grande portfólio de aplicações Open Source Foi adotada pela indústria como alternativa às soluções fechadas Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Java e o Software Livre ✔ ✔ Freshmeat ranking de linguagens ✔ 1­ C (8851 projetos) ✔ 2­ Java (5822 projetos) ✔ 3­ C++ (4867 projects) Portal java.net ✔ Projetos ✔ Grupos de usuários ✔ Foruns Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Adoção do Java TIOBE Programming Community Index for November 2007 Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Adoção do Java TIOBE Programming Community Index for November 2007 Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Qual é a linguagem com mais linhas de código escrito no mundo? COBOL! Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Cobol ✔ ✔ ✔ ✔ O Cobol é a linguagem mais usada no mundo todo, podendo chegar a mais de 75% dos códigos existentes. 5 bilhões de li­ nhas de código de Cobol são adicionadas todos os anos aos DataCenters do mundo inteiro. (fonte: itweb) Mais de 83% das transações mundiais são feitas em Cobol. Mais de 60% das informações residentes na Web estão em Mainframe. Mais de 95% das aplicações financeiras e seguridade são processadas em Cobol. Raras universidade possui em sua grade cursos relacionados à plataforma Mainframe. Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Qual das linguagens de programação modernas roda em Mainframes? JAVA! Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Java no Mainframe Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Quais ferramentas existem para se trabalhar com Java? Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java O JDK ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ java (runtime) javac (compilador) javadoc (documentador) jar jarsigner javaws jconsole ... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ JConsole Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ Eclipse Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ Eclipse • Open Source • Multiplataforma • Grande gama de plugins e recursos • Desenvolvimento para todas as edições • Extremamente intuitivo • Diversos “Sabores” Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ Eclipse Foundation • Europa Fall – 3.3.2 • http://www.eclipse.org • Várias opções disponíveis • IDE for Java Developers (79M) • IDE for Java EE Developers (125M) • IDE for C/C++ Developers (59M) • For RCP/Plugin Developers (153M) • Classic (137M) Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ EasyEclipse • Mantida por um time de desenvolvedores • http://www.easyeclipse.org/ • Opções oferecidas: • Exper Java (1.2.2 – 121M / 1.3.1.1 ­ 133M) • Desktop Java (1.2.2 – 127M/ 1.3.1.1 ­ 139M) • Server Java (1.2.2 – 223M) • Mobile Java (1.2.2 – 131M/ 1.3.1.1 ­ 152M) • For Plugins and RCP Apps (1.2.2 – 209M/ 1.3.1.1 – 224M) • For C/C++; Ruby and Rails; PHP; Python; LAMP; etc ... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ NetBeans Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ Netbeans • Open Source • Multiplataforma • Grande gama de plugins e recursos • Desenvolvimento para todas as edições • Extremamente intuitivo Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ Netbeans 6.1 • • • • • • • • • • • Editor Improvements Ruby/JRuby/Ruby on Rails Support Easier Installation and Upgrading Swing GUI Development Profiling Web and Java EE Mobility SOA UML C/C++ NetBeans Platform API Improvements Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ JEdit Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Ferramentas de Desenvolvimento ✔ Kdevelop Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Quem ganha com a existência destas IDE's opensource? ✔ Quem quer aprender ✔ Quem quer trabalhar ✔ Quem quer ensinar ✔ Quem quer empreender ✔ Quem não trabalha com Java!? Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Outras Ferramentas ✔ ✔ ✔ ✔ ✔ ✔ ✔ Jude (UML) Argo UML JFreeChart JGoodies JavaDB (Derby) HSQLDB ... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Servidores de Aplicação JEE ✔ Diversos fornecedores de soluções ✔ Diversos servidores certificados ✔ O poder da escolha, você decide ✔ Facilita negociações de contratos Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Servidores de Aplicação JEE ­ Open ✔ ✔ ✔ ✔ ✔ ✔ ✔ JBoss (RedHat) Geronimo (Apache) GlassFish TomCat JOnAS OpenEJB ... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Servidores de Aplicação JEE 33 fornecedores ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Apache Software Foundation ATG BEA Systems Borland Corp. Caucho Technology, Inc. DataDirect Technologies Fujitsu Hewlett­Packard Hitachi IBM ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ IONA Technologies IronFlare JBoss Group Kingdee Middleware Macromedia NEC Nokia (Novell) SilverStream ObjectWeb Oracle Corporation Pramati SAP Tchelinux - ULBRA Gravataí ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ SAS Institute, Inc. SeeBeyond Sonic Software Corporation SpiritSoft Sun Microsystems Sybase, Inc. TIBCO Software Inc. Tmax Soft TongTech Co., Ltd Trifork Technologies webMethods Desenvolvendo Aplicações Livres em Java O que é um framework? “Um framework provê uma solução para uma família de problemas semelhantes, sendo flexível e extensível para permitir a construção de várias aplicações com menor esforço, especificando apenas as particularidades de cada aplicação.” Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Frameworks ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Struts Spring Hibernate JavaServer Faces JDO JUnit Ant Jasper Report / iReport JMeter Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Frameworks – R.I.A. ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ GWT (Google Web Toolkit) Openlaszlo Flex (Adobe) Thinlet ThinWire Java Web Start DWR ... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Framework – Google Web Toolkit ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Simplifica o desenvolvimento de aplicações AJAX “Hosted Mode”, com depuração do código Javascript compatível com principais navegadores Suporte a Internacionalização Integração com principais IDE’s Licença Apache 2.0 Mais de 8.000 membros no GWT Developer Forum Mais de 300 membros no GWT Contributors Forum Muitos patches externos incluídos no GWT 1.4 Mais de 1.000.000 de downloads Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Framework – Google Web Toolkit Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Framework – Android ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Plataforma Open Source para Dispositivos Móveis Open Handset Alliance Google, Motorola, Intel, NVIDIA, etc ... Padronização para Aplicações API de acesso a hardware em C/C++ Desenvolvimento em JAVA DVM – Dalvik Virtual Machine (.dex) S.O. Linux, kernel 2.6 Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Framework – Android ­ Recursos ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Browser integrado API gráfica 2D e 3D – OpenGL Base de dados SQLite Multimídia (Mpeg, H.264, MP3, JPG, etc ...) Telefonia GSM Bluetooth, EDGE, 3G e WiFi Câmera, GPS, acelerômetro, etc... Ambiente Integrado de Desenvolvimento (Eclipse) Emulador de Dispositívo Móvel Suporte a Fonte TrueType Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Framework – Android ­ Arquitetura Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Framework – Android IDE e Emulador Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Framework – OpenLaszlo ✔ ✔ ✔ Simplifica o desenvolvimento de aplicações AJAX Interfaces "cinemáticas" e dinâmicas linguagem LZX declarativa, mesclando XML e Javascript ✔ Gera flash ou DHTML dinâmicamente ✔ Roda em container web Java Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Framework – OpenLaszlo Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Apache Software Foundation ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Projeto jakarta TomCat Harmony Commons Velocity XMLBeans DB Project Harmony .... Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Outras linguagens na JVM ✔ ✔ ✔ ✔ Jython (python) Javascript (rhino) Groove JRuby (Ruby) Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Demonstração ✔ Instalação da JDK ✔ Download da documentação ✔ Instalação do Netbeans ✔ Instalação dos pacotes adicionais Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java ??? Conclusão ??? Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Bibliografia ✔ java.sun.com ✔ www.portaljava.com ✔ www.javafree.com.br ✔ www.jcp.org/en/participation/members/ ✔ http://www­03.ibm.com/systems/z/zaap/ ✔ http://paulbuchheit.blogspot.com/2007/06/java­is­faster­than­c.html ✔ http://www.tiobe.com/tpci.htm ✔ http://info.abril.com.br/blog/sandra/20070410_listar.shtml ✔ http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/oque.htm ✔ http://pt.wikipedia.org/wiki/Java_Card Tchelinux - ULBRA Gravataí Desenvolvendo Aplicações Livres em Java Bibliografia ✔ http://www.javaworld.com/javaworld/jw­01­2002/jw­0111­hotspotgc.html ✔ http://java.net Tchelinux - ULBRA Gravataí