confronto tecnológico entre java e mono (.net framework)

Upload: daniel-schroeder

Post on 07-Jul-2015

372 views

Category:

Documents


0 download

DESCRIPTION

Confronto tecnológico entre Java e Mono (.NET Framework)Autor: Daniel Schroeder

TRANSCRIPT

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