Você está na página 1de 94

UNIVERSIDADE DO CONTESTADO CURSO DE SISTEMAS DE INFORMAO

DANIEL SCHROEDER

CONFRONTO TECNOLOGICO ENTRE MONO(.NET FRAMEWORK) E JAVA

CANOINHAS 2009

DANIEL SCHROEDER

CONFRONTO TECNOLOGICO ENTRE MONO(.NET FRAMEWORK) E JAVA

Monografia apresentada como exigncia para a obteno do ttulo de Bacharel do curso de Sistemas de Informao, ministrado pela Universidade do Contestado UnC Campus Marclio Dias, sob orientao do professor Saulo Jos Benvenutti.

CANOINHAS 2009

CONFRONTO TECNOLOGICO ENTRE MONO(.NET FRAMEWORK) E JAVA

DANIEL SCHROEDER Este(a) (Trabalho de Concluso de Curso, Monografia, Dissertao, Tese) foi submetido(a) ao processo de avaliao pela Banca Examinadora como requisito parcial para a obteno do Ttulo (Grau) de: Licenciado(a) ou Bacharel em Sistemas de Informao. E aprovado(a) na sua verso final em 10/11/2009, atendendo s normas da legislao vigente da Universidade do Contestado UnC e Coordenao do Curso de Sistemas de Informao.

________________________________ Otto Robert Lessing

BANCA EXAMINADORA:

___________________________ Otto Robert Lessing ___________________________ Saulo Jos Benvenutti ___________________________ Danhylo Almeida Ramos

RESUMO Este trabalho foi baseado em duas plataformas de desenvolvimento de aplicaes, de diferentes empresas, a Novell e sua plataforma Mono .NET Framework, e a Sun Microsystems com sua plataforma Java. Em sua primeira parte foi apresentado a origem do Java, seus conceitos e caractersticas, a ideia de um ambiente multiplataforma, caractersticas da maquina virtual e os conceitos do gerenciamento de memria. descrito em sua segunda parte as caractersticas quanto a capacidade de interconexo TCP/IP no desenvolvimento sob aplicaes distribudas e comunicao entre objetos atravs de componentes; mostrando o processo de evoluo at o surgimento do .NET Framework, interoperabilidade entre objetos localmente ou remotamente, WebServices e protocolo SOAP. Na terceira parte abordado as arquiteturas .NET Framework, quanto a sua normalizao at a estrutura Mono, outras plataformas derivadas da especificao .NET, como o Rotor e DotGNU, e a arquitetura Java com base na sua estrutura geral, seja no modo de compilao e funcionamento. Quanto a Quarta parte deste trabalho descreve de uma maneira geral os conceitos de orientao a objetos que esta fixado sob as tecnologias estudas (Java e Mono), as linguagens suportada por cada plataforma, os principais ambientes de desenvolvimento destacados para cada plataforma e seus modos de conexo a banco de dados. No processo de finalizao na quinta parte inicia o processo de comparao das tecnologias Java e Mono .NET Framework, analisando e demonstrando alguns de seus pontos crticos como desempenho em relao ao sistema operacional seja Windows ou Linux aqui comparado. Em uma analise breve comentando sobre as linguagens Java e C# as quais foram utilizadas no processo de comparao, os ambientes de desenvolvimento trabalhados e a maneira utilizada na conexo com o banco de dados. So mostrados a este captulo tabelas e grficos focando a analise quantitativa afim de melhor demonstrar o comparativo executado nestas plataformas. As consideraes finais levantadas para este trabalho, nota as vrias semelhanas contida na estrutura Java e Mono .NET, no entanto cada uma possui suas vantagens e desvantagens, mais seguem a mesma tendencia de mercado. Palavras chave: Tecnologia; Plataforma; Mono; JAVA; Desenvolvimento; Linguagem; Maquina Virtual.

ABSTRACT This work was based on two platforms, application development, from different companies, Novell and the Mono .NET Framework platform, and Sun Microsystems with its Java platform. In the first part was made the source of Java, its concepts and features, the idea of a multiplatform environment, characteristics of the virtual machine and the concepts of memory management. It is described in the second part features as the ability to interconnect TCP/IP development in distributed applications and communication between objects across components, showing the process of evolution until the appearance .NET Framework, interoperability between objects locally or remotely, WebServices and SOAP protocol. The third part deals with the .NET Framework architecture, and its standardization by the structure Mono, other platforms derived from the specification .NET, as the rotor and DotGNU, and Java architecture based on its overall structure, perhaps in the way of compiling and operation. In the fourth part of this work describes in general the concepts of object orientation that is settled in the studied technologies (Java and Mono), the supported languages by each platform, the main development environments assigned to each platform and its modes of connection to the database. In the process of finalizing the fifth part begins the process of comparing Java and Mono .NET Framework technologies, analyzing and demonstrating some of its critical points such a performance relative to the operating system is Windows or Linux here compared. In a brief review commenting on the Java and C# which were used in the comparison, the development environment worked and the way used to connect to the database. Are shown in this chapter charts and tables focusing on quantitative analysis in order to better demonstrate the comparative run on these platforms. The final considerations raised for this work demonstrates several similarities between the structure of Java and Mono .NET, the advantages and disadvantages of each platform has, but following the same trend. Final considerations raised in this study, note the many similarities contained in the structure Java and Mono .NET, but each one has its advantages and disadvantages, most follow the same trend of the market. Keywords: Technology; Platform; Mono; Java; Development; Language; Virtual Machine.

LISTA DE FIGURAS Figura 1: Segmentao da maquina virtual Java. O Autor(2009).......................................24 Figura 2: Funcionamento inicial do Garbage collector - GC atravs do heap. MSDN(2008). .............................................................................................................................................25 Figura 3: Diagrama demonstrando o processo de gerenciamento de memria. Simmons (2004)...................................................................................................................................26 Figura 4: Estrutura do Mono. NANTZ (2004).......................................................................39 Figura 5: Cycle compiler .NET. Ciclo de execuo do cdigo fonte .NET. BAGNALL (2002) .............................................................................................................................................44 Figura 6: Plataforma Java Standard Edition v 1.4. Sun Microsystems, Inc. (2009)............48 Figura 7: Java code cycle. Ciclo de execuo do cdigo fonte Java. BAGNALL (2002)....49 Figura 8: Estrutura base do JDBC. O desenvolvedor trabalha com objetos simples em Java. O DriverManager em conjunto com o driver especifico, fornece o acesso ao banco de dados. BRILL(2001)........................................................................................................59 Figura 9: Arquitetura ADO.NET. MSDN (2009)....................................................................60 Figura 10: Principio bsico de acesso a base de dados PostgreSQL, utilizando o NpgSQL. Autor(2009)..........................................................................................................................61 Figura 11: Especificao dos softwares utilizados no processo de comparao das tecnologias Java e Mono .NET. Autor(2009).......................................................................62 Figura 12: Topologia Cliente-Servidor, aplicada nos teste entre as plataformas Java e Mono. Autor (2009)..............................................................................................................63 Figura 13: Resultados obtidos no processo de gravao de dados em arquivo, executados sob o sistema operacional Linux, atravs do gnome-terminal. Autor (2009)......................67 Figura 14: Script SQL da tabela, utilizado no comparativo. Autor (2009)...........................87 Figura 15: Dados inseridos no banco. Autor (2009)............................................................87 Figura 16: Tela Principal. Netbeans 6.7 (Win32), sob outro sistema operacional sua interface a mesma. Autor (2009)......................................................................................89 Figura 17: Splash NetBeans 6.7.1. Autor (2009).................................................................89 Figura 18: Tela Principal. SharpDevelop 3.1 (Win32). Autor (2009)....................................90 Figura 19: Splash SharpDevelop 3.1. Autor (2009).............................................................90 Figura 20: Tela Principal. MonoDevelop 2.0, Linux. Autor (2009).......................................91 Figura 21: Splash MonoDevelop 2.0. Autor (2009).............................................................91 Figura 22: Logomarca: Java. Sun (2009)............................................................................92 Figura 23: Logomarca: Mono. Mono (2009)........................................................................92 Figura 24: Aplicativo Java, sendo executado sobre o Console do Windows (MS-DOS). No Linux foi executado sob o console gnome-terminal. Os resultados quanto ao tempo eram gravados para um arquivo de texto. Autor (2009)...............................................................93 Figura 25: Aplicativo Mono .NET, sendo executado sobre o Console do Windows (MSDOS). No Linux foi executado sob o console gnome-terminal. Os resultados quanto ao tempo eram gravados para um arquivo de texto. Autor(2009)............................................93

LISTA DE GRFICOS Grfico 1: Resultados obtidos no processo de gravao de dados em arquivo, executados sob o sistema operacional Windows, atravs do console DOS. Autor (2009)....................67 Grfico 2: Grfico demonstrando e comparando o desempenho no processo de insero em uma bateria de 10 testes, a cada teste 10000 inseridos um a um. Teste efetuado sob o sistema operacional Windows. Autor(2009)........................................................................68 Grfico 3: Grfico demonstrando e comparando o desempenho no processo de listagem, tambm entendido como localizao em uma bateria de 10 testes, a cada teste 10000 listados. Teste efetuado sob o sistema operacional Windows. Autor(2009).......................68 Grfico 4: Grfico demonstrando e comparando o desempenho no processo de alterao em uma bateria de 10 testes, a cada teste 10000 alterados um a um. Teste efetuado sob o sistema operacional Windows. Autor(2009)........................................................................69 Grfico 5: Grfico demonstrando e comparando o desempenho no processo de remoo em uma bateria de 10 testes, a cada teste 10000 removidos um a um. Teste efetuado sob o sistema operacional Windows. Autor(2009).....................................................................69 Grfico 6: Grfico demonstrando e comparando o desempenho no processo de insero em uma bateria de 10 testes, a cada teste 10000 inseridos um a um. Teste efetuado sob o sistema operacional Linux. Autor(2009)..............................................................................70 Grfico 7: Grfico demonstrando e comparando o desempenho no processo de listagem ou tambm considerado com uma localizao em uma bateria de 10 testes, a cada teste 10000 registros foram listados em modo console. Teste efetuado sob o sistema operacional Linux. Autor(2009)............................................................................................70 Grfico 8: Grfico demonstrando e comparando o desempenho no processo de alterao em uma bateria de 10 testes, a cada teste 10000 registros alterados um a um. Teste efetuado sob o sistema operacional Linux. Autor(2009).....................................................71 Grfico 9: Grfico demonstrando e comparando o desempenho no processo de remoo em uma bateria de 10 testes, a cada teste 10000 registros removidos um a um. Teste efetuado sob o sistema operacional Linux. Autor(2009).....................................................71

LISTA DE TABELAS Tabela 1: Equivalncia entre alguns tipos de dados das linguagens Java e C#. MOK (2003, adaptado)..................................................................................................................74 Tabela 2: Analise comparativa das IDE's. Plataforma (S.O. suportado) e Licena. Autor (2009)...................................................................................................................................74 Tabela 3: Aspectos gerais que demonstram algumas similaridades e diferenas, para o Java e o Mono .NET. Autor (2009).......................................................................................75 Tabela 4: Analise comparativa das licenas utilizadas por cada tecnologia. OSI (2009, adaptado).............................................................................................................................76

LISTA DE ABREVIATURAS E SIGLAS Active Data Objects Abstract Window Toolkit Active Server Pages Application Foundation Classes Application Programming Interface Base Class Library Common Development and Distribution License Common Gateway Interface Common Infraestruture Language Common Intermediate Language Common Language Especification Common Language Runtime Common Object Request Broker Architecture Common Type System Compact Framework Component Object Model Corporation for National Research Initiatives Distributed Architecture Internetwork Distributed Component Object Model Distributed Computing Environment Dynamic Data Exchange Dynamic Link library Enterprise Java Beans European Computer Manufacturers Association Executive Committee Enterprise Resource Planning eXtensible Markup Language eXtensible Stylesheet Language Transformations Framework Class Library Global Assembly Cache GNU Public License Graphical User Interfaces Hypertext Transfer Protocol Interface Definition Language Intermediate Language International Standards Organization Internet Foundation Classes Internet Information Service Java Class Library Java Community Process Java Data Objects Java Database Connectivity Java Development Kit Java Naming and Directory Interface Java Runtime Environment Java Specification Requests Java Virtual Machine Just in Time Library GNU Public License ADO AWT ASP AFC API BCL CDDL CGI CLI CIL CLS CLR CORBA CTS CF COM CNRI DNA DCOM DCE DDE DLL EJB ECMA CE ERP XML XSLT FCL GAC GPL GUI HTTP IDL IL ISO IFC IIS JCL JCP JDO JDBC JDK JNDI JRE JSR JVM JIT LGPL

Matz Ruby Implementation Massachusetts Institute of Technology Microsoft Microsoft Intermediate Language Mozilla Public License Microsoft Transaction Server Network File System Object Linking and Embedding Object Management Group Object Oriented Object Oriented Programming Objective CAML Open Database Connectivity Open Graphics Library Open Software Foundation Open Source Initiative Portable Execute Publicly Available Specification Remote Method Invocation Remote Procedure Call Remote Procedure Calls Server Message Block Shared Source CLI Simple Object Access Protocol Software Development Kit Structured Query Language Universal Description, Discovery and Integration Unified Modeling Language Virtual Execution System Virtual Machine Visual Basic Visual Studio Web Service Definition Language World Wide Web

IRM MIT MS MSIL MPL MTS NFS OLE OMG OO OOP Ocaml ODBC OpenGL OSF OSI PE PAS RMI RPC RPC SMB SSCLI SOAP SDK SQL UDDI UML VES VM VB VS WSDL WWW

SUMRIO 1 INTRODUO.................................................................................................................13 1.1 TEMA........................................................................................................................13 1.2 APRESENTAO ....................................................................................................13 1.3 PROBLEMA..............................................................................................................14 1.4 JUSTIFICATIVA........................................................................................................15 1.5 OBJETIVOS..............................................................................................................16 1.5.1 Objetivo Geral....................................................................................................16 1.5.2 Objetivos especficos........................................................................................16 1.6 PROCEDIMENTO METODOLOGICO.....................................................................17 1.7 PLANO DE METAS..................................................................................................18 CAPITULO I.........................................................................................................................19 2 ORIGEM DO JAVA E O CONCEITO MULTIPLATAFORMA..........................................19 2.1 FUNDAMENTOS DO JAVA......................................................................................19 2.1.1 Ideia Multiplataforma.........................................................................................21 2.2 CARACTERISTICAS DO JAVA................................................................................21 2.3 MAQUINA VIRTUAL.................................................................................................23 2.3.1 JVM (Java Virtual Machine)..............................................................................23 2.4 GARBAGE COLLECTOR (GERENCIADOR DE RECURSOS DA MEMRIA).......24 2.4.1 Funcionamento do gerenciador de memria....................................................25 CAPITULO II........................................................................................................................27 3 APLICAES DISTRIBUDAS E O SURGIMENTO DO .NET FRAMEWORK.............27 3.1 TECNOLOGIAS DISTRIBUDAS.............................................................................27 3.1.1 CORBA..............................................................................................................27 3.1.2 Java RMI...........................................................................................................28 3.1.3 Interface Definition Language (IDL)..................................................................28 3.1.4 Java EJB...........................................................................................................28 3.2 A MICROSOFT E A COMPUTAO DISTRIBUDA................................................29 3.2.1 DCE/RPC..........................................................................................................30 3.2.2 OS PIONEIROS COM, MTS, DCOM................................................................30 3.2.3 COM+................................................................................................................32 3.2.4 .NET REMOTING..............................................................................................32 3.3 WEBSERVICES........................................................................................................33 3.3.1 Protocolo SOAP................................................................................................33 3.4 A EVOLUO AT O SURGIMENTO DO .NET FRAMEWORK.............................33 3.4.1 Fatos ocorridos sob o surgimento do .NET Framework...................................34 CAPITULO III.......................................................................................................................36 4 ARQUITETURAS MONO .NET FRAMEWORK E JAVA................................................36 4.1 ARQUITETURA .NET FRAMEWORK......................................................................36 4.1.1 NORMALIZAO..............................................................................................36 4.1.2 SSCLI/Rotor......................................................................................................37 4.1.3 Portable .NET....................................................................................................37 4.1.4 Compact Framework.........................................................................................37 4.1.5 Mono (.NET Framework)...................................................................................38 4.1.6 Licenas usadas no Mono.................................................................................39 4.1.7 Common Type System (CTS)...........................................................................40 4.1.8 Common Language Specification.....................................................................40 4.1.9 Conceito Multilinguagem...................................................................................40 4.1.10 Linguagem Intermediria.................................................................................41 4.1.11 ASSEMBLY......................................................................................................41 4.1.11.1 PE (Portable Executable).........................................................................42

4.1.12 Common Language Runtime..........................................................................42 4.1.13 Just in Time Compiler......................................................................................43 4.1.14 Framework Class Library................................................................................43 4.1.15 Ciclo de execuo do .NET.............................................................................44 4.1.16 Compilando Cdigo Fonte em cdigo nativo..................................................45 4.2 ARQUITETURA JAVA...............................................................................................46 4.2.1 Normalizao do Java.......................................................................................46 4.2.2 Java Community Process..................................................................................46 4.2.3 Java Foundation Classes..................................................................................47 4.2.4 ByteCode...........................................................................................................47 4.2.5 JIT Compiler......................................................................................................47 4.2.6 Class Loader.....................................................................................................47 4.2.7 Distribuies da Plataforma Java......................................................................48 4.2.8 Ciclo de execuo do JAVA..............................................................................49 4.2.9 Licena..............................................................................................................49 CAPITULO IV......................................................................................................................50 5 LINGUAGENS DE PROGRAMAO, IDE's E MODOS DE ACESSO A DADOS.......50 5.1 Conceitos de Orientao a Objetos..........................................................................50 5.2 Linguagens de programao suportas pela plataforma JAVA.................................50 5.2.1 Java...................................................................................................................50 5.2.2 Groovy...............................................................................................................51 5.2.3 JRuby................................................................................................................51 5.2.4 Jython................................................................................................................51 5.3 Linguagens de programao suportas pela plataforma Mono (.NET Framework)..51 5.3.1 C#......................................................................................................................51 5.3.2 VB.NET..............................................................................................................52 5.3.3 Object Pascal....................................................................................................52 5.3.4 J# (JSharp)........................................................................................................52 5.3.5 F# (FSharp).......................................................................................................53 5.3.6 IronRuby............................................................................................................53 5.3.7 IronPython.........................................................................................................53 5.3.8 Boo....................................................................................................................53 5.3.9 C++....................................................................................................................54 5.3.10 C# Versus Visual Basic .NET.........................................................................54 5.3.11 C# versus Java................................................................................................54 5.4 Ambientes de desenvolvimento destacados s plataformas Java e Mono (.NET Framework)......................................................................................................................55 5.4.1 Camadas principais de uma IDE.......................................................................55 5.4.2 MonoDevelop....................................................................................................56 5.4.3 Sharp Develop...................................................................................................56 5.4.4 Visual Studio......................................................................................................57 5.4.4.1 DelphiPrism................................................................................................57 5.4.5 Eclipse...............................................................................................................57 5.4.6 Netbeans...........................................................................................................58 5.5 COMPONENTES DE ACESSO A DADOS...............................................................58 5.5.1 JDBC.................................................................................................................58 5.5.2 ADO.NET...........................................................................................................59 5.5.3 Outros modos de acesso a dados com o .NET...............................................60 5.5.4 Open DataBase Connectivity (ODBC)..............................................................60 5.5.4.1 NPGSQL....................................................................................................60 5.5.4.2 PgSqlNET Free Express............................................................................61 CAPITULO V.......................................................................................................................62

6 COMPARATIVOS DAS TECNOLOGIAS JAVA E MONO .NET FRAMEWORK...........62 6.1 PROCESSO DE DESENVOLVIMENTO PRTICO ................................................62 6.2 ANALISE DO APLICATIVO COMPARADO..............................................................63 6.2.1 Analise do processo de desenvolvimento prtico.............................................64 6.2.1.1 Das linguagens de programao Java e C#..............................................64 6.2.1.2 Da maneira de conexo com o banco de dados.......................................64 6.3 BANCO DE DADOS UTILIZADO.............................................................................64 6.3.1 PostgreSQL.......................................................................................................64 6.3.2 Analise no processo de teste quanto ao banco de dados................................64 6.3.2.1 Do desempenho no acesso a dados.........................................................65 6.4 ANALISE DOS AMBIENTES DE DESENVOLVIMENTO UTILIZADOS...................65 6.4.1 Quanto a produtividade e desempenho nas plataformas Java e Mono .NET. .66 6.5 RESULTADOS OBTIDOS NOS TESTES.................................................................66 6.5.1 Resultados obtidos no processo de gravao em arquivo texto......................67 6.5.2 Comparativo: CRUD. Testes efetuados no Sistema Operacional Windows.....68 6.5.3 Comparativo: CRUD. Testes efetuados no Sistema Operacional LINUX.........70 6.6 DOS APLICATIVOS COMPARADOS.......................................................................72 6.7 DOS SISTEMAS OPERACIONAIS USADOS NOS TESTES..................................72 6.8 COMPARATIVO GERAL ENTRE AS PLATAFORMAS JAVA E MONO .NET FRAMEWORK.................................................................................................................73 6.8.1 Analise dos tipos de dados das linguagens Java e C#.....................................73 6.8.2 Analise dos ambientes de desenvolvimento.....................................................74 6.8.3 Aspectos gerais das plataformas estudadas....................................................75 6.8.4 Analise conceitual das licenas utilizadas........................................................76 CAPITULO VI......................................................................................................................77 7 CONCLUSO..................................................................................................................77 7.1 SUGESTO PARA TRABALHOS FUTUROS..........................................................80 REFERENCIAS...................................................................................................................81 APNDICE A.......................................................................................................................84 Algoritmo exemplo C#.....................................................................................................84 Algoritmo exemplo Java..................................................................................................84 Algoritmo JAVA demonstrando um lao de repetio e gravao em arquivo...............85 Algoritmo C# demonstrando um lao de repetio e gravao em arquivo...................86 APNDICE B Cdigo fonte do aplicativo utilizando um CRUD no acesso a dados87 Cdigo fonte da tabela utilizada no comparativo............................................................87 Dados inseridos na tabela...........................................................................................87 Cdigo fonte: Projeto. CRUD-Java-Java-JDBC JAVA.................................................87 Cdigo fonte: Projeto. CRUD-Mono-CSharp-NpgSQL Mono .NET Framework .........87 APNDICE C - Disponibilidade da Documentao, Plataforma, IDE's e o Banco de Dados utilizado...................................................................................................................88 Plataformas.................................................................................................................88 IDE's............................................................................................................................88 Banco de Dados..........................................................................................................88 APNDICE D Ambientes de Desenvolvimento utilizados na Implementao dos Aplicativos, Logomarca das plataformas comparada e Tela das aplicaes.............89

13 1 INTRODUO 1.1 TEMA

CONFRONTO TECNOLOGICO ENTRE MONO(.NET FRAMEWORK) E JAVA

1.2 APRESENTAO

Tanto o Mono .NET Framework e o JAVA, so uma plataforma de desenvolvimento de software. Quando desenvolvemos um software, de uma forma geral, estamos desenvolvendo para um sistema operacional e hardware especfico, assim tornando dependentes dos mesmos. A proposta .NET e JAVA desenvolver no mais para um sistema operacional ou hardware, mas sim para sua plataforma, onde o software funcionar onde quer que o framework ou maquina virtual estiver disponvel: de computadores a celulares.

14 1.3 PROBLEMA

A linha existente de programadores no mercado atual, cada um evangeliza sua plataforma de desenvolvimento. Mesmo havendo hiptese de que uma plataforma no atenda seus requisitos, a empresa detentora de sua tecnologia procura no deixar totalmente visvel a sua comunidade seus defeitos, porm, por se tratar de dois ambientes open source, os bugs a cada dia que passa so corrigidos e novas verses so disponibilizadas. At hoje no existe uma linha comparativa que possa confrontar as tecnologias Java e Mono .NET afim de demonstrar seu desempenho e viabilidade. A questo : a relao entre Java e Mono .NET, mais um caso de religio do que tecnologia, ou, uma questo cultural de organizao que influencia na adoo de uma plataforma de desenvolvimento, seja pelo que ela oferece e por influenciar no prprio mercado. Os aplicativos desenvolvidos sob estas tecnologias rodam sob maquinas virtuais, que um fator de desvantagem no desempenho para ambas, em relao h softwares executados nativamente sob um determinado sistema operacional. No entanto esta questo j esta se tornando um mito, e devido a maquina virtual contida no Java e Mono, estas oferecem suporte multiplataforma nas suas aplicaes.

15 1.4 JUSTIFICATIVA

As vantagens de plataformas de desenvolvimento, que rodam sobre um framework ou maquina virtual oferece grandes benefcios, quando se trata de portabilidade, no tem a necessidade de recompilar um cdigo s por apenas executar um aplicativo sob outro sistema operacional, basta apenas ter a plataforma que rode este. A pesquisa nos proporcionar uma viso melhor sobre o paradigma de programao Orientado a Objetos que esta focada tanto em Java como Mono .NET, pois esta permite maior facilidade para reutilizao de cdigo, possibilitando o desenvolvedor trabalhar em um nvel mais elevado e abstrato, como tambm a utilizao de um nico padro conceitual durante todo o processo de criao de um determinado software. Por se tratar de tecnologias ascendentes, cada plataforma possui suas particularidades, ou seja, pode ser vantagem para uma linha de desenvolvedores e desvantagem a outra. Pois cada organizao tem seu modo de pensamento; e quando uma equipe j se tem o domnio sob uma linguagem de programao, se torna algo invivel modificar este ambiente.

16 1.5 OBJETIVOS 1.5.1 Objetivo Geral

Confrontar tecnologias JAVA e Mono .NET, afim de avaliar seu desempenho e mostrar alguns dos recursos, que cada plataforma oferece.

1.5.2 Objetivos especficos

Estudar os conceitos gerais do Java e do Mono (.NET Framework), identificando suas evolues.

Identificar vantagens e desvantagens das plataformas JAVA e Mono .NET explorando algumas de suas caractersticas em cada plataforma.

Identificar as linguagens de programao que so suportadas por cada plataforma e quais as principais formas de conexo com o banco de dados.

Desenvolver uma aplicao em modo Console, para cada plataforma com intuito de analise de cdigo, aplicao, e desempenho.

Analisar o desempenho de cada tecnologia, em 2 sistemas operacionais distintos (Windows e Linux).

17 1.6 PROCEDIMENTO METODOLOGICO

Pretende-se realizar o trabalho utilizando-se os mtodos descritos a seguir: Fazer um levantamento bibliogrfico, na internet, em livros, em revistas, artigos cientficos clssicos e atuais relacionados ao tema. Este levantamento continuar ao longo de todo o desenvolvimento do trabalho; Construir o histrico da plataforma Java, evoluindo at o surgimento do Mono .NET Framework. Descrever as principais caractersticas de cada tecnologia, linguagens de programao que cada uma suporta, conectividade com o banco de dados. Aps a elaborao terica do trabalho, ser desenvolvido como estudo de caso um aplicativo sob cada plataforma, visando a concluso dos objetivos prticos, e analisando seu desempenho quanto ao desenvolvimento e execuo do aplicativo nos sistemas operacionais Windows e Linux.

A caracterstica do projeto, um estudo comparativo o qual tem como objetivo comparar o desempenho das tecnologias Java e Mono .NET Framework.

18 1.7 PLANO DE METAS

Captulo 01: Origem do Java; A ideia de um ambiente multiplataforma; Maquinas Virtuais; Gerenciamento de memria (Garbage Colletor);

Captulo 02: Conceito de Aplicaes distribudas; Servidores de Componentes; Evoluo do COM ao .NET; Outros relevantes fatos quanto o surgimento do .NET;

Captulo 03: Arquitetura Java; Arquitetura .NET Framework; Fundamentos do Mono (.NET Framework); Conceito Multilinguagem;

Captulo 04: Linguagens de programao; Conceito de Orientao a Objetos; IDE: Principais ambientes de desenvolvimento disponvel em cada tecnologia; Modo de conexo ao banco de dados.

Captulo 05: Comparativo prtico/terico: Grficos analisando o desempenho de carregamento de dados de cada aplicativo implementado; Tabela comparando alguns dos principais pontos importantes de cada plataforma; Comparativo terico: Linguagens de programao usadas na implementao; Conexo a banco de dados; Sistemas Operacionais que foram testados;

Captulo 06: Concluso;

19 CAPITULO I 2 ORIGEM DO JAVA E O CONCEITO MULTIPLATAFORMA

Este primeiro captulo ser apresentado a origem do Java, seus conceitos e caractersticas, a ideia de um ambiente multiplataforma, caractersticas da mquina virtual, gerenciamento de memria.

2.1 FUNDAMENTOS DO JAVA

De acordo com DEITEL (2003), o Java iniciou a partir de 1991, foi projetado por um grupo de engenheiros da Sun Microsystems, a qual criou uma filial denominada First Person Inc., afim de gerenciar este projeto. Seu intuito era o desenvolvimento de tecnologias de software para dispositivos eletrnicos como aparelhos domsticos e depois tambm a televiso interativa. Conforme PARGA (2005), a Sun necessitava de uma linguagem de programao que fosse flexvel e robusta, se tratando no que seria implantado, ou seja, para estes tipos de equipamento era necessrio gerar um cdigo pequeno e deveria possui interfaces mais intuitivas do que as existentes naquela poca. Como tambm viu se que no poderia ficar amarrado em uma s arquitetura especfica, seja nos diferentes tipos hardwares e sistemas operacionais. Considerando facilidade de desenvolvimento e confiabilidade do cdigo, James Gosling, membro da equipe com mais experincia em linguagens de programao, concluiu que as vantagens que contribuam para a eficincia do C++ no compensavam o alto custo dos testes de depuraes. Segundo Gosling(1996) as linguagens em uso, C ou C++, devem ser compiladas para um chip, e se h mudanas no chip, todo o software deve ser compilado novamente. Isso encarece muito o desenvolvimento e o problema essencialmente apontado no campo da eletrnica de consumo. Os engenheiros da Sun se basearam na linguagem C++ a qual era orientada a

20 objetos, analisando o que ela oferecia de melhor e corrigindo suas falhas. Implementou se melhorias no gerenciamento oferecendo robustez e interoperabilidade, assim construram a linguagem Oak.
A Sun Microsystems financiou uma pesquisa corporativa interna com o codinome Green em 1991. 0 projeto resultou no desenvolvimento de uma linguagem baseada em C e C++ que seu criador, James Gosling, chamou de Oak (carvalho) em homenagem a uma rvore que dava para a janela do seu escritrio na Sun. Descobriu-se mais tarde que j havia uma linguagem de computador chamada Oak. Quando uma equipe da Sun visitou uma cafeteria local, o nome Java (cidade de origem de um tipo de caf importado) foi sugerido e pegou. (Deitel, et al., 2003 p. 59)

O primeiro projeto que aplicou a linguagem Bytecode recebeu o nome de projeto Green, este consistia em um sistema de controle completo de aparelhos eletrnicos de uma casa. Para ele se construiu um ordenador experimental denominado *7 (Star Seven). O sistema apresentava uma interface baseada na representao da casa de forma animada e o controle era apresentado por meio de uma tela sensvel ao tato. Posteriormente, se aplicou a outro projeto denominado Video ON Demand (VOD) no qual foi empregado como uma interface para televiso interativa. Nenhum destes projetos transformou o em um sistema comercial, porm foram desenvolvidos inteiramente em um Java primitivo. De acordo com PARGA (2005), a First Person foi fechada em 1994 e j quando tudo parecia ter sido definitivamente esquecido, Bill Joy, cofundador da Sun, julgou que a Internet poderia chegar a ser um campo adequado para disputar mercado e viu na Oak o instrumento ideal para enfim realizar seus planos. Aps trocar o nome e modificaes de projeto, a linguagem Java foi apresentada sociedade em agosto de 1995. De acordo com GOSLING (2005), a linguagem de programao Java, foi originalmente chamado Oak, sua utilizao era em aplicaes incorporadas ao consumidor final, por James Gosling. Aps vrios anos de experincia com a linguagem, e contribuies significativas por Ed Frank, Patrick Naughton, Jonathan Payne, e Chris Warth foi reformulada Internet. Com o avano da World Wide Web desde 1993, visando grande interesse para a Sun, e trazendo a partir de 1995 o suporte java em um dos primeiros navegadores de internet atravs de interface chamado Mosaic. A forma final da linguagem foi definida por James Gosling, Bill Joy, Guy Steele, Richard Tuck, Frank Yellin, e Arthur van Hoff, com a ajuda de Graham Hamilton, Tim Lindholm, e muitos outros envolvidos no projeto. A enorme popularidade da World Wide Web ocorrida a partir de 1993, com o

21 surgimento dos browsers levou reformulao do Java como uma linguagem para incorporao em programas baseados em aplicaes Web. Conforme Vernners (1997), a Internet uma rede mundial, e na WWW a parte da rede que fornece acesso multimdia a uma vasta gama de informaes. Java tornou se uma das mais importantes linguagens da web.

2.1.1 Ideia Multiplataforma

Desde quando a Sun iniciou o projeto green, que visava o desenvolvimento de tecnologias de software para equipamentos domsticos, pensava em no ficar dependente de um s ambiente operacional ainda mais produtos desta linha aos quais possua "n", tipos e modelos. Necessitou um projeto detalhado para que, se desenvolvesse este modelo de software. Mesmo o fracasso ocorrido no mercado escolhido, no desistiu se da ideia, pois esta foi uma soluo de grande importncia para os aplicativos Web, das suas primeiras aplicaes por seu nome Applets, que poderia ser executado em qualquer plataforma sem haver uma compilao especifica a cada hardware. Um passo tecnolgico no mercado de software, a qual a Sun Microsystems elencou sob o Java.

2.2 CARACTERISTICAS DO JAVA

A tecnologia Java adequada para ajud lo a enfrentar os desafios e aproveitar as oportunidades apresentadas no mercado de desenvolvimento emergente. Conforme Venners (1997), o seu papel original destina como uma linguagem de programao para microprocessadores incorporados em aparelhos consumidores, porm o Java foi projetado com uma srie de outras caractersticas interessantes. Robustez; o que significa que os erros dos programas em Java no causam falhas no sistema to frequentemente como erros nas outras linguagens de programao. Alguns aspectos da linguagem permitir que muitos erros potenciais possam ser detectados antes que um programa executado.

22 uma plataforma independente. Uma plataforma, neste contexto, apenas um determinado tipo de sistema de computador, tais como um sistema Windows, MacOS, Linux, etc. Java tem como sua marca registrada: "Escreva uma vez, execute em qualquer lugar.". Isto significa que um programa Java pode ser executado sem modificaes em diferentes tipos de computadores. Isto no verdadeiro para outras linguagens de programao de alto nvel. Uma razo para o Java ser bem adequado para aplicaes WWW. Suporte comunicao em redes de computadores. A sua aptido para ambientes em rede inerente a sua arquitetura, o que permite ser seguro, robusto e independente de plataforma assim programas distribudos atravs da internet pode ser executado em uma grande variedade de computadores. Linguagem distribuda; o que significa que seus programas podem funcionar em redes de computador. Conforme PARGA (2005), alm da prpria linguagem, o Java vem com uma extensa coleo de bibliotecas de cdigo que tenha sido concebido para ser utilizado diretamente para tipos especficos de aplicaes para torn-lo muito fcil de construir sistemas de software para desktop e Internet. Esta uma das razes pelas quais o Java to bem adaptado para apoiar aplicaes em redes corporativas. Segurana, quanto ao uso em redes, Java contm funcionalidades que protegem contra cdigos no confiveis que possa introduzir um vrus ou corromper o sistema de alguma forma. Por exemplo, quando executado algo no navegador web, programas Java so impedidos de leitura e escrita a partir de informaes e para o seu computador desktop. Caracterstica, orientado a objeto. Linguagens orientadas a objetos permitem dividir programas em mdulos separados, chamados objetos, que sintetizam o programa de dados e operaes. Assim Programao Orientada para Objetos (OOP) e Projeto Orientado a Objetos (OOD) referem-se a uma forma particular de organizar programas, um que est rapidamente emergindo como a melhor abordagem para a construo de complexos sistemas de software. Ao contrrio da linguagem C++, em que possui caractersticas orientadas a objetos enxertado sob a linguagem C, Java foi concebido a partir do zero como uma linguagem orientada para objeto.

23 2.3 MAQUINA VIRTUAL

Marketing pessoal na Sun Microsystems para o Java: Write Once, Run Anywhere; escreva uma vez e rode em qualquer lugar, este foi o resultado que a equipe de desenvolvimento atingiu, e desta trouxe grandes facilidades para o ambiente de desenvolvimento. Mquina virtual uma abstrao de uma mquina real onde o software simula um computador executando vrios aplicativos. um ambiente operacional independente da mquina ou dispositivo em que est hospedada e sendo executada. Dessa forma, ela constitui uma plataforma, onde o sistema operacional, a memria, o processador e seus demais recursos, so virtuais. Conforme Engel (1999), mquina virtual o nome definido a um ambiente, como um sistema operacional que no existe fisicamente, porm executado sob outro ambiente. Segundo Wesley (2004), uma maquina virtual realiza a interpretao do cdigo intermedirio, este gerado como resultado da traduo de uma linguagem de alto nvel. Assim garantida a portabilidade do cdigo do programa. Isso porque, como o cdigo est numa linguagem intermediria, ou seja, independente da arquitetura de um computador real, s necessrio que a mquina virtual esteja instalada no computador onde o aplicativo ser executado. A mquina virtual ser a responsvel pela interpretao do cdigo para a linguagem de mquina do computador em execuo. Dentre as vantagens principais proporcionadas pela mquina virtual pode citar se o fato dos programas intermedirios serem compactos e poderem ser executados em qualquer plataforma na qual a mquina virtual esteja presente.

2.3.1 JVM (Java Virtual Machine)

Segundo BURD (2005), quando se iniciou a tecnologia Java em 1995, se tornou quase que imediatamente popular. Isto aconteceu por causa da mquina virtual Java. A JVM um interpretador de linguagem, que transforma Java bytecode em cdigo nativo para que um determinado computador compreenda. Com a JVM, um bytecode opera em mquinas Windows, Unix, Macs, entre outros. Isso chamado de portabilidade, que hoje em dia uma inovao no mercado computacional. Pense em todas as pessoas que utilizam computadores para navegar na

24 Internet. Destas pessoas, nem todas rodam o Microsoft Windows, ou outro sistema operacional especfico, mas cada pessoa do computador pode ter o seu prprio interpretador de bytecodes, ou seja, a sua mquina virtual Java. De acordo com Venners(1997), cada aplicao Java executado dentro de sua prpria mquina virtual. Sendo responsvel pela interpretao do cdigo intermedirio, chamados tambm bytecodes, a JVM faz uma validao se estes se adquam as especificaes no violando a integridade do sistema. A JVM tambm responsvel por carregar o programa de forma segura.

Figura 1: Segmentao da maquina virtual Java. O Autor(2009).

2.4 GARBAGE COLLECTOR (GERENCIADOR DE RECURSOS DA MEMRIA)

Conforme Rodrigues (2005), gerenciar recursos alocados por aplicativos algo vital para o funcionamento eficiente e prolongado de qualquer sistema. O mecanismo automatizado do GC garante o gerenciamento de recursos alocados, todavia, em algumas circunstancias a serem abordadas, tarefa de o desenvolvedor envolver-se diretamente nesta prtica, elaborando o cdigo necessrio explicitamente. Cada objeto consome parte da memria, de que existe uma quantidade limitada. Eventualmente, a memria alocada para estes objetos devem ser liberadas quando no so mais utilizadas. A mquina virtual Java, recupera esses objetos automaticamente

25 atravs de um processo chamado garbage collector. Segundo Engel (1999), o garbage collector o processo de coleta automtica de lixo da memria, liberando objetos que no so mais referenciados pelo programa. O mecanismo automatizado do GC garante o gerenciamento de recursos alocados, todavia, em algumas circunstancias a serem abordadas, tarefa de o desenvolvedor envolver-se diretamente nesta prtica, elaborando o cdigo necessrio explicitamente.

2.4.1 Funcionamento do gerenciador de memria

De maneira simplificada, GC implementa um mecanismo de liberao de recursos de memria no heap de objetos. A ilustrao 02 demonstra a ao do garbage collector sobre os objetos alocados por uma aplicao. Estes objetos so referenciados em tabelas internas criadas pelo compilador JIT quando da inicializao do GC. Estas referncias, so denominadas raiz pois correspondem primeira fase de ao do GC no monitoramento de objetos alocados pela aplicao, ainda referenciados pela mesma, que o GC no pode liberar. Diante deste fato, o GC constri suas prprias estruturas correspondentes aos objetos no heap.

Figura 2: Funcionamento inicial do Garbage collector - GC atravs do heap. MSDN(2008).

26 Simmons (2004), descreve o procedimento de gerenciamento de memria da seguinte forma:

Figura 3: Diagrama demonstrando o processo de gerenciamento de memria. Simmons (2004).

Este diagrama mostra todos os passos que so tomadas quando uma referncia a um objeto removido da mquina virtual. Isso acontece sempre que o usurio define explicitamente uma varivel para null, sobrescreve uma varivel do ponto de referncia para outro objeto, ou provoca a classe que detm a varivel de referncia para sair do campo de aplicao. Para cada referncia que tenha a mquina virtual, esta executa este processo de recolha de lixo durante o seu ciclo. Primeiro, a mquina virtual tenta traar um caminho a partir da raiz definido para o objeto. Se encontrar um caminho, no ocorre coleta. Se no encontrar um caminho, a mquina virtual elimina a referncia do objeto da memria. Em seguida, a mquina virtual determina se ira apontar para os objetos de referencia retirados de referencia. Se houver objetos de referencia, a mquina virtual determina se a memria sob a pilha baixa. Se assim for, ele faz uma verificao de memria. Se a verificao indicar que no h memria livre ou a referncia a um objeto j no for referida com quaisquer referncias ou as referncias aos dados j foi o lixo coletado, a referencia na referencia definido como nulo. Finalmente, a referencia dos objetos so adicionado fila.

27 CAPITULO II 3 APLICAES DISTRIBUDAS E O SURGIMENTO DO .NET FRAMEWORK

A tecnologia Java em uma de suas caractersticas a capacidade de interconexo TCP/IP, o que significa o desenvolvimento sob aplicaes distribudas. Descreve se neste captulo o conceito da arquitetura distribuda, comunicao entre objetos atravs de componentes; mostrando o processo de evoluo at o surgimento do .NET Framework, interoperabilidade entre objetos localmente ou remotamente, WebServices e protocolo SOAP.

3.1 TECNOLOGIAS DISTRIBUDAS 3.1.1 CORBA

Construda pela Object Management Group (OMG), um consrcio internacional de cerca de 800 empresas, CORBA tem como objetivo ser o middleware de escolha dos sistemas heterogneos. OMG's CORBA, o que corresponde ao Common Object Request Broker Architecture, apenas uma coleo de normas, para execuo de objetos (ORBs) que feito por vrias solicitaes de terceiros. Partes do padro so opcionais, ento os vendedores (empresas fornecedoras de software) podem incluir funcionalidades adicionais nos ORBs que no esto disponveis. Como resultado, um aplicativo desenvolvido para fazer uso de um fornecedor de recursos no poderiam ser facilmente transferidos para outro ORB. Quando voc compra um programa baseado em CORBA, voc apenas pode integrar com suas aplicaes se forem compatveis ou terem sido desenvolvido pelo mesmo fornecedor. No entanto, quando se tem implementando sua prpria CORBA, voc ser capaz de integrar uma grande quantidade de linguagens e plataformas. H integrao para camadas COM ou EJB, e alm disso suporte ao protocolo SOAP, "CORBA o nico a ser multiplataforma, ambiente multiprogramming language para aplicaes distribudas" (Rammer, 2002).

28 3.1.2 Java RMI

Tradicional mtodo de invocao remota do java (Java RMI) utiliza um proxy manual/compilao de ciclo. Em contraste com DCE/RPC e DCOM, as interfaces no so escritas em uma IDL, mas em Java. Isto possvel devido a ser a nica linguagem interoperando entre a implementao Java.

3.1.3 Interface Definition Language (IDL)

Segundo McLean (2002), esta linguagem fornece uma forma padro de descrever a chamada sintaxe e tipos de dados remotamente exigvel, procedimentos independentes de qualquer linguagem de programao. IDL, no necessria para algumas Java RMI porque esta tecnologia de aplicao distribuda suporta apenas uma linguagem: Java.

3.1.4 Java EJB

Enterprise Java Beans (EJB), foi a resposta da Sun para com a Microsoft COM+. Ao contrrio do CORBA, que apenas uma norma, EJB vem com uma implementao de referncia. Isto permite que os desenvolvedores a fim de verificar se os seus produtos so executados em qualquer norma conformes a implementao EJB. EJB tem sido amplamente aceitos pela indstria, e existem vrias implementaes bases variando de fontes livres ou comerciais. Um problema com EJB que apesar de existir uma aplicao de referncia, a maioria das empresas vendedoras de software adicionam elementos suas aplicaes sob servidores. Quando um programador escreve um componente que usa uma dessas caractersticas, o aplicativo no ser executado em um outro EJB cujo fornecedor no implementou estas novas regras de funcionalidade.

29 3.2 A MICROSOFT E A COMPUTAO DISTRIBUDA

Conforme BARNABY (2002), a Microsoft foi a pioneira em software para PC e ferramentas de desenvolvimento, a empresa foi rpida para promover os benefcios de desenvolvimento cliente/servidor. Foi durante este perodo, que o sistema operacional Windows, atingiu uma posio dominante no mercado. O Visual Basic um exemplo de como foi fcil em desenvolver uma interface de usurio do Windows e interagir com um RDMS como Oracle ou SQL Server. A Microsoft implementou a tecnologia Dynamic Data Exchange (DDE), procura de formas mais flexveis para partilhar dados entre aplicaes, em especial entre as aplicaes no seu Office. Fora deste trabalho veio Object Linking and Embedding (OLE), uma tecnologia, que h tempo estava inutilizada, mas ainda continuava a sobreviver. Atravs do OLE a Microsoft logo percebeu que os problemas que resolve transcender planilhas e processadores de texto, poderiam ser usadas como a base para um novo estilo de programao chamado COM Component Object Model, ou Componente Base para Objetos. Isso a leva para uma nova gerao no desenvolvimento de sistemas. Segundo BARNABY (2002), dado que a Microsoft foi o principal fornecedor de software para PC, segue se que a empresa tambm desempenhou um papel importante na computao cliente/servidor. Inicialmente as ferramentas e tecnologias da Microsoft foram centradas em nveis de cliente, incluindo Visual Basic, Access e FoxPro. Com o lanamento do Windows NT, no entanto, a Microsoft voltou a sua ateno para o lado do servidor, proporcionando diversas tecnologias que facilitam o desenvolvimento em n camadas sob os aplicativos. Depois do marketing da Microsoft definindo como arquitetura distribuda entre

redes DNA (Distributed Architecture Internetwork). DNA implantado junto com o Windows 2000 como o servidor de backend do sistema operacional Microsoft e trabalha em conjunto com outros servidores, o SNA Server (ou o Host Integration Server 2000), e outros. Alm disso enfatiza a arquitetura n camadas (separao de apresentao, lgica empresarial, e servios de dados), o DNA tambm viu a concentrao do COM e MTS em que conhecido como COM+.

30 3.2.1 DCE/RPC

Distributed Computing Environment (DCE), projetado pela Open Software Foundation (OSF), durante o incio da dcada de 1990, foi criado para fornecer um conjunto de ferramentas e servios que permitam facilitar o desenvolvimento e a administrao de aplicaes distribudas. O DCE fornece vrias bases de servios, tais como Remote Procedure Calls (DCE/RPC), Servios de Segurana, Servios de Tempo, e assim por diante. Em uma aplicao DCE as interfaces devem ser especificadas na Interface Definition Language (IDL) e compilados em C, seus cabealhos, processos cliente e servidor por um compilador IDL. Ao executar o servidor, tem um link para um binrio com DCE/Pass, que esto disponveis para C/C++. A utilizao de linguagens de programao um pouco diferente, este devido dependncia dos servios subjacentes, como o DCE/Threads, o que levou a que um tem de viver com um nico servidor se abstendo de usar C/C+ +. DCE/RPC, no entanto, o alicerce para muitos dos atuais protocolos de nvel superior, incluindo DCOM e COM+. Vrios protocolos de nvel de aplicao, tais como MS SQL Server, Exchange Server, Server Message Block (SMB), que usado para compartilhar arquivos e impressoras, Network File System (NFS) tambm so baseadas em DCE/RPC.

3.2.2 OS PIONEIROS COM, MTS, DCOM

Conforme Mok (2003), duas importantes invenes da Microsoft para dominar o mercado de software foram as tecnologias Microsoft Transaction Server (MTS) e Component Object Model (COM) em meados dos anos 90. COM pode ser tratado como um mdulo ou parte de um software que tenha sido escrito para que seja auto suficiente, ou seja, devidamente encapsulado, e pode ser usado por outras classes sem elas saberem a forma como o objeto COM implementado internamente. Um objeto COM da Microsoft a verso do Java Beans. Eles so

31 componentes de software que pode ser comprado e integrado em suas prprias aplicaes. "Fale sobre COM, e voc poder ouvir frases como "atravs reutilizao de interface" e "desenvolvimento baseado em componentes"(Mok, 2003).
(Traduo nossa) "Em teoria, no importa qual linguagem usada para escrever componentes COM; pois interfaces COM so usados para comunicao. No confunda com "interfaces", como utilizado em Java ou C #, interfaces COM so mais como arquivos similares a IDL CORBA. Descreve os mtodos pblicos de um componente COM, para que cdigos externos serem capazes de invocarlos."(Mok, 2003)

O MTS uma camada intermediria, ou seja, um servidor que cuida de questes como transaes e segurana. MTS uma camada construda em cima de COM e DCOM, fornecendo servios da mesma forma que o Enterprise Java Beans fornece. Como o Enterprise Beans, componentes COM esto sob o MTS, que tambm lhe fornece servios como a operao, a ligao entre agrupamentos, a segurana, a pooling de agrupamento, sincronizao, e uma interface de usurio administrativa. Quando a Microsoft foi "empurrada" para o mercado de servidores, foi necessrio a criao do Distributed COM (DCOM). DCOM fornece a infra-estrutura necessria para interoperar com componentes COM atravs de uma rede como se estivessem na mesma mquina. No DCOM, os objetos COM por padro so empacotados atravs de referncia. Isto significa que um cliente solicita o mtodo deve passar atravs da rede para o objeto COM. decididamente no trivial para aplicar um valor pelo qual um regime de empacotamento personalizado o objeto COM copiado a partir de uma aplicao para outra, permitindo assim que o cliente possa chamar mtodos sobre a cpia local. DCOM um protocolo de comunicao remota da Microsoft. Os problemas enfrentados pelo DCOM ser limitado a plataforma Windows. Conforme Rammer (2002), DCOM permite a distribuio dos componentes entre os diferentes computadores. Escalabilidade, gesto, e sua utilizao em WANs colocam vrias questes que precisam ser abordadas. DCOM utiliza um processo de ping para gerir o objeto, todos os clientes que usam um determinado objeto ir enviar mensagens aps um determinado intervalo. Quando o servidor receber estas mensagens sabe que o cliente ainda est ativo, seno ela ir destruir o objeto.

32 3.2.3 COM+

COM+ o melhoramento do COM e MTS atravs de novas funcionalidades, tais como uma base de segurana (por mtodos de nveis), objeto de agrupamento (em oposio a conjugao de pooling MTS), componentes enfileirados (para trabalhar com MSMQ) e eventos COM. Segundo Mok (2003), eventos COM so os servios que fornecem um mecanismo para componentes COM para publicar ou assinar eventos.

3.2.4 .NET REMOTING

Conforme Rammer (2002), .NET Remoting para Servios Web ASP, que tem sido a programao CGI, ou seja, a tecnologia de gerar paginas dinmicas. Ela cuida de um monte de problemas para voc: ao contrrio do Web Services, por exemplo, o .NET Remoting permite que voc trabalhe com stateful objetos. Este nico fato permite que seja a base de aplicaes distribudas. Para alm da gesto dos objetos stateful, .NET Remoting d lhe um quadro flexvel e extensvel que permite a diferentes mecanismos de transferncia (HTTP e TCP so suportados por padro), encodings (SOAP binrio), e as definies de segurana (a segurana do IIS Internet Information Service e SSL). .NET Remoting da apoio para padres abertos, como XML e Simple Object Access Protocol (SOAP) tornando possvel a comunicao entre diferentes plataformas em ambientes abertos, uma vez que estas normas so adaptadas por outros vendedores de software.

Arquitetura Extensvel

O .NET Remoting oferece ao administrador e o desenvolvedor uma vasta escolha de protocolos e formatos, do que qualquer mecanismo antigo de acesso remoto. Sempre que um aplicativo cliente detm uma referncia a um objeto remoto, ele ser representado por um objeto proxy transparente, que ser mascarado como um objeto de destino. Isto permitir que todos os objetos mestres instanciem mtodos para ser chamado a ela.

33 Sempre que um mtodo chamado colocado para o proxy, ele ser convertido em uma mensagem, e a mensagem ir passar por vrias camadas.

3.3 WEBSERVICES

Web Services fornecem a capacidade de comunicao entre aplicaes, ou seja, o processo de conexo tambm entre redes, assim oferecendo interoperabilidade entre plataformas e linguagens. Web Services tecnicamente so chamadas para componentes remotos via HTTP POST, por codificao em formato XML, por exemplo: SOAP.

3.3.1 Protocolo SOAP

De acordo com RAMMER (2002), SOAP, ou Simple Object Access Protocol, define um conjunto de servios, a especificao no abrange apenas chamadas a procedimentos remotos, mas tambm a Web Services Description Language (WSDL) e Universal Description, Discovery, and Integration (UDDI). WSDL SOAP, por definio de interface e linguagem. UDDI funciona como um servio de diretrio para a descoberta de Web Services. Estes protocolos complementares e as especificaes esto tambm baseado em XML, que permite que todas as caractersticas SOAP possam ser implementadas em vrias plataformas.

3.4 A EVOLUO AT O SURGIMENTO DO .NET FRAMEWORK

De acordo com Mok (2003), originalmente chamado COM+ 2.0, o .NET nasceu do COM e COM+, porm um paradigma novo, ou seja, novas linguagens de programao, bibliotecas de cdigo, e novas ideias foram implementadas. Embora ainda seja possvel para o .NET se comunicar com os componentes COM e vice-versa, parece que tecnologias como COM, DCOM e COM+ sero marcados como "herana" num futuro

34 prximo. Ao longo da ltima dcada, COM foi o alicerce para quase todas as tecnologias da Microsoft .NET, no entanto, substitui completamente COM e, portanto, uma radical partida para a empresa aos milhes de desenvolvedores que utilizam as suas ferramentas. Ainda assim, instrutivo para olhar para trs com a linhagem que procria a atual tecnologia .NET. .NET trata componentes COM como pedaos de cdigo. Ainda se pode utilizar componentes COM no. NET, usando um wrapper (empacotador). Componentes COM tambm podem comunicar com cdigos .NET atravs de um wrapper. A inter operao COM foi descontinuada, devido ao fato do surgimento do .NET Framework. Conforme BARNABY (2003), duas importantes mudanas ocorreram at a chegada do .NET, primeiro, houve a passagem para componente base de programao. Esta filosofia encaixou se naturalmente no mundo das aplicaes distribudas; construda com base sob "n" camadas e princpios orientado a objetos. A segunda foi o surgimento da internet e o desenvolvimento do activeX com base na tecnologia COM, o qual englobava: controles ActiveX, Documentos ActiveX, Active Server Pages (ASP) e Active Data Objects (ADO). Os benefcios do COM, refere se a Microsoft .NET como uma evoluo. Tanto o COM e o .NET partilham os mesmos objetivos, .NET s faz melhor.

3.4.1 Fatos ocorridos sob o surgimento do .NET Framework

Logo que surgiu por volta de 1990 o Java j estava no imaginrio dos programadores, que sonhavam com a promessa da Sun, da clebre frase: "Escreva uma vez, rode em qualquer lugar". Poucos anos depois Java j tomava uma grande fatia do mercado e a Microsoft no ficaria de fora, investindo pesado na nova tecnologia criando at uma otimizao da plataforma para seu sistema operacional. Contudo os planos da rival no agradaram a Sun que entrou na justia alegando que o produto da Microsoft no era compatvel com o Java, ferindo os copyrights de sua detentora. A Microsoft usava o Java sob seus produtos, tendo tambm como uma modificao

35 da plataforma otimizada para seu ambiente Windows chamado Microsoft Java Virtual Machine. Esta maquina virtual java era bastante eficiente sob os sistemas operacionais Microsoft devido ha interao entre suas APIs, porm anos depois, a sua descontinuao trouxe o Java apenas como um plugin adicional ao ambiente Windows. Nessa mesma poca de 90 Steven Lucco e a sua organizao, a Colusa, alheios disputa pelo Java, produziam um produto que poderia ser o substituto para o Java, o Omniware Runtime Environment. O produto da Colusa vinha com uma Virtual Machine (VM) e uma extensa Application Programming Interface (API) assim como seu rival, s que ao invs de suportar uma s linguagem, o OmniVM, como era conhecido, suportava a linguagem Visual Basic e C/C++ e prometia ser o sucessor para o Java. A Microsoft amputada nas derrotas judiciais para a Sun, acabou sem poder usar a plataforma Java. Enxergando uma oportunidade para contornar a situao, a Microsoft comprou a Colusa em 1996. Entretanto nos prximos anos s haveria especulaes sobre a tecnologia do OmniVM, at que em 11 de julho de 2000 a Microsoft finalmente lanou o pr-beta de um framework para concorrer com o Java, o Microsoft .NET Framework. No entanto sua verso oficial, 1.0, chegou em 15 de janeiro de 2002.

36 CAPITULO III 4 ARQUITETURAS MONO .NET FRAMEWORK E JAVA

Neste terceiro captulo ser abordado as arquiteturas .NET Framework, quanto a sua normalizao at a estrutura Mono, outras plataformas derivadas da especificao .NET, como o Rotor e DotGNU, e a arquitetura Java com base na sua estrutura geral, seja no modo de compilao e funcionamento.

4.1 ARQUITETURA .NET FRAMEWORK 4.1.1 NORMALIZAO

Logo aps o lanamento oficial do .NET Framework, houve a padronizao do C# (Linguagem padro do .NET) e da Common Language Runtime. Deste modo programadores podem desenvolver e utilizar projetos de cdigo fonte aberto que so baseadas em uma linguagem que uma norma internacional, bem como a ser compatveis com diversas plataformas. A Microsoft inicialmente apresentou o CLI e a linguagem de programao C# para o European Computer Manufacturers Association (ECMA) para a normalizao em setembro de 2000. Em dezembro de 2002, a segunda edio do ECMA-335 Common Language Infrastructure (CLI) se tornou uma norma. A linguagem de programao C# tornou ECMA-334 simultaneamente. Segundo NANTZ (2004), devido estreita relao entre a ECMA e a International Standards Organization (ISO), C# e o CLI teria descontinuado esta padronizao em abril de 2003. O CLI agora ISO/IEC 23271:2006, e C# se tornou norma ISO/IEC 23270:2006.

37 4.1.2 SSCLI/Rotor

A Microsoft e a Corel, uniram se para criar a Shared Source CLI (SSCLI), tambm conhecido pelos seu codinome Rotor. SSCLI destinado ao estudo acadmico como tambm a implementao de instrues independentes de plataforma. Embora teis para o estudo, Rotor no possui qualidade comercial.

4.1.3 Portable .NET

O Open Source Portable .NET tambm chamado dotGNU pertencente ao projeto GNU, liderado por Rhys Weatherley. Esta centrada principalmente nas normas do CLI, semelhantes ao SSCLI, mas contendo algumas funcionalidades adicionais como TCL/TK para UIS e utilizando algumas implementaes do prprio Mono. Atualmente o Portable.NET roda nas plataformas Linux, Windows, Solaris, e Mac OS X. O Portable.NET possui um menor nvel de bibliotecas, e a execuo e o compilador so escritos em C. Segundo NANTZ (2004), a equipe da Portable.NET usa uma abordagem um pouco estranho, na medida em que desenvolveu um intrprete primeiro. Algumas implementaes no tem sequer um intrprete, apenas um compilador JIT. Esta abordagem interessante pode revelar se uma muito rpida implementao de um compilador JIT. Esta implementao definitivamente o mais pequeno e porttil, visto que quase todos os processadores e o sistema operacional tem um compilador C, tornando o um bom candidato para a incorporao. Portable.NET est sob a licena Gnu GPL Open Source license.

4.1.4 Compact Framework

Depois de liberado o .NET Framework em 2002, a Microsoft comeou a testar a verso beta do Compact Framework (CF). Cerca de um ano depois o Compact Framework foi liberado. Este destinado a dispositivos portteis como Mobile e Pocket

38 PC, sendo embarcado ao Windows CE. O CF apenas um subconjunto da estrutura Microsoft .NET Framework, e traz facilidades ao desenvolvimento mvel. Pois de fato a base de programao semelhante no desenvolvimento Desktop, pois se trabalha nos mesmos ambientes de desenvolvimento.

4.1.5 Mono (.NET Framework)

Lanado em meados de 2001 pela Ximian cujo seu cofundador Miguel de Icaza, Mono uma iniciativa open source que traz a tecnologia .NET para sistemas operacionais diferentes da Microsoft. O projeto Mono .NET em sua distribuio esta disponvel para os sistemas operacionais Linux, Windows, Mac OS, Berkeley Software Distribution (BSD), Solaris. Ele tambm inclui suporte para ambientes x86 (32bit e 64bit) e PowerPC (PPC). De acordo com MAMONE (2006), Icaza comeou o projeto GNU Object Model Environment (GNOME) em agosto de 1997 com um amigo, Federico Mena. Embora o projeto foi bem sucedido, Icaza foi tornando se frustrado com a complexidade do desenvolvimento de solues baseadas em componentes, atravs disso achou interessante a Microsoft .NET, a qual achou um caminho a ser explorado. Ele tambm pretendia promover os conceitos introduzidos como parte do projeto Bonobo, que era baseado em componentes COM, mas sobre o modelo .NET. Assim, nasceu o projeto Mono. Icaza agora o Vice Presidente de desenvolvimento na Novell. A Novell adquiriu o grupo Ximian em 2003, de modo agora o Mono uma parte fundamental da estratgia da Novell, com um nmero de suas principais aplicaes e servios, que se baseia no ambiente de desenvolvimento Mono. Mono uma fonte open source, multiplataforma e possui grandes incorporaes contribuindo para sua melhoria. O ambiente Mono classificado como um "Core Mono" ou ncleo, e seus componentes adicionais que oferecem suas funcionalidades, que na maioria das vezes criado partir do ncleo do ambiente Mono.

39

Figura 4: Estrutura do Mono. NANTZ (2004)

O Mono vai alm da estrutura .NET da Microsoft, pois conta com a integrao de biblioteca de terceiros, as quais so: API de depurao, integrao a plataforma Gnome (acessibilidade, renderizao com o Pango, Gdk/Gtk, Glade, GnomeUI), Mozila, OpenGL, suporte extensivo a banco de dados. Enquanto a Microsoft suporta uns poucos padres em sua instalao padro, o Mono suporta mais de 11 padres diferentes. As bibliotecas de integrao POSIX e a API embarcada usada para adicionar suporte a scripts em aplicaes, usando o CLI.

4.1.6 Licenas usadas no Mono

De acordo com LIMA (2006), o Compilador C# e as ferramentas usam a licena GNU General Public License (GPL). As bibliotecas de runtime esto sob a licena GNU Library GPL 2.0 (LGPL). As bibliotecas de classe usam a licena MIT X11.

40 4.1.7 Common Type System (CTS)

De acordo com MAMONE (2006), o CTS oferece uma srie de princpios orientadores interoperveis. CTS fornece um conjunto de regras que uma determinada linguagem deve seguir a fim de interagir com outras linguagens, que incluem a forma de lidar com tipos (tanto de referncia e valor) e como para fornecer um modelo de orientado a objeto. Esta uma caracterstica fundamental do .NET Framework e significa que voc pode escrever sua aplicao utilizando uma ou mais linguagens suportadas. para permitir o .NET Framework suportar mltiplas linguagens

4.1.8 Common Language Specification

O Common Language Specification (CLS) define um conjunto de regras para a interoperabilidade entre os componentes em diferentes linguagens. Conforme PUVVALA (2003), os componentes escritos em outras linguagens que aderem a este conjunto de regras so a ser "CLS-compliant" e so acessveis a partir de outras linguagens "CLScompliant". O CLS define regras em um subconjunto do CTS.

4.1.9 Conceito Multilinguagem

Uma das caractersticas do .NET o suporte vrias linguagens de programao. Porm alm de suportar diversas linguagens, poder estar integradas em conjunto. Segundo Mok (2003), voc pode escrever uma sub classe VB.NET em uma classe C#, e este bloco ser interpretado pela CLR gerando um arquivo IL. Numa viso terica agora muito mais fcil de implementar partes de sua aplicao usando a linguagem melhor te dispe. Linguagens de programao j suportadas pelo .NET Framework: APL, Mondrian, C#, Oberon, COBOL, Oz, Object Pascal, Boo, Perl, Eiffel, Python, Forth, RPG, Fortran, Scheme, Haskell, Smalltalk, Java (J#), Standard ML, JScript, Visual Basic, Mercury, Visual

41 C++, RUBY. A interoperabilidade de cdigo oferece muitas vantagens para companhias de software. Por exemplo, programadores C#, Visual Basic e Java pode trabalhar lado a lado no mesmo projeto, sem ter de aprender uma outra linguagem de programao. O .NET Framework Class Library (FCL) pode ser usado por qualquer linguagem .NET. A FCL contm uma variedade de componentes reutilizveis, poupando programadores o problema da criao de novos componentes.

4.1.10

Linguagem Intermediria

Aps ter sido escrito um determinado bloco de cdigo, sob uma determinada linguagem de programao suportada pelo .NET, este compilado (usando o compilador JIT) em uma linguagem intermediria conhecida como IL. A CLR, em seguida, executa a IL. Esta linguagem independente de plataforma embora a sua definio um formato de arquivo padro que uma implementao do CLR pode compreender. este formato de arquivo que oferece a possibilidade para que voc possa executar qualquer cdigo .NET em qualquer plataforma, desde que tenha uma implementao do CLR acessvel. O Microsoft Intermediate Language (MSIL) o equivalente de Java bytecode o qual gerado na plataforma Java. De acordo com LIBERTY (2005), o CTS prev a interoperabilidade das linguagens e aplicaes, IL oferece uma plataforma que permite interoperabilidade e uma compilao nativa em sistemas e finalmente, o sistema de metadados e da completa biblioteca classes (BCL), as funcionalidades necessrias para desenvolvimento baseado em componentes.

4.1.11

ASSEMBLY

Quando uma linguagem .NET gera seu arquivo de sada, gerado um PE (portable execute), em formato binrio usado para armazenar programas Win32 que envolve um conjunto de cdigos IL, dados com a descrio de tipo e tamanho, alm de mtodos e

42 seus parmetros de entrada e sada e a definio de outros componentes externos necessrios para a execuo. Um assembly pode ser privado ou compartilhado, seu contedo chamado Managed Code, ou seja, seu contedo gerenciado pelo framework. De acordo com PUVVALA (2003), assemblies compartilhados so armazenados em um repositrio mantido pelo .NET e conhecido como Global Assembly Cache (GAC). O assembly privado visvel apenas para uma aplicao em geral armazenado no prprio local do arquivo a executar. Toda aplicao .NET, quando compilada, armazenada fisicamente numa unidade de cdigo denominada assembly. Uma aplicao pode ser composta de um ou mais assemblies, os quais so representados no sistema de arquivos do sistema operacional host na forma de arquivos executveis, de extenso .EXE, ou de uma biblioteca de ligao dinmica melhor conhecida como DLL, e obviamente de extenso .DLL.

4.1.11.1

PE (Portable Executable)

Quando um aplicativo compilado, so geradas instrues IL. METADADOS com informaes da aplicao tambm so gerados, e obviamente armazenados na forma de uma DLL ou de um arquivo executvel.

4.1.12

Common Language Runtime

O Common Language Runtime (CLR), a maquina virtual do .NET Framework; atravs dela que so executados todos e qualquer executvel .NET. O cdigo intermedirio contido em um arquivo IL interpretado por esta maquina atravs do JIT compiler gerando o cdigo nativo a ser executado na maquina fsica. Segundo PUVVALA (2003), a CLR fornece servios de infraestruturas de apoio execuo de cdigo gerido. Estes servios incluem gerenciamento de memria

43 automtica, segurana, gesto de processos, e versionamento.

4.1.13

Just in Time Compiler

Compiladores JIT, usam metadados para compilar o cdigo Intermediate Language (IL). Metadados so uma descrio de dados que o .NET Framework usa para fornecer informaes sobre componentes e os seus recursos. IL uma representao intermediria, que contribui significativamente para a integrao entre linguagens de programao, que deve ser interpretado. A funo do JIT compilar o cdigo IL em cdigo nativo antes da sua execuo. Segundo Soares (2005), a compilao da IL em cdigo binrio feito durante a execuo do aplicativo. Existem trs modalidades possveis de compilao, atravs do JIT: PR-JIT: todo cdigo da aplicao compilado e armazenado. A desvantagem desta modalidade que o overhead (tempo de dedicao do processador a um dado processador) se d uma s vez, o que dependendo da aplicao pode demorar algum tempo. Porm depois de compilado, esta executada sem a necessidade de recompilao. Econo-JIT: o cdigo compilado sob demanda. Quando no mais necessrio descartado liberando memria. Se novamente for demandado, uma nova compilao acontecer. Essa modalidade aconselhvel em dispositivos com poucos recursos de memria, como os hand-helds e celulares; Normal-JIT: o cdigo tambm compilado sob demanda, no entanto no mais descartado sendo reaproveitado no futuro.

4.1.14

Framework Class Library

A viso geral do .NET Framework Class Library (FCL), tal como a API Java, poder ajud lo a executar muitas tarefas, como o acesso aos bancos de dados, criao de grficos, processamento XML, comunicao de redes, troca de mensagens, segurana e

44 servios de diretrio. Conforme SOARES (2005), FCL ou tambm conhecido por Base Class Library (BCL) a biblioteca de classes do .NET. Aqui se encontra as principais classes para a implementao da GUI (Graphic User Interface), entrada e sada de dados, gerenciamento de memria, etc. A BCL organizada em uma estrutura conhecida como namespace. Esta estrutura conhecida organiza classes prevenindo ambiguidades e simplificando bastante o trabalho com grandes grupos de objetos. Um exemplo de namespase o System.Windows.Forms que implementa todos os controles de interface grfica como labels, listboxes, buttons entres outros. "Os tipos definidos na FCL so todos controlados pelo framework atravs do GC, j que todos aderem ao Common Type System (CTS)."

4.1.15

Ciclo de execuo do .NET

Este diagrama demonstra o processo em que o .NET compilado e executado no sistema operacional.

Figura 5: Cycle compiler .NET. Ciclo de execuo do cdigo fonte .NET. BAGNALL (2002)

45 4.1.16 Compilando Cdigo Fonte em cdigo nativo

Conforme LENZ (2003), atravs do cdigo IL, pode ser permitido que o compilador JIT otimize-o para a plataforma a qual ser executada. Por exemplo, a otimizao em termos da quantidade de memria instalada, o nmero de processadores, e assim por diante. O compilador pode tambm tirar o mximo proveito do conjunto de instrues do processador. O cdigo compilado nativamente deve se averiguar qual plataforma otimizar antes da distribuio da aplicao.

46 4.2 ARQUITETURA JAVA 4.2.1 Normalizao do Java

O Java esta sob a publicly available specification (PAS), ou melhor dizendo uma especificao disponvel publicamente, normatizada pela ISO. A referncia execuo da plataforma Java o Java Development Kit (JDK), um conjunto de software livre fornecido pela Sun, afim de fornecer um conjunto de ferramentas ao desenvolvedor. Vrias verses do Java vem sendo lanadas deste sua origem. A primeira foi a verso 1.0; posteriormente foram introduzidas alteraes sob a plataforma, chegando ao JDK 1.1. Este incorporou uma nova maneira de lidar com grficos e algumas pequenas mudanas para a linguagem Java, juntamente com uma srie de novas APIs e ampliaes das existentes. A verso mais atual no presente escrito o Java 6, o qual possui vrias melhorias desde sua primeira verso, porm no modificado sua estrutura base. Segundo ENGEL (1999), embora as novas verses da plataforma Java raramente afeta a JVM anterior, isto nem sempre significa que voc pode utilizar suas implementaes nas JVM existentes seguidas das novas funcionalidades.

4.2.2 Java Community Process

A JCP foi fundada em 8 de dezembro de 1998 e vem passando por diversas melhorias. O trabalho do JCP consiste em garantir na tecnologia Java a estabilidade e compatibilidade multiplataforma. Em conjunto com a JCP, esta e a Java Specification Process (JSR), a qual cuida no processo de requisio de melhorias para o ambiente java.

47 4.2.3 Java Foundation Classes

O Java Foundation Classes (JCF), uma coleo de ferramentas contendo a interface do utilizador e as classes Java Beans, que permitem a construo Visual de um determinado programa. De acordo com ENGEL (1999), JCF foi escrito inteiramente em Java e funciona em qualquer ambiente JVM.

4.2.4 ByteCode

De modo geral o ByteCode um arquivo .class, a qual gerado pelo compilador Java, este arquivo independente de plataforma, o que significa que este pode ser interpretado e executado por uma JVM em qualquer plataforma. O bytecode esta entre o cdigo fonte, seja alguma linguagem suportada pelo java (o prprio Java, Groovy, JRuby, Jython) e o cdigo nativo.

4.2.5 JIT Compiler

Em conjunto com a JVM o compilador JIT interpreta os bytecodes, transformando o em cdigo de maquina para a execuo no sistema operacional.

4.2.6 Class Loader

O Class Loader responsvel pelo carregamento de classes da JVM. O processo ocorre atravs da localizao e identificao dos bytecodes necessrios a ser carregados, criando tambm uma instancia do java.lang.Class que um pacote contendo as classes base do Java. Classes referenciadas por classes j carregadas sero resgatadas s quando houver necessidade.

48 4.2.7 Distribuies da Plataforma Java

Sun Microsystems reorganizou a plataforma Java em trs categorias, principais: Java SE: A plataforma Java Standard Edition visam mquinas desktop. Java ME: A plataforma Java Standard Edition ou Mobile Edition orientados para dispositivos portteis. Java EE: A plataforma Java Enterprise Edition utilizado no desenvolvimento de aplicaes empresarias em longa escala, relaciona aplicativos baseado em componentes e multi camadas. O nome da plataforma Java foi simplificada. Anteriormente, era conhecida como Plataforma Java 2 Enterprise Edition (J2EE), e suas verses especficas era constitudas por "pontos" e "nmeros", tais como J2EE 1.4. O "2" foi retirado do nome, bem como o "ponto" e "nmero". Ento a ltima verso da plataforma Java Java Enterprise Edition 6(Java EE 6). Para PUVVALA (2003), embora se trate de uma simplificao feita pela Sun, voc pode pensar em Java ME como um subconjunto do Java SE e deste pense como um subconjunto de Java EE. Java EE uma tecnologia de base construda para o Java, Java SE e Java EE prev o desenvolvimento e a execuo de ferramentas utilizadas por desenvolvedores para criar aplicativos empresariais.

Figura 6: Plataforma Java Standard Edition v 1.4. Sun Microsystems, Inc. (2009)

49 4.2.8 Ciclo de execuo do JAVA

Figura 7: Java code cycle. Ciclo de execuo do cdigo fonte Java. BAGNALL (2002)

Este diagrama demonstra o processo em que o Java compilado e executado no sistema operacional.

4.2.9 Licena

O Java atualmente (2009), possui um duplo licenciamento, ou seja, constitudo pela GPLv2 e Common Development and Distribution License (CDDL), esta criada pela prpria Sun, a qual no deixa de ser open source, porm leva em considerao o proposito comercial. Quanto ao usurio, pode opta-lo pela qual melhor se adequ.

50 CAPITULO IV 5 LINGUAGENS DE PROGRAMAO, IDE's E MODOS DE ACESSO A DADOS

O quarto capitulo deste trabalho descreve de uma maneira geral os conceitos de orientao a objetos que esta fixado sob as tecnologias estudas (Java e Mono), as linguagens de programao suportas por cada plataforma, os principais ambientes de desenvolvimento destacados para cada plataforma e seus modos de conexo a banco de dados.

5.1 Conceitos de Orientao a Objetos

Conforme SIMMONS (2004), o conceito orientao a objetos inicia em meados dos anos 70, abrangendo um grande nmero de programadores e organizaes, atravs das linguagens Smalltalk e Eiffel que eram puramente orientada a objetos. Logo mais com o advento do C++, o qual era um C melhorado como o apoio em desenvolvimento orientado a objetos. Com o surgimento da linguagem Java, este conceito (Orientado a Objeto) se popularizou de vez no ambiente de desenvolvimento, devido as suas facilidades em questo de manuteno e reutilizao de cdigo. Das diversas linguagens suportadas pela plataforma Java e Mono .NET Framework, todas aderem ao estilo orientao a objetos.

5.2 Linguagens de programao suportas pela plataforma JAVA 5.2.1 Java

O Java alm de ser uma plataforma tambm uma linguagem de programao a qual interpretada pela JVM. Java a linguagem de programao mais conhecida popularmente a ser programado sob o ambiente Java, pois ela que fornecida por

51 padro. uma linguagem Orientada a Objetos, e derivada do C/C++. 5.2.2 Groovy

Groovy uma linguagem dinmica, a qual possui diversas caractersticas das linguagens python e ruby, com similaridade na sintaxe do java.

5.2.3 JRuby

Ruby foi criado em 1993 pelo YUKIHIRO Matsumoto sendo liberada ao pblico em 1995. A aplicao principal um intrprete escrito em C, geralmente chamado Matz Ruby Implementation (IRM), quando h uma necessidade de distinguir entre a linguagem Ruby e o Ruby Implementation. O JRuby a implementao da linguagem Ruby disponvel para plataforma Java.

5.2.4 Jython

Conforme BILL (2001), a histria do Jython comea com Jim Hugunin, um colega de Guido van Rossum (fundador da Linguagem Python) na Corporation for National Research Initiatives (CNRI), que reconheceu a necessidade de uma aplicao Java sob a linguagem de programao Python e aplicaram na sob o nome original Jython.

5.3 Linguagens de programao suportas pela plataforma Mono (.NET Framework) 5.3.1 C#

Quando foi desenvolvido a plataforma .NET, necessitou se uma linguagem de programao para que fosse interpretada pela CLR. A Microsoft projetou ento o C# a qual se identifica como uma moderna linguagem orientada a objetos, que permite aos programadores construir rapidamente componentes .NET de alto nvel. Esses

52 componentes podem ser facilmente convertidos em servios Web para ser utilizado atravs da Internet. C# baseado na sintaxe C e C++ e utiliza alguns conceitos de diversas outras linguagens, como o Java e Visual Basic. Ele combina a rpida produtividade do Visual Basic com o poder do C++.

5.3.2 VB.NET

Ao longo do tempo a Visual Basic se tornou a linguagem mais popular no desenvolvimento de aplicativos para Windows, no entanto havia a necessidade de modernizar a linguagem em si, tornando a mais robusta e adaptada para uma nova realidade de mercado. A linguagem VB.NET derivado do Visual Basic, porm com um perfil totalmente remodelado para a plataforma .NET Framework, em 2002.

5.3.3 Object Pascal

A linguagem object pascal derivado do pascal. uma linguagem orientada a objetos, a qual tem suporte sob as plataformas .NET, tanto Microsoft quanto Mono.

5.3.4 J# (JSharp)

Anunciado no final de 2001, J# o sucessor oficial do Visual J++, o qual era um ambiente de desenvolvimento pra Java criado pela Microsoft. Como J++, J# segue a linguagem Java das sintaxes as regras. Mas ao contrrio de Java, aplicaes escritas usando J# pode ser executado apenas na CLR, e no em uma JVM. A vantagem para os desenvolvedores Java quanto a linguagem J# poder de usufruir, das competncias existentes em Java para escrever cdigos J# na plataforma .NET, at uma migrao possvel ao C#.

53 5.3.5 F# (FSharp)

F# uma linguagem de programao funcional, ou seja, porque programas so formados exclusivamente por funes. Segundo SYME (2007), o desenvolvimento de um sistema atravs do paradigma funcional, consiste na escolha de funes matemticas que expressem o problema de forma declarativa. O F# baseado nas linguagens Haskell e Ocaml, seu desenvolvimento inicio se em 2002 por Dom Syme e outros mais desenvolvedores da Microsoft, seu pr lanamento ocorreu em 2005. A programao em F# tende a ser mais orientada a objeto, do que em outras linguagens funcionais.

5.3.6 IronRuby

O IronRuby um um projeto open source baseado na linguagem Ruby, para implementao atravs da plataforma .NET. Ruby em sua linguagem bem conhecida devido a sua simplicidade de cdigo e orientada a objetos.

5.3.7 IronPython

IronPython uma implementao do Python para a plataforma .NET, esta como outras linguagens comentadas Orientada a Objetos, dinmica e permite a integrao com outras linguagens como C#. 5.3.8 Boo

Boo uma linguagem baseada na sintaxe do python, para implementaes sob a plataforma Mono e Microsoft .NET. O significado de Boo vem do nome de seu fundador Rodrigo Banboo.

54 5.3.9 C++

Diferente dos problemas enfrentados pelo C++ anteriormente, principalmente na questo de gerenciamento de memria. A linguagem C++ esta disponvel para a plataforma .NET, agora tambm em modo gerenciado, podendo ser trabalhada neste modo ou no (ou seja, nativamente, neste trata se como uma exceo ao desenvolvimento sob ambiente .NET).

5.3.10

C# Versus Visual Basic .NET

De acordo com LIBERTY (2005), a premissa do .NET Framework que todas as linguagens so iguais. Parafraseando George Orwell, no entanto, algumas linguagens so mais semelhantes do que outras. C# uma excelente linguagem para o desenvolvimento em .NET como tambm a na maioria das vezes a mais comentada em estudos. possvel que muitos programadores do antigo Visual Basic 6 iram escolher C# para aprender em vez de melhorar as suas habilidades para VB.NET. A transio do VB 6 para VB.NET provavelmente quase to difcil como partir de VB 6 para C# e, se justa ou no, historicamente, a famlia de programadores C tiveram maior ganho potencial que programadores VB. Programadores VB nunca obtiveram o respeito que merecem, e o C# oferece uma maravilhosa oportunidade de fazer uma transio potencialmente lucrativa.

5.3.11

C# versus Java

Em suma LIBERTY (2002) afirma, programadores Java podem olhar em C# uma mistura de ansiedade, alegria, e ressentimento. Tem sido sugerido que C# de alguma forma um "rip-off" de Java. Atravs do C# certamente entende se sobre Java. Assim atravs de Java aprende se muita coisa de C++, que deriva a sua sintaxe de C, o que, por sua vez, foi construdo sob outras linguagens. C# oferece uma transio fcil para programadores Java; a sintaxe e a semntica muito semelhante por isso esto familiarizados e confortveis. Programadores Java

55 provavelmente iram querer focar as diferenas entre Java e C# para usar com eficacia no seu desenvolvimento.

5.4 Ambientes de desenvolvimento destacados s plataformas Java e Mono (.NET Framework)

Um ambiente de desenvolvimento integrado (IDE) consiste em uma coleo de programas colaborativos que facilitam o desenvolvimento de software. Os servios e componentes disponveis sob este ambiente esto literalmente integrados formando um ambiente de trabalho pratico no processo de desenvolvimento. 5.4.1 Camadas principais de uma IDE

Editor: onde voc estar escrevendo seu cdigo. Com o prprio "bloco de notas" do Windows, ou Gedit no Gnome (Linux), ou seja, com qualquer editor de texto por mais simples que ele seja, j poder desenvolver algum programa. Porm qual a importncia de uma IDE, quais so as vantagens? Sua principal vantagem esta na interatividade com o desenvolvedor, seja ento auxiliando e facilitando o processo de codificao de um determinado software para computador. Plataforma: A maneira de entendimento de como uma IDE atua como uma plataforma, e da forma de como ela integra todos os componentes oferecidos pela tecnologia trabalhada, seja Java, .NET ou qualquer outra plataforma.

Processo de desenvolvimento - (Utilizando qualquer editor de texto)

Compilando e executando um programa no Java (utilizando a linguagem Java)


meu_programa.java (Apendice 01 Algoritmo exemplo Java) Compilando javac meu_programa.java Executando java meu_programa.class

56 Compilando e executando um programa no Mono .NET (utilizando a linguagem C#)


meu_programa.cs (ANEXO 01 Algoritmo exemplo C#) Compilando mcs meu_programa.cs Executando Mono meu_programa.exe

Notem que isto extremamente simples, servindo apenas como exemplo, porm quando estivermos desenvolvendo algum projeto, sendo orientado para Desktop, Web ou Mobile, devido a sua complexidade, necessitaremos de algo mais produtivo, assim o poder contido no ambiente de desenvolvimento influenciar tanto na qualidade e o tempo de trmino de um determinado software.

5.4.2 MonoDevelop

MonoDevelop uma IDE Gnome destinada ao desenvolvimento Mono .NET Framework. Principalmente suportando a linguagem C#, e logo mais, tambm outras linguagens como VB.NET, Boo, etc. um software open source e multiplataforma, sendo mantido pela empresa Novell.

5.4.3 Sharp Develop

SharpDevelop um ambiente de desenvolvimento integrado de cdigo aberto para aplicativos .NET Framework. Suporta o desenvolvimento de aplicaes escritas em C#, VB.NET, Boo, IronPython e F#. Ele fornece caractersticas de uma moderna IDE, porm suporta somente o sistema Windows, possui uma boa compatibilidade com o Visual Studio devido a utilizar uma mesma estrutura de projeto e formatos de arquivo. Alm disso tem o suporte ao desenvolvimento para aplicativo GTK para Mono .NET.

57 5.4.4 Visual Studio

O Visual Studio a ferramenta oficial para o desenvolvimento de software da plataforma Microsoft .NET, ele contem um ambiente integrado para ser utilizado em todas as fases de desenvolvimento. Inclui o editor de cdigo fonte, compiladores, depuradores e utilitrios diversos aos quais se torna mais pratico o desenvolvimento de aplicativos em modo designer. Conforme a MSDN (2008), o Visual Studio possui uma verso Express destinado para estudantes e a verso professional para empresas. O VS um ambiente proprietrio funcionando apenas no sistema operacional Windows, cujo sua detentora a Microsoft, porm softwares desenvolvidos neste RAD, podem ser executados sob a plataforma Mono .NET.

5.4.4.1

DelphiPrism

Delphi Prism um novo ambiente de desenvolvimento Delphi para a plataforma Microsoft .NET e Mono. No possui uma IDE prpria, mas integrada ao ambiente Visual Studio, ou seja, o Delphi Prism e o VS trabalham em conjunto quanto ao desenvolvimento utilizando a linguagem Object pascal. A atual (2009) detentora do Delphi Prism a empresa Embarcadero.

5.4.5 Eclipse

Conforme GAMMA (2003), o Eclipse pode servir como uma IDE para diversas linguagens de programao. A IDE pode ser integrada a linguagens como C/C++, Java e at mesmo C#, como tambm outros componentes para o desenvolvimento de software atravs de Plugins disponveis pelo prprio Eclipse ou por terceiros. A sua grande popularidade como uma IDE para a plataforma Java. O eclipse um ambiente open source e multiplataforma, mantido pela prpria Comunidade Eclipse.

58 5.4.6 Netbeans

O ambiente de desenvolvimento Netbeans, segue os mesmos princpios do Eclipse. Ele possui um completo ambiente de desenvolvimento, oferecendo suporte para programao Desktop, Web, Mobile, podendo ter integrao total com UML. O Netbeans esta sob uma licena dupla: a GPLv2 e a CDDL, sua detentora a Sun Microsystems. multiplataforma e destinado principalmente ao desenvolvimento Java, alm de suportar a integrao com Ruby, C/C++, PHP, entre outras linguagens dependendo dos plugins instalados na IDE.

5.5 COMPONENTES DE ACESSO A DADOS 5.5.1 JDBC

Conforme ZUKOWSKI (2006), a API JDBC foi adicionada a partir do JDK 1.1, e tem oferecido apoio para conectar o Java a diferentes tipos de base de dados, atravs de drivers registrados a sua API. Contrariamente crena popular, JDBC no uma sigla e sim um nome registrado pela Sun Microsystems que representa um tipo de tecnologia. No "Java Database Connectivity" como muita gente pensa. JDBC possui um conjunto de classes e API, fornecendo a capacidade de conectar "qualquer" banco de dados relacional e manipul-los atravs de instrues SQL, ha um determinado programa. Para cada banco de dados a ser conectado, utiliza se um driver JDBC especfico. O JDBC a API padro para acesso a dados no Java, por padro inclui apenas alguns drivers como o JDBC-ODBC, que permite utilizar um driver ODBC para acessar um banco de dados; esta conexo serve como uma ponte de aceso entre o JDBC e o ODBC. Outros drivers para acesso ao MySQL, Firebird, PostgreSQL, SQLite, entre outros podem ser adquiridos e registrados ao JDBC.

59

Figura 8: Estrutura base do JDBC. O desenvolvedor trabalha com objetos simples em Java. O DriverManager em conjunto com o driver especifico, fornece o acesso ao banco de dados. BRILL(2001)

5.5.2 ADO.NET

Conforme MOREIRA (2005), o ADO.NET (ActiveX Data Objects), foi projetado pela Microsoft, contendo um conjunto de classes que permite acesso estvel a todo tipo de banco de dados, alm de recursos como suporte nativo a XML, transaes, interfaces de generalizao de acesso a bancos (Factory), entre outras. ADO.NET o nome da biblioteca Microsoft para acesso a banco de dados para a plataforma .NET, acessvel de qualquer linguagem de programao. Possui o suporte para acesso desconectado a banco de dados, integrao XML facilitando a integrao de informaes com outros programas ou at mesmo outras plataformas e integrao com o Visual Studio atravs de wizards (componentes visuais) ou de forma manual. Outras IDE's como MonoDevelop e #Develop ainda no possui integrao total ao ADO.NET, seja na questo em modo designer. Segundo a MSDN (2008), o ADO possui acesso ao SQL Server, OLEDB, Oracle e ODBC. ODBC serve como uma ponte para acesso outros bancos de dados como Firebird, PostgreSQL, MySQL, etc.

60

Figura 9: Arquitetura ADO.NET. MSDN (2009)

5.5.3 Outros modos de acesso a dados com o .NET 5.5.4 Open DataBase Connectivity (ODBC)

O driver ODBC uma opo para acesso a dados a qual possui suporte a diversos tipos de banco de dados, ocorrendo da mesma maneira que o JDBC, a cada tipo de banco possui um outro driver especfico a ser registrado para o acesso. O ODBC, esta disponvel tanto no Java e no Mono .NET.

5.5.4.1

NPGSQL

O NpgSQL o provedor padro do Mono para acesso a dados no PostgreSQL, funcionando tambm sob a plataforma Microsoft .NET. um componente open source distribudo pela Pgfoundry. Este componente oferece a funcionalidade de desenvolvimento tanto para Desktop quanto para Web.

61

Figura 10: Principio bsico de acesso a base de dados PostgreSQL, utilizando o NpgSQL. Autor(2009)

5.5.4.2

PgSqlNET Free Express

Desenvolvido pela Devart um componente de acesso a dados para o PostgreSQL. Na sua verso completa (professional) a qual inclui todas as vantagens do modo designer de configurao do acesso interao entre as tabelas, facilitando o desenvolvimento, no entanto uma verso proprietria. Na verso express inclui toda a infraestrutura de acesso a dados com exceo do modo designer, assim tendo de ser codificado manualmente vrios parmetros em um determinado projeto de software.

62 CAPITULO V 6 COMPARATIVOS DAS TECNOLOGIAS JAVA E MONO .NET FRAMEWORK

Neste quinto captulo inicia o processo de comparao das tecnologias Java e Mono .NET Framework, analisando e demonstrando alguns de seus pontos crticos como desempenho em relao ao sistema operacional seja Windows ou Linux aqui comparado. Em uma analise breve comentando sobre as linguagens Java e C# as quais foram utilizadas, os ambientes de desenvolvimentos trabalhados e a maneira utilizada na conexo com o banco de dados. So mostrados a este captulo tabelas e grficos focando a analise quantitativa afim de melhor demonstrar o comparativo executado nestas plataformas.

6.1 PROCESSO DE DESENVOLVIMENTO PRTICO


ESPECIFICAO DOS SOFTWARES UTILIZADOS NO DESENVOLVIMENTO Plataforma MONO .NET Plataforma JAVA Maquina Virtual Mono-Core 2.4 Maquina Virtual Jre 1.6_14 SDK Mono 2.4 SDK Jdk 1.6_14 SharpDevelop 3.1 Netbeans 6.7 IDE (Windows) IDE (Win/Linux) MonoDevelop 2.0 (Linux) Componente de acesso a dados NpgSQL 2.0.6 Jdbc driver postgresql-8.4-701.jdbc3 Sistemas Operacionais Executados / Desenvolvidos Windows XP pro SP3 x86 Linux: Ubuntu 9.04 x86 Sistemas Operacionais Executados Windows 7 Ultimate beta x64 openSUSE 11.1 x64 Windows XP pro SP3 x86 Linux: Ubuntu 9.04 x86 Sistema Operacional Desenvolvido Windows 7 Ultimate beta x64 openSUSE 11.1 x64 Sistema Gerenciador de Banco de Dados Banco de Dados PostgreSQL 8.4 x86 Sistema Operacional (Servidor) Linux: Ubuntu 9.04 x86

Figura 11: Especificao dos softwares utilizados no processo de comparao das tecnologias Java e Mono .NET. Autor(2009)

63

Figura 12: Topologia Cliente-Servidor, aplicada nos teste entre as plataformas Java e Mono. Autor (2009)

6.2 ANALISE DO APLICATIVO COMPARADO

Foi desenvolvido sob cada plataforma, um aplicativo para execuo em modo Console, cujo seu objetivo foi demonstrar o acesso a dados, e alguns conceitos de orientao a objetos, o qual caracterstica das linguagens tambm comparadas. Aps o desenvolvimento foi executado estes, em dois sistemas operacionais distinto afim de compara-los . O aplicativo consistiu em um CRUD (Create Retrieve Update Delete), que so as funes principais que um aplicativo que esta acessando dados deve possuir. Este de forma automtica poderia manipular uma quantidade n de dados, neste caso em uma tabela contendo algumas tuplas do tipo inteiro, texto, numrico e data. Os valores enviado para a base de dados PostgreSQL j eram predefinidos. Este aplicativo executou uma bateria de 10 testes afim de coletar dados quanto ao tempo para ser avaliado atravs de tabelas e grficos o seu desempenho. Trabalhou se nesta implementao a questo de chamadas de classes, troca de mensagens entre mtodos, comunicao entre na rede (Cliente-Servidor) e a integrao quanto ao sistema operacional e o hardware.

64 6.2.1 Analise do processo de desenvolvimento prtico 6.2.1.1 Das linguagens de programao Java e C#

Das linguagens comparadas as quais foram o Java pertencente a plataforma Java e o C# sob o Mono .NET Framework, a razo pela qual foi de se escolher estas, por estarem embarcadas por padro sob o ambiente de desenvolvimento e a plataforma em si. 6.2.1.2 Da maneira de conexo com o banco de dados

No modo de conexo ao banco de dados, referente ao Java utilizou-se o JDBC com o driver especfico para o PostgreSQL . Ao Mono .NET, foi usado o componente NpgSQL, este por ser o padro de utilizao no Mono para a conexo com o PostgreSQL.

6.3 BANCO DE DADOS UTILIZADO

6.3.1 PostgreSQL Conforme GONZAGA (2007), o PostgreSQL um gerenciador de banco de dados objeto-relacional (ORDBMS) de cdigo aberto, descendente do Postgres verso 4.2, desenvolvido na universidade da Califrnia em Berkely. O PostgreSQL robusto, confivel, rico em recursos, implementa caractersticas de orientao a objetos e suporta grande parte do SQL:2003.

6.3.2 Analise no processo de teste quanto ao banco de dados

Foi criado um banco de dados no PostgreSQL, neste caso foi manipulado apenas uma tabela, esta contendo 6 tuplas, de tipos diversos, afim de testar as tecnologias

65 estudadas. O comparativo no foi focado no banco mais sim na tecnologia, para mostrar o processo de insero, localizao, alterao e remoo, ou seja, demonstrando no aplicativo um CRUD(Create, Retrieve, Update, Delete). Neste processo pode se testar tanto o Hardware como a Rede, pois sua execuo foi feita da maneira Cliente/Servidor, seja um computador com o Gerenciador de Banco de dados PostgreSQL e outro computador servindo de Cliente para os testes nas plataformas Java e Mono. Foi separado o banco de dados do aplicativo, afim de no ser acessado localmente, a questo do aplicativo no poder acessa-lo de maneira local, resulta o motivo dos resultados no ficarem instveis, uma vez que no processo de uma grande quantia de dados estarem sendo processados no banco e a aplicao estar manipulando estes dados, havendo um confronto quanto ao uso do hardware e no gerenciamento no sistema operacional.

6.3.2.1

Do desempenho no acesso a dados

Quanto ao desempenho destes, houve tambm a influncia do sistema operacional e o gerenciador de banco de dados no lado servidor, ou seja, levando em considerao na parte de Hardware, configuraes na sua otimizao e verso da plataforma de execuo. Neste procedimento usou-se configuraes padres definidas j na instalao do sistema.

6.4 ANALISE DOS AMBIENTES DE DESENVOLVIMENTO UTILIZADOS

No processo de comparao entre as plataformas Java e Mono, foi utilizado as IDE's Netbeans (Windows/Linux), MonoDevelop (Linux) e o SharpDevelop (Windows) para desenvolver e compilar os aplicativos a serem analisados. Em geral estes ambientes atenderam muito bem os requisitos, porm deve se levar em considerao que no foi desenvolvido algo to complexo para verificar se algum destes ambientes contivessem alguma deficincia. Analisando estas 3 IDE's open source, o Netbeans leva uma certa vantagem em ser multiplataforma assim podendo de maneira facilitada ser compilados projetos tanto em Windows ou no Linux sem ter de sofrer adaptaes ao projeto. Este fato

66 ocorre j de uma maneira parcial nos ambientes Sharp Develop e MonoDevelop. Apesar do MonoDevelop j estar possuindo verses ainda em testes para o Windows (2009) tornando o desenvolvimento de um projeto totalmente multiplataforma (lembrando, seu executvel independente da IDE ser multiplataforma), este possui algumas falhas nas quais impossibilita o desenvolvimento de determinados aplicativos neste caso foi no acesso instalao de componentes como o NpgSQL, no ambiente Windows, usado no desenvolvimento dos aplicativos a serem comparados. Retirando a questo de cdigo aberto e multiplataforma, esto concorrendo frente a frente o Visual Studio (VS) e o Netbeans, o VS, um ambiente proprietrio da Microsoft como descrito no captulo 4, quando tratado ao desenvolvimento em Mono .NET ou Microsoft .NET como o padro deste, h grandes projetos esta a IDE adequada isto , caso queira utilizar de uma ferramenta proprietria.

6.4.1 Quanto a produtividade e desempenho nas plataformas Java e Mono .NET Houve altas e baixas tanto no processo de desenvolvimento seja na tecnologia Java e Mono .NET, no entanto isso j algo de se esperar independente da tecnologia trabalhada. A documentao, alm do padro fornecida nestes ambientes quanto a fontes externas no adequado entendimento, o "motor" principal na produo de um software e isso conteve nos dois ambientes estudados.

6.5 RESULTADOS OBTIDOS NOS TESTES

Conforme aplicativos desenvolvido e executado em sistemas operacionais distintos, gerou os seguintes resultados, que esto sendo confrontados logo a seguir. Os valores esto definidos em milissegundo (ms). As seguintes comparaes so executadas: O processo de gravao de uma quantia n de caracteres por linha, atravs de um lao de repetio, para um arquivo comum de texto. Um CRUD, demonstrando o processo e insero, listagem, alterao e remoo.

67 6.5.1 Resultados obtidos no processo de gravao em arquivo texto

Teste n

Comparativo: Gravao em arquivo. Sistema Operacional Windows 7 x64. Java Mono Teste de desempenho: Processo de gravao em arquivo. 1 75 20 80 2 44 13 60 3 37 12 4 35 13 Java 40 5 41 12 Mono 20 6 35 13 7 45 13 0 8 41 30 1 2 3 4 5 6 7 8 9 10 9 42 20 Teste n 10 45 13
Tempo (ms)

Grfico 1: Resultados obtidos no processo de gravao de dados em arquivo, executados sob o sistema operacional Windows, atravs do console DOS. Autor (2009).

Teste n

Comparativo: Gravao em arquivo. Sistema Operacional open SUSE 11.1 x64 Linux. Java Mono Teste desempenho: Gravao em arquivo 1 62 55 80 2 63 25 60 3 49 25 4 54 24 40 5 52 30 20 6 38 29 7 47 25 0 8 47 27 1 2 3 4 5 6 7 8 9 10 9 50 25 Teste n 10 47 29
Tempo (ms)

Java Mono

Figura 13: Resultados obtidos no processo de gravao de dados em arquivo, executados sob o sistema operacional Linux, atravs do gnome-terminal. Autor (2009).

68 6.5.2 Comparativo: CRUD. Testes efetuados no Sistema Operacional Windows.

Grfico 2: Grfico demonstrando e comparando o desempenho no processo de insero em uma bateria de 10 testes, a cada teste 10000 inseridos um a um. Teste efetuado sob o sistema operacional Windows. Autor(2009).

Grfico 3: Grfico demonstrando e comparando o desempenho no processo de listagem, tambm entendido como localizao em uma bateria de 10 testes, a cada teste 10000 listados. Teste efetuado sob o sistema operacional Windows. Autor(2009).

69

Grfico 4: Grfico demonstrando e comparando o desempenho no processo de alterao em uma bateria de 10 testes, a cada teste 10000 alterados um a um. Teste efetuado sob o sistema operacional Windows. Autor(2009).

Grfico 5: Grfico demonstrando e comparando o desempenho no processo de remoo em uma bateria de 10 testes, a cada teste 10000 removidos um a um. Teste efetuado sob o sistema operacional Windows. Autor(2009).

70 6.5.3 Comparativo: CRUD. Testes efetuados no Sistema Operacional LINUX

Grfico 6: Grfico demonstrando e comparando o desempenho no processo de insero em uma bateria de 10 testes, a cada teste 10000 inseridos um a um. Teste efetuado sob o sistema operacional Linux. Autor(2009).

Grfico 7: Grfico demonstrando e comparando o desempenho no processo de listagem ou tambm considerado com uma localizao em uma bateria de 10 testes, a cada teste 10000 registros foram listados em modo console. Teste efetuado sob o sistema operacional Linux. Autor(2009).

71

Grfico 8: Grfico demonstrando e comparando o desempenho no processo de alterao em uma bateria de 10 testes, a cada teste 10000 registros alterados um a um. Teste efetuado sob o sistema operacional Linux. Autor(2009).

Grfico 9: Grfico demonstrando e comparando o desempenho no processo de remoo em uma bateria de 10 testes, a cada teste 10000 registros removidos um a um. Teste efetuado sob o sistema operacional Linux. Autor(2009).

72 6.6 DOS APLICATIVOS COMPARADOS.

Primeiramente foi compilado um programa sob cada tecnologia demonstrando um conjunto de laos de repetio o qual inseria uma certa quantidade de caracteres para um arquivo de texto. Referente aos resultados: o tempo do Java em relao ao Mono era o dobro. At este ponto pod se ter uma comprovao dos vrios mitos que so relatados do Java quanto ao seu desempenho, assim tornando-o quase reais. Porm quando se desenvolveu um aplicativo, demonstrando um CRUD este de forma automatizada, interligado num gerenciador de banco de dados PostgreSQL, contendo uma tabela com colunas possuindo alguns certos tipos de dados. Este aplicativo tambm mostrava o processo de troca de mensagem entre mtodos, chamadas de classes e comunicao em rede. Analisando as caractersticas contida nas duas tecnologias. Conforme grficos e tabelas de valores demonstrados anteriormente (tempo em milissegundo (ms)) o Java teve uma certa vantagem nos processos de Insero, Alterao e Remoo quanto ao Mono .NET, apenas perdendo na amostragem dos dados no ambiente Windows, agora neste ponto ficou unanime a questo quanto a lentido do Java. Em proporo, quanto a estes resultados obtidos, um software executado sob estas plataformas quanto mais complexo ele for, mais tender quanto ao desempenho para ambas as partes, isso serve de base para softwares executados sob maquinas virtuais, como neste caso, ou para execuo nativa. Outro fator levantado a influncia do sistema operacional sob a plataforma de execuo, como notado no comparativo de listagem a uma variao do Windows para o Linux quanto ao desempenho do Java. O objetivo destes aplicativos no era otimiza-los em nenhuma circunstncia, assim mostrando o verdadeiro desempenho de maneira geral, o que cada tecnologia oferecia, nesta circunstncia.

6.7 DOS SISTEMAS OPERACIONAIS USADOS NOS TESTES

Em relao aos sistemas operacionais executados, seja, analisando seu desempenho, houve algumas diferenas entre o Linux e Windows, esta diferena foi quanto sua estabilidade. Enquanto o Windows ocorreu alguns picos quanto ao tempo de

73 execuo o Linux no sofreu nenhuma grande variao mantendo quase constante sua velocidade. Tanto o sistema operacional Windows XP e Ubuntu, sua instalao era limpa, ou seja, nenhum aplicativo a mais que no fosse a maquina virtual Java e o .NET Framework, e claro o sistema operacional (obvio). Tambm pode ser levado em considerao ao hardware, o qual detinha o sistema. Conforme grficos mostrados houve picos que ocorreram em ambas as partes e no Windows com uma alta variao, isso se deve ao fato, da maneira que o sistema gerencia os processos. Quanto aos sistemas operacionais openSUSE e Windows 7 foram apenas testados a integrao de projeto e sua execuo, ou seja, verificando a compatibilidade e sua questo multiplataforma. Seus resultados. Houve total compatibilidade tanto no Java quanto o Mono .NET nestes sistemas operacionais e claro quanto aos que foram usados no processo de comparao de desempenho. No Windows foi testado a execuo do programa tambm sobre a maquina virtual Microsoft .NET afim verificar a compatibilidade entre plataformas, apesar do Mono ter surgido da Microsoft .NET.

6.8 COMPARATIVO GERAL ENTRE AS PLATAFORMAS JAVA E MONO .NET FRAMEWORK 6.8.1 Analise dos tipos de dados das linguagens Java e C#

Conforme Tabela 1, esta demonstra algumas similaridades como tambm algumas diferenas entre as linguagens Java e C#, que so padres das tecnologias estudadas. H diferena, e em alguns casos muita, quando ento analisado um grande bloco de cdigo fonte implementado sob estas linguagens. No caso da implementao efetuada para se obter os testes (em anexo), tentou se manter compatibilidade uma com a outra, quanto as regras e padres oferecidos para cada linguagem. O que diferenciou foi a sintaxe de cdigo pois o principio foi o mesmo, a parte mais notvel foi a forma tratada na comunicao com a base de dados.

74
Equivalncia comparativa de alguns tipos de dados, entre as linguagens Java e C# Java C# Java C# abstract abstract interface interface extends : instanceof is super base synchronized lock Boolean bool long long break break package namespace case case new new catch catch private private char char protected protected public public class class const* const return return final const/readonly byte sbyte continue continue short short default default static static do do String string double double switch switch else else this this throw throw native extern float float import using goto goto void void volatile volatile if if while while int int

Tabela 1: Equivalncia entre alguns tipos de dados das linguagens Java e C#. MOK (2003, adaptado).

6.8.2 Analise dos ambientes de desenvolvimento

Analise dos ambientes de desenvolvimento quanto as plataformas suportadas e Licena. Plataforma Ambiente Plataforma Licena Mono .NET SharpDevelop Windows Livre Mono .NET MonoDevelop Linux / Windows / Solaris Livre Mono .NET X-Develop Linux / Windows Proprietria / Grtis (Verso Trial) Mono .NET Visual Studio Windows Proprietria / Grtis (Verso Express) JAVA / .NET Eclipse Linux / Windows / Solaris Livre JAVA Netbeans Linux / Windows / Solaris Livre Mono .NET DelphiPrism(Plugin VS) Windows / MAC OS Proprietria / Grtis (Verso Trial)

Tabela 2: Analise comparativa das IDE's. Plataforma (S.O. suportado) e Licena. Autor (2009) Na tabela abaixo esta sendo verificado alguns ambientes de desenvolvimento, analisando a questo de sistema operacional suportado, e licena de uso. Nota se que pode ser usado tanto para a plataforma Mono ou Java ferramentas open source, diminuindo custos no processo de desenvolvimento de software.

75 6.8.3 Aspectos gerais das plataformas estudadas

Conforme Tabela 3, esta demonstrando de uma forma geral, alguns fatores em comum que cada plataforma possui, e alguns pontos que o diferenciam.
Aspectos gerais entre as tecnologias MONO e Java Suporte para a Plataforma JAVA MONO Portabilidade de Plataforma Multi Plataforma Multi Plataforma Linguagens de programao Multi Linguagem Multi Lingauagem Orientao a Objetos Linguagens O.O. Linguagens O.O. Normalizao JCP ECMA Licena GPL 2 / CDDL GPL 2 / MIT x11 Compilao e Excuo do Cdigo JVM CLR Cdigo intermdiario Bytecode CIL (IL) Identificao do executvel .class .exe / .dll IDE possui. possui. Mobilidade possui. possui. Suporte WEB JSP ASP.NET ADO.NET / Componentes terceirizados Acesso a dados JDBC Fornecedor Sun Microsystems Novell (Ximian) Preo Livre. Livre.

Tabela 3: Aspectos gerais que demonstram algumas similaridades e diferenas, para o Java e o Mono .NET. Autor (2009)

76 6.8.4 Analise conceitual das licenas utilizadas


Comparativo: Licenas de uso, utilizadas pelas tecnologias estudadas Java Mono GPLv2 GPL: GNU Public License, Gnu is not Unix - (GNU), uma licena que pretende garantir sua liberdade de compartilhar e alterar o software livre, sempre com o objetivo de melhor-lo. Esta Licena Pblica Geral aplica-se maioria dos softwares da Free Software Foundation e a qualquer outro programa cujo autor decida aplic-la. Tal fundao, criada em 1984, faz a fiscalizao do uso dos produtos de cdigo aberto e desenvolveu os parmetros que definem o software livre e as quatro liberdades que o caracterizam, que so: * uso pessoal, acadmico ou comercial; * distribuio, que permite fazer cpias e distribu-las; * estudo ou alterao, adequao do software para alguma necessidade especfica; * distribuio das alteraes. Popular no mundo do cdigo aberto, a GPL foi criada em 1989, e revisada para GPLv2 em 1991. De forma implcita a GPLv2 proibi, distribuir software e depois limitar seus usos atravs de patentes nele implementadas em uma restrio adicional. * Library GPL (LGPL): uma variao da licena GPL que permite o desenvolvimento de programas de cdigo aberto que contenham mdulos proprietrios. CDDL MIT x11 Criada pela Sun, uma licena de cdigo aberto Esta licena tambm denominada licena X ou licena que utilizou a Mozilla Public License (MPL) e a X11, foi desenvolvida pelo Massachusetts Institute of tornou reutilizvel sem modificaes, criando uma Technology (MIT). uma licena no copyleft utilizada licena copyleft que fornece protees e liberdade em software livre, que permite a reutilizao de nos ambientes de cdigo aberto e permite a criao software licenciado em programas livres ou de trabalhos mais amplos para objetivos comerciais. proprietrios. Esta licena mantm todas as caractersticas da A permisso concedida, a ttulo gratuito, para MPL e apresenta vrias melhorias, tais como: a qualquer pessoa que obtenha uma cpia deste definio de modificaes para melhor compreenso software e documentaes associadas (o "Software"), da cobertura da licena, detalhes sobre a escolha para tratar com o Software sem restrio, incluindo, da lei, foro e jurisdio. Tambm foi colocada a sem limitao, os direitos para usar, copiar, modificar, opo de tornar o software coberto disponvel sob mesclar, publicar, distribuir, sublicenciar e / ou vender uma licena especifica. cpias do Software. GARANTIAS Abrangido, o software fornecido sob esta licena "como est", sem garantia de qualquer tipo, O software fornecido "como est", sem garantia de expressa ou implcita, incluindo, sem limitaes, qualquer tipo, expressa ou implcitas, incluindo mas garantias de que o coberto software livre de no se limitando s garantias de comercializao, defeitos, comercialmente, de acordo para um adequao a um determinado propsito e no infrao. determinado fim ou no infrao. todo o risco quanto em nenhum caso a detentores autores ou ser qualidade e desempenho do software coberto est responsabilizados por qualquer reivindicao, dano ou com voc. se algum software coberto provar outras responsabilidade, seja em uma ao de defeituoso em qualquer aspecto, voc (no o cumprimento de contrato ou de outra forma, desenvolvedor inicial ou qualquer outro colaborador) decorrentes, fora de ou em conexo com o software assume os custos de qualquer servio necessrio, ou o uso ou outros em negociaes o software. reparo ou correo. esta iseno de garantia constitui uma parte essencial desta licena. A CDDL uma licena de cdigo aberto aprovada MIT x11 uma licena de cdigo aberto aprovada pela pela Open Source Initiative (OSI). Open Source Initiative (OSI).

Tabela 4: Analise comparativa das licenas utilizadas por cada tecnologia. OSI (2009, adaptado)

77 CAPITULO VI 7 CONCLUSO

Conclui se neste trabalho que as tecnologias Java e Mono .NET Framework possui o mesmo objetivo e apresentam certas semelhanas em si. Tanto o Mono .NET quanto o Java, esto disponveis em vrios sistemas operacionais, ou seja, so ambientes multiplataforma, assim um aplicativo desenvolvido sob um determinado sistema operacional poder ser executado sobre outro distinto desde que tenha a maquina virtual disponvel sobre este. Quanto as linguagens de programao Java e C#, estas possuem o paradigma orientado a objeto originado do C++, por este motivo nota se uma certa compatibilidade entre elas. Tendo conhecimento sob uma destas linguagens, seja Java ou C#, j no se torna to complexo o entendimento da outra a ser implementada, o que ira mudar ser apenas a sintaxe do cdigo a qual normatizado pela tecnologia detentora. Outras linguagens so suportadas tanto para plataforma Java e Mono .NET, esta ideia multilinguagem em teoria vem da pioneira Microsoft com a plataforma .NET, oferecendo suporte ao C# (padro), F#, VB.NET, IronRuby, IronPython, Object Pascal, etc. A plataforma Mono herda tambm estas caractersticas. A tecnologia Java em principio apenas suportava o Java (linguagem), hoje este j fornece suporte a linguagem Groovy, JRuby, Jython entre algumas mais que esto por suportar. O que mostra no termo multilinguagem suportado entre as tecnologias estudas, a questo da no influencia da linguagem de programao sob o desempenho do aplicativo, uma vez que compilado, independente da linguagem utilizada gerado um cdigo intermedirio que ser interpretado pelo JIT compiler contido na maquina virtual JVM (Java) ou no CLR (Mono .NET). A questo multilinguagem apenas oferece uma facilidade quanto aos

desenvolvedores vindos de outras linguagens, podendo por um determinado tempo desenvolver com a linguagem que melhor se adqua. Porm mais aconselhvel aprender e desenvolver com as linguagens padres ou nativas da plataforma, ou seja, estas oferecem uma melhor integridade e suporte para com a plataforma.

78 As tecnologias so semelhantes em alguns aspectos como a estrutura da maquina virtual que contm os mesmos conceitos para um cdigo intermedirio sendo que no Java um Bytecode, e no Mono um Intermediate Language. A tecnologia Mono originada da Microsoft .NET, suas caractersticas a que diferem porm no perdendo compatibilidade, ser open source, multiplataforma e tendo integrado outros componentes de terceiros. Um beneficio importante vinculado ao Java e Mono .NET de serem open source, ou seja, serem livres, assim o desenvolvedor poder utilizar estas plataformas sem a necessidade do pagamento dos royalties a empresa detentora. Esta uma grande vantagem nos dias de hoje (2009), e algo que esta cada vez mais se difundindo no mercado de softwares, onde o que se vende o servio e no o produto dependo da licena a ser utilizado. No desenvolvimento de software, ambas as tecnologias disponham de IDE's, capaz de atender o que a plataforma oferece, algumas contenham mais interatividade em seu modo visual enquanto outras menos, porm sua tendncia a cada dia dispor destas novas melhorias conforme novas verses lanadas no mercado. Neste estudo foi utilizado o Netbeans para o Java, por ser de fcil instalao e multiplataforma. Para o Mono .NET utilizou-se o #Develop no Windows e o MonoDevelop no Linux, apesar deste ultimo j estar disponvel em verses de teste para o sistema operacional Windows, ainda possui algumas falhas que impedem a produtividade no desenvolvimento. Utilizou-se destes ambientes por serem open source, possurem uma boa documentao, serem conhecidos na rea de programao e por escolha do Autor, conforme linha de pesquisa. No processo de desenvolvimento de software, a escolha de uma IDE relacionada a plataforma sob a qual sera implementada, vai variar da cultura da equipe de trabalho, ou seja, ser escolhida a que melhor atenda os requisitos para o sistema. Nota-se no trabalho prtico que houve certa vantagem do Java sobre o Mono .NET, no processo de Insero, Alterao e Remoo, tendo quase o dobro de tempo a menos que o Mono quando manipulado aquela quantia "n" de registros, isto nos dois sistemas operacionais comparados. J no processo de Seleo ou listagem no Linux, manteve-se a faixa de tempo entre estas plataformas uma variao minima entre uma e outra no havendo muita diferena. J no Windows, o Mono .NET teve uma forte vantagem em relao ao Java na listagem em modo Console. O que pode verificar neste fato a

79 integrao que se tem entre a tecnologia comparada e o sistema operacional em si. O Windows por ser baseado em .NET tende a ter um melhor desempenho para os aplicativos executados sob a plataforma Mono ou Microsoft .NET ocorrido, apenas no processo de amostragem dos dados. Esta analise quantitativa consistiu em obter resultados atravs da manipulao de registros no Banco de Dados, a ser chegado em parte de uma concluso, para este trabalho, pois vale lembrar, que foi utilizado verses especficas das plataformas no processo de comparao, conforme disponibilizadas pela empresa detentora, (2 semestre de 2009). Por serem tecnologias open source, novas verses contendo melhorias e correes, so disponibilizadas em um curto intervalo de tempo, assim como estes resultados obtidos podero sofrer variaes num futuro prximo. A influencia do banco de dados, persistiu na rede de forma igualitria para ambos aplicativos, e a influencia do desempenho tambm interferiu no modo que o componente de acesso a dados intervia sob o sistema. O gerenciador de banco de dados PostgreSQL, atendeu os requisitos propostos neste processo comparativo. Dos componentes de acesso o JDBC na plataforma Java, em analise terica mais prtico ser modificado para funcionar sob outra base de dados sem sofrer grandes modificaes, pois apenas alterado o driver de conexo com o banco, havendo alguns casos de alterao nas instrues SQL. Enquanto no Mono .NET atravs do NpgSQL, o qual um componente especifico para acesso ao PostgreSQL, no haver esta facilidade, tendo que alm da alterao do componente, a modificao do cdigo fonte. O comparativo se baseou em um aplicativo desenvolvido para ser executado em modo Console, no contendo um visual grfico. Os resultados serviram como parte da base para analise considerativa deste trabalho, em especfico, de maneira geral para esta implementao a ser comparado. Pois existe diversos produtos especficos com funcionamento uma do que a outra em um processo comparativo. H um futuro promissor para estas tecnologias pois as empresas detentoras como a Sun Microsystems (Java) e a Novell (Mono) em conjunto com a comunidade open source, a cada dia, esto implementando novas melhorias e funcionalidades a ser incorporada sob a plataforma. as mesmas finalidades integrados a estas tecnologias que tendem a possuir um melhor como foi o caso

80 Como pode ser observado, cada tecnologia apresenta suas vantagens e desvantagem. Porm isto tratado como uma questo de cultura definida pelo time de desenvolvimento em uma organizao, pois estas tecnologias seguem a mesma tendencia.

7.1 SUGESTO PARA TRABALHOS FUTUROS

Estudos que podem ser vinculados a este trabalho: Usar estes mesmos critrios de analise, desenvolvendo um comparativo quanto ao desenvolvimento para Web utilizando das tecnologias Java e Mono .NET Framework. Desenvolver um estudo sobre dispositivos mveis utilizando se destas plataformas, como tambm analisar o nicho de mercado abrangido sob cada uma. Fazer uma analise de softwares empresariais implementados sob as plataformas Java e Mono. Exemplo de softwares gestores Enterprise Resource Planning (ERP) open source utilizando destas tecnologias: Freedom ERP (Java), Adempiere (Java), Nmwerp(Mono), Nibble ERP (Mono). Estudo aprofundado na segurana dos aplicativos executados sob estas plataformas estudada, seja comparando a questo de aplicativos executados nativamente ou sob maquinas virtuais. Elaborar um comparativo, estudando e analisando Web Services e servidores de componentes vinculado, as tecnologias estudadas.

81 REFERENCIAS

BAGNALL, Brian; CHEN, Philip; GOLDBERG, Stephen. C# for Java Programmers. Rockland : Syngress Publishing, Inc., 2002. BARNABY, Tom. Distributed .NET Programming in C#. New York, NY : Apress, 2002. BEYER, Derek. C# COM+ Programing. New York, NY : M&T Books, 2001. BILL ,Robert W. Jython for Java Programmers. Indianopolis IN : New Riders Publishing. 2001. BINI, Ola. Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to the Java Platform. New York, NY : Apress, 2007. BORNSTEIN Niel M. e DUMBILL Edd, Mono: Developer's Notebook. Sebastopol, CA : O'Reilly Media, Inc., 2004. BRILL, Gregory. CodeNotes for J2EE, JDBC, JSP and Servlets. ed.2. New York, NY : Random House, 2001. BURD, Barry. Beginning with Java for Dummies. ed.2. Indianpolis, IN : Wiley Publishing, 2005. Deitel H. M. e Deitel P. J. / trad. Lisba Carlos Arthur Lang, Java como programar. 4.ed. Porto Alegre, RS : BOOKMAN Companhia Editora, 2003. Dummies, C# 2005 For Dummies. Indianapolis, IN : Wiley Publishing, 2006. ENGEL, Joshua. Programming for the Java Virtual Machine. Boston, MA : Addison Wesley, Pearson Education, Inc., 1999. FERGUSON, Jeff [et al.]. C# Bible. Indianapolis, IN : Wiley Publishing, Inc., 2002. GAMMA, Erich, BECK, Kent. Contributing to Eclipse: Principles, Patterns, and PlugIns. Boston, MA : Addison Wesley, Pearson Education, Inc., 2003. GONZAGA, Jorge Luiz. Dominando o PostgreSQL. Rio de Janeiro : Cincia Moderna, 2007. GOSLING, James e Henry McGilton, White Paper The Java Language Environment: Contents. Sun Microsystems, Inc., 1996. GOSLING, James; JOY, Bill; STEELE, Guy; BRACHA, Gilad. Java Language Specification. ed.3. Santa Clara, California : Addison Wesley Professional, Pearson Education, Inc., 2005. LENZ, Gunther; MOELLER, Thomas. .NET-A Complete Development Cycle. Boston, MA : Addison Wesley, Pearson Education, Inc., 2003. LIBERT, Jesse. Visual C# 2005: A Developer's Notebook. Sebastopol, CA : O'Reilly Media, Inc., 2005. LIBERTY, Jesse. Programming C#, ed.3. Sebastopol, CA : O'Reilly, 2003. LIBERTY, Jesse. Programming C#. ed.2. Sebastopol, CA : O'Reilly Media, Inc., 2002. LIMA, Alexandre Rocha e Marcondes. Mono: .NET Framework. Revista Inform, So Paulo, n. 4, p. 16-26, 2006.

82 MAMONE, Mark. Practical Mono. New York, NY : Apress, 2006. MATTHEW, Neil; STONES, Richard. Beginning Databases with PostgreSQL From Novice to Professional. 2.ed. New York, NY : Apress, 2005. MCLEAN, Scott; NAFTEL, James; WILLIAMS, Kim. Microsoft .NET Remoting, Washington : Microsoft Press, 2002. MEYER, Jon; DOWNING, Troy. Java Virtual Machine. Sebastopol, CA : O'Reilly Associates., 1999. Microsoft Developer Network, MSDN. Biblioteca MSDN, Online. Disponvel em: http://msdn.microsoft.com/pt-br/library/default.aspx. Acesso em: 17 de Maro de 2009. MOK, Heng Ngee. From Java to C#: A Developer's Guide. Boston, MA : Addison Wesley, Pearson Education, Inc., 2003. MOREIRA, Rodrigo e BOTTCHER, Eduardo. Acesso a dados com C#. Revista Inform, So Paulo, n. 1, p. 12-16, 2005. NANTZ, Brian. Open Source .NET Development. Boston, MA : Prentice Hall PTR, 2004 PARGA, Danielle Fernandes. Introduo a Java Parte 1. Revista Inform, So Paulo, n. 1, p. 30-37, out. 2005. OSI, Open Source Initiative. GPL, MPL, CDDL, MIT. Online. Disponvel em: http://www.opensource.org. Acesso em: 10 de Novembro de 2009. PUVVALA, Jawahar; POTA, Alok. .NET for Java Developers: Migrating to C#. Boston, MA: Addison Wesley, Pearson Education, Inc., 2003. RAMMER, Ingo. Advanced .NET Remoting. New York, NY : Apress, 2002. RODRIGUES, Laercio Guero. Garbage Collector, Gerenciando recursos de memria. Revista Inform, So Paulo, n. 4, p. 10-11, 2006. SIMMONS, Robert. Hardcore Java. Sebastopol, CA : O'Reilly Media, Inc., 2004. SOARES, Marcos. Fundamentos do Framework .NET. Revista Inform, So Paulo, n. 1, p. 6-9, out. 2005. Sun Microsystems, Inc., Java Technology: The Early Years. Online. Disponvel em: http://java.sun.com/features/1998/05/birthday.html. Acesso em: 15 de Maro de 2009. Sun Microsystems, Inc., JavaTM 2 SDK, Standard Edition - Documentation. Online. Disponvel em: http://java.sun.com/j2se/1.4.2/docs/index.html. Acesso em: 17 de Maro de 2009. Sun Microsystems, Inc., The Java Language Environment: Contents. Online. Disponvel em: http://java.sun.com/docs/white/langenv/index.html. Acesso em: 15 de Maro de 2009. SYME, Don; GRANICZ, Adam e CISTERNINO, Antonio. Expert F#. New York, NY : Apress, 2007. THOMAS, Todd M. Java Data Access JDBC, JNDI, and JAXP. New York, NY : M&T Books, 2002. TROELSEN, Andrew. C# and the .NET Platform. New York, NY : Apress, 2001. VENNERS, Bill. Inside the Java Virtual Machine. Sunnyvale, California : McGraw-Hill Companies, Inc., 1997.

83 WATSON, Karli [et al.]. Beginning Visual C# 2005. Indianapolis, IN : Wiley Publishing, Inc., 2006. WESLEY, Addison. .NET Complete Development Cycle. Boston, MA : Pearson Education, Inc., 2003. WESLEY, Addison. .NET for Java developers migrating to C#. Boston, MA : Pearson Education, Inc., 2004. ZUKOWSKI, John. Java 6 Platform Revealed. New York, NY : Apress, 2006.

84 APNDICE A

Algoritmo exemplo C#

Algoritmo exemplo Java

85 Algoritmo JAVA demonstrando um lao de repetio e gravao em arquivo

86 Algoritmo C# demonstrando um lao de repetio e gravao em arquivo

87 APNDICE B Cdigo fonte do aplicativo utilizando um CRUD no acesso a dados Cdigo fonte da tabela utilizada no comparativo

Figura 14: Script SQL da tabela, utilizado no comparativo. Autor (2009)

Dados inseridos na tabela

Figura 15: Dados inseridos no banco. Autor (2009)

Cdigo fonte: Projeto. CRUD-Java-Java-JDBC JAVA ... Cdigo fonte: Projeto. CRUD-Mono-CSharp-NpgSQL Mono .NET Framework ...

88 APNDICE C - Disponibilidade da Documentao, Plataforma, IDE's e o Banco de Dados utilizado.

Plataformas Plataforma Mono .NET Framework, disponvel em: http://www.Mono-project.com Plataforma Java, disponvel em: http://java.sun.com/

IDE's Visual Studio, disponvel em: http://msdn.microsoft.com/pt-br/vstudio/default.aspx Delhi Prism, disponvel em: http://www.embarcadero.com/products/delphi-prism MonoDevelop, disponvel em: http://monodevelop.com SharpDevelop, disponvel: http://www.icsharpcode.net Eclipse, disponvel em: http://www.eclipse.org Netbeans, disponvel: http://www.netbeans.org

Banco de Dados

PostgreSQL: http://www.postgresql.org

89 APNDICE D Ambientes de Desenvolvimento utilizados na Implementao dos Aplicativos, Logomarca das plataformas comparada e Tela das aplicaes.

Figura 16: Tela Principal. Netbeans 6.7 (Win32), sob outro sistema operacional sua interface a mesma. Autor (2009)

Figura 17: Splash NetBeans 6.7.1. Autor (2009)

90

Figura 18: Tela Principal. SharpDevelop 3.1 (Win32). Autor (2009)

Figura 19: Splash SharpDevelop 3.1. Autor (2009)

91

Figura 20: Tela Principal. MonoDevelop 2.0, Linux. Autor (2009)

Figura 21: Splash MonoDevelop 2.0. Autor (2009)

92

Figura 22: Logomarca: Java. Sun (2009)

Figura 23: Logomarca: Mono. Mono (2009)

93

Figura 24: Aplicativo Java, sendo executado sobre o Console do Windows (MS-DOS). No Linux foi executado sob o console gnome-terminal. Os resultados quanto ao tempo eram gravados para um arquivo de texto. Autor (2009)

Figura 25: Aplicativo Mono .NET, sendo executado sobre o Console do Windows (MSDOS). No Linux foi executado sob o console gnome-terminal. Os resultados quanto ao tempo eram gravados para um arquivo de texto. Autor(2009)

Você também pode gostar