1º Seminário de Software Livre Tchêlinux 1º Seminário de Software Livre Tchêlinux Gravataí - ULBRA Gravataí - ULBRA Desenvolvendo Desenvolvendo Aplicações Livres em Java Aplicações Livres em Java João Avelino Bellomo Filho João Avelino Bellomo Filho Ranieri de Souza Fernandes Ranieri de Souza Fernandes
70
Embed
Desenvolvendo Aplicações Livres em Java · Desenvolvendo Aplicações Livres em Java Detalhes sobre a plataforma JEE (Java EE): • JTA (Java Transaction API), é uma API que padroniza
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1º Seminário de Software Livre Tchêlinux1º Seminário de Software Livre TchêlinuxGravataí ULBRAGravataí ULBRA
DesenvolvendoDesenvolvendoAplicações Livres em JavaAplicações Livres em Java
João Avelino Bellomo FilhoJoão Avelino Bellomo FilhoRanieri de Souza FernandesRanieri de Souza Fernandes
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
AgendaAgenda✔ Java, como começou...Java, como começou...✔ Plataforma JavaPlataforma Java✔ Java e Software LivreJava e Software Livre✔ Ferramentas: Eclipse, Netbeans, etc...Ferramentas: Eclipse, Netbeans, etc...✔ Servidor de AplicaçãoServidor de Aplicação✔ Frameworks: Google Web Toolkit, ANDROID, Frameworks: Google Web Toolkit, ANDROID,
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Java, como começou?Java, como começou?✔ Linguagem OakLinguagem Oak✔ Green ProjectGreen Project✔ ObjetivosObjetivos
✔ Orientada a objetosOrientada a objetos✔ Permitir a execução em diferentes S.O.sPermitir a execução em diferentes S.O.s✔ Conter suporte nativo para redesConter suporte nativo para redes✔ Execução segura a partir de fontes remotasExecução segura a partir de fontes remotas✔ Fácil de usar aproveitando características de Fácil de usar aproveitando características de
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Java, como começou?Java, como começou?
✔ Linguagem OakLinguagem Oak✔ Green ProjectGreen Project✔ ObjetivosObjetivos✔ A integração com o Netscape BrowserA integração com o Netscape Browser✔ Applets, Java 2, evolução do desenvolvimentoApplets, Java 2, evolução do desenvolvimento
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
JVM – O segredo da portabilidadeJVM – O segredo da portabilidade✔ Java Virtual Machine é, a grosso modo, um Java Virtual Machine é, a grosso modo, um
interpretador de bytecodesinterpretador de bytecodes
✔ Interpreta os bytecodes e transformaos em uma Interpreta os bytecodes e transformaos em uma série de instruções nativas, utilizando recursos série de instruções nativas, utilizando recursos do SO.do SO.
✔ É a base de toda plataforma JavaÉ a base de toda plataforma Java✔ Contém a API, o gerenciamento de memória, e Contém a API, o gerenciamento de memória, e
todos os recursos base utilizados pelas outras todos os recursos base utilizados pelas outras ediçõesedições
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
JVM – O segredo do desempenhoJVM – O segredo do desempenho
Trecho da entrevista com Orkut Buyukkokten, criador do OrkutTrecho da entrevista com Orkut Buyukkokten, criador do Orkut
“ “ Ontem, aqui na Abril, nós conversamos com o Orkut umas Ontem, aqui na Abril, nós conversamos com o Orkut umas duas horas. Ele contou que criou o site de relacionamentos duas horas. Ele contou que criou o site de relacionamentos em .Net – gosta particularmente de C# pela rapidez de em .Net – gosta particularmente de C# pela rapidez de programação – mas teve de passar para programação – mas teve de passar para Java por ter a Java por ter a escalabilidadeescalabilidade necessárianecessária. A passagem de uma tecnologia . A passagem de uma tecnologia para a outra durou um ano – daí as 80 horas por semana” para a outra durou um ano – daí as 80 horas por semana” (InfoOnline)(InfoOnline)
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
A API JavaA API Java✔ Conjunto de funcionalidades Conjunto de funcionalidades nativasnativas da linguagem da linguagem✔ Carga dinâmica de bibliotecasCarga dinâmica de bibliotecas✔ Abstração do sistema operacionalAbstração do sistema operacional✔ O que não estiver implementado, é facilmente O que não estiver implementado, é facilmente
integradointegrado✔ Não é Não é engessadoengessado. O programador pode fazer . O programador pode fazer
suas próprias implementaçõessuas próprias implementações
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Detalhes sobre a plataformaDetalhes sobre a plataforma✔ JME (Java ME)JME (Java ME): é, basicamente, um subset da : é, basicamente, um subset da
JSE, utilizada para ambientes JSE, utilizada para ambientes embeddedembedded✔ É a tecnologia mais utilizada no mundo para É a tecnologia mais utilizada no mundo para
dispositivos dispositivos embeddedembedded✔ Pode rodar numa infinidade de dispositivos: Pode rodar numa infinidade de dispositivos:
✔ Possui um robusto sistema de segurança, Possui um robusto sistema de segurança, protocolos de comunicação integrados e todas protocolos de comunicação integrados e todas as características de portabilidade do Javaas características de portabilidade do Java
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Detalhes sobre a plataformaDetalhes sobre a plataforma✔ JEE (Java EE)JEE (Java EE): é a plataforma de : é a plataforma de
desenvolvimento de aplicações desenvolvimento de aplicações enterpriseenterprise✔ É construída sobre a J2SEÉ construída sobre a J2SE✔ Provê recursos para desenvolvimento de Provê recursos para desenvolvimento de
aplicações de grande porte, multicamadas, aplicações de grande porte, multicamadas, portáveis e escaláveisportáveis e escaláveis
✔ Possibilita o desenvolvimento da aplicação, Possibilita o desenvolvimento da aplicação, livrando o programador de criar do zero livrando o programador de criar do zero estruturas altamente complexas e que não estão estruturas altamente complexas e que não estão diretamente relacionadas à lógica da aplicaçãodiretamente relacionadas à lógica da aplicação
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Detalhes sobre a plataformaDetalhes sobre a plataforma✔ J2EE (Java EE)J2EE (Java EE): :
• JDBCJDBC (Java Database Connectivity), utilizado no (Java Database Connectivity), utilizado no acesso a bancos de dados;acesso a bancos de dados;
• ServletsServlets, são utilizados para o desenvolvimento de , são utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico aplicações Web com conteúdo dinâmico
• JSPJSP (Java Server Pages), um especialização do (Java Server Pages), um especialização do servlet que permite que conteúdo dinâmico seja servlet que permite que conteúdo dinâmico seja facilmente desenvolvido.facilmente desenvolvido.
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Detalhes sobre a plataformaDetalhes sobre a plataforma✔ JEE (Java EE)JEE (Java EE): :
• JTAJTA (Java Transaction API), é uma API que (Java Transaction API), é uma API que padroniza o tratamento de transações dentro de uma padroniza o tratamento de transações dentro de uma aplicação Java.aplicação Java.
• EJBsEJBs, utilizados no desenvolvimento de , utilizados no desenvolvimento de componentes de software.componentes de software.
• JCAJCA (Java Connector Architecture), é uma API que (Java Connector Architecture), é uma API que padroniza a ligação a aplicações legadas.padroniza a ligação a aplicações legadas.
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Detalhes sobre a plataformaDetalhes sobre a plataforma✔ Java CardJava Card: : ✔ Interoperabilidade: “Escreva uma vez e rode em qualquer 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 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 implementa diversas funções criptográficas, aproveitando as funções dos cartões inteligentes como tokens criptográficos;inteligentes como tokens criptográficos;
✔ É Java! Aproveite seus conhecimentos JSE para desenvolver para cartões É Java! Aproveite seus conhecimentos JSE para desenvolver para cartões inteligentes!inteligentes!
✔ Capacidade de múltiplos aplicativos no mesmo cartão inteligenteCapacidade de múltiplos aplicativos no mesmo cartão inteligente
✔ Dinâmico: É possível instalar um novo applet que já foi distribuído. Se precisar 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 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.inserido no terminal ele será atualizado.
✔ Compatível com padrões da indústria: Suporta a norma ISO7816 e padrões de 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.telecomunicações. Boa parte dos SIM Cards no Brasil são JavaCards.
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Considerações FilosóficasConsiderações Filosóficas✔ O que é Software Livre???O que é Software Livre???
““Softwares que são fornecidos aos seus usuários Softwares que são fornecidos aos seus usuários com a liberdade de executar, estudar, modificar e com a liberdade de executar, estudar, modificar e repassar (com ou sem alterações) sem que, para repassar (com ou sem alterações) sem que, para isso, os usuários tenham que pedir permissão ao isso, os usuários tenham que pedir permissão ao
autor do programa.”autor do programa.”
✔ O que define um Software como Livre?O que define um Software como Livre?
O Licenciamento, a licença de uso adotada.O Licenciamento, a licença de uso adotada.
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Por quê Java?Por quê Java?✔ O processo sempre foi abertoO processo sempre foi aberto✔ A Sun liberou o códigofonte de toda a plataformaA Sun liberou o códigofonte de toda a plataforma✔ A estratégia dos grandes (IDEs, ferramentas)A estratégia dos grandes (IDEs, ferramentas)✔ É um padrão de indústriaÉ um padrão de indústria✔ As características favorecem a usabilidadeAs características favorecem a usabilidade✔ A disputa entre A disputa entre .Net.Net XX JavaJava✔ Possui um grande portfólio de aplicações Open Possui um grande portfólio de aplicações Open
SourceSource✔ Foi Foi adotadaadotada pela indústria como alternativa às pela indústria como alternativa às
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
CobolCobol✔ O Cobol é a linguagem mais usada no mundo todo, podendo O Cobol é a linguagem mais usada no mundo todo, podendo
chegar a mais de 75% dos códigos existentes. 5 bilhões de lichegar a mais de 75% dos códigos existentes. 5 bilhões de linhas de código de Cobol são adicionadas todos os anos aos nhas de código de Cobol são adicionadas todos os anos aos DataCenters do mundo inteiro. (fonte: itweb)DataCenters do mundo inteiro. (fonte: itweb)
✔ Mais de 83% das transações mundiais são feitas em Cobol. Mais Mais de 83% das transações mundiais são feitas em Cobol. Mais de 60% das informações residentes na Web estão em de 60% das informações residentes na Web estão em Mainframe.Mainframe.
✔ Mais de 95% das aplicações financeiras e seguridade são Mais de 95% das aplicações financeiras e seguridade são processadas em Cobol.processadas em Cobol.
✔ Raras universidade possui em sua grade cursos relacionados à Raras universidade possui em sua grade cursos relacionados à plataforma Mainframe. plataforma Mainframe.
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Ferramentas de DesenvolvimentoFerramentas de Desenvolvimento✔ Netbeans 6.1Netbeans 6.1
• Editor ImprovementsEditor Improvements• Ruby/JRuby/Ruby on Rails SupportRuby/JRuby/Ruby on Rails Support• Easier Installation and UpgradingEasier Installation and Upgrading• Swing GUI DevelopmentSwing GUI Development• ProfilingProfiling• Web and Java EEWeb and Java EE• MobilityMobility• SOASOA• UMLUML• C/C++C/C++• NetBeans Platform API ImprovementsNetBeans Platform API Improvements
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
O que é um framework?O que é um framework?
“ “Um framework provê uma solução para uma Um framework provê uma solução para uma família de problemas semelhantes, sendo família de problemas semelhantes, sendo
flexível e extensível para permitir a flexível e extensível para permitir a construção de várias aplicações com menor construção de várias aplicações com menor
esforço, especificando apenas as esforço, especificando apenas as particularidades de cada aplicação.”particularidades de cada aplicação.”
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Framework – Google Web Toolkit Framework – Google Web Toolkit ✔ Simplifica o desenvolvimento de aplicações AJAXSimplifica o desenvolvimento de aplicações AJAX✔ ““Hosted Mode”, com depuração do código Hosted Mode”, com depuração do código ✔ Javascript compatível com principais navegadoresJavascript compatível com principais navegadores✔ Suporte a InternacionalizaçãoSuporte a Internacionalização✔ Integração com principais IDE’sIntegração com principais IDE’s✔ Licença Apache 2.0Licença Apache 2.0✔ Mais de 8.000 membros no GWT Developer ForumMais de 8.000 membros no GWT Developer Forum✔ Mais de 300 membros no GWT Contributors ForumMais de 300 membros no GWT Contributors Forum✔ Muitos patches externos incluídos no GWT 1.4Muitos patches externos incluídos no GWT 1.4✔ Mais de 1.000.000 de downloadsMais de 1.000.000 de downloads
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Framework – AndroidFramework – Android✔ Plataforma Open Source para Dispositivos MóveisPlataforma Open Source para Dispositivos Móveis✔ Open Handset AllianceOpen Handset Alliance✔ Google, Motorola, Intel, NVIDIA, etc ...Google, Motorola, Intel, NVIDIA, etc ...✔ Padronização para AplicaçõesPadronização para Aplicações✔ API de acesso a hardware em C/C++API de acesso a hardware em C/C++✔ Desenvolvimento em JAVADesenvolvimento em JAVA✔ DVM – Dalvik Virtual Machine (.dex)DVM – Dalvik Virtual Machine (.dex)✔ S.O. Linux, kernel 2.6S.O. Linux, kernel 2.6
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Framework – Android RecursosFramework – Android Recursos✔ Browser integradoBrowser integrado✔ API gráfica 2D e 3D – OpenGLAPI gráfica 2D e 3D – OpenGL✔ Base de dados SQLiteBase de dados SQLite✔ Multimídia (Mpeg, H.264, MP3, JPG, etc ...)Multimídia (Mpeg, H.264, MP3, JPG, etc ...)✔ Telefonia GSMTelefonia GSM✔ Bluetooth, EDGE, 3G e WiFiBluetooth, EDGE, 3G e WiFi✔ Câmera, GPS, acelerômetro, etc...Câmera, GPS, acelerômetro, etc...✔ Ambiente Integrado de Desenvolvimento (Eclipse)Ambiente Integrado de Desenvolvimento (Eclipse)✔ Emulador de Dispositívo MóvelEmulador de Dispositívo Móvel✔ Suporte a Fonte TrueTypeSuporte a Fonte TrueType
Desenvolvendo Aplicações Livres em JavaDesenvolvendo Aplicações Livres em Java
Framework – OpenLaszloFramework – OpenLaszlo
✔ Simplifica o desenvolvimento de aplicações AJAXSimplifica o desenvolvimento de aplicações AJAX✔ Interfaces "cinemáticas" e dinâmicasInterfaces "cinemáticas" e dinâmicas✔ linguagem LZX declarativa, mesclando XML e linguagem LZX declarativa, mesclando XML e
JavascriptJavascript
✔ Gera flash ou DHTML dinâmicamenteGera flash ou DHTML dinâmicamente✔ Roda em container web JavaRoda em container web Java