quarta-feira, março 04, 2009

Migrando o desenvolvimento de aplicações para o mundo do software livre – Parte I

Entendendo as peculiaridades dos sistemas

Para quem está acostumado a desenvolver aplicações em ambiente Windows, mudar para sistemas de código livre, como o Linux, geralmente tende a ser uma barreira difícil de ser superada. O motivo principal de tal resistência remete à forma como o desenvolvimento de sistemas evoluiu ao passar dos anos em cada S.O e principalmente na forma como foram concebidos os principais IDEs (Integrated Development Environments) utilizadas.

O Turbo Pascal desenvolvido pela Borland que unia em uma única interface orientada a menus um editor de programas, um compilador e um depurador foi o grande pioneiro da IDE para DOS, entretanto programar para o sistema da Microsoft não era nada fácil. Algumas limitações daquele S.O incluíam: Limite de 640KiB de RAM, modelo de memória segmentado do 8086, aritmética de 16bits, ausência de mecanismos de proteção de memória, systemcalls primitivas e a falta de bibliotecas padronizadas.

Com a saída do Windows 3.0, novos recursos de desenvolvimento foram incluídos de modo a tornar o sistema mais atrativo aos usuários e desenvolvedores, com novas systemcallse conjuntos de bibliotecas para gráficos, multimídia e impressão. Além disso, surgiu o Visual Basic, um novo IDE que incorporou bibliotecas de níveis mais altos e a possibilidade de se desenhar formulários interativos visualmente, o que ajudou na automatização da geração de código de interface.

Foi então que a Microsoft utilizando um padrão bastante conhecido do mundo Linux, o Micro-Kernel, Arquitetura baseada em camadas e orientação a objetos conseguiu construir uma arquitetura de S.O inteiramente novo e não mais apenas uma simples extensão do DOS. Isso decorreu em vantagens significativas tais como a possibilidade de se executar aplicações escritas primariamente para outro sistema operacional e uma melhor gerência de memória, só para citar algumas. Ao mesmo tempo, com o aumento no número de systemcalls e a popularização dos IDE se fez necessário a criação de mecanismos que facilitassem a construção de novos componentes e a Microsoft respondeu com os OLE Controls (OCX), módulos de software que se baseiam nas tecnologias OLE e COM que, quando chamados por uma aplicação, produzem controles que acrescentam algum recurso interessante à aplicação. Apesar de representar um marco no reuso de componentes, abriu margem para diversos problemas de segurança, conhecidos largamente como DLL hell.

Tal problema fez com que cada ferramenta fornecesse suas próprias bibliotecas e incompatibilidades surgissem entre diversas versões de um mesmo IDE. Assim, as ferramentas de desenvolvimento tornaram-se de certo modo “inchadas” por incorporar todas as características dos programas e de tecnologias necessárias, além de ter que executar todas as tarefas e integrar os componentes do programa.

Em contraponto, o desenvolvimento em Unix, bem como do próprio kernell do S.O era realizada em C, logo possuíam vantagem de serem bem mais amigáveis aos programadores que o assembler usado no Windows, além de que era possível criar aplicações sem construtores visuais de formulários devido ao fato das bibliotecas gráficas não serem de baixo nível. Entretanto, o Linux teve como demanda inicial principalmente os ambientes multiusuários e servidores de rede, onde para este último a confiança das rotinas das bibliotecas e ferramentas de apoio importavam mais do que a criação de IDEs gráficas, além disso, a necessidade de suportar diversas plataformas de hardware dificultavam a construção de ferramentas visuais.

Somente com a união entre Linux e GNU, o S.O livre obteve acesso a uma porção de ferramentas de desenvolvimento como editores, compiladores, depuradores. Foi o inicio da popularização do Linux entre os usuários finais, um fenômeno que trouxe como benefício direto uma gradual melhora na usabilidade do S.O e o provimento de um sem número de aplicações, através do trabalho de dedicadas comunidades de desenvolvedores.

Entretanto as IDEs disponíveis para Linux em geral seguem um conjunto de características similares que os distinguem do padrão encontrado no Windows. Primeiramente, os recursos necessários à construção de aplicações (bibliotecas, componentes, etc) são fornecidos pelo S.O, logo, as ferramentas de desenvolvimento tendem a ser mais leves que as encontradas no sistema proprietário. Além disso, os IDEs não englobam todas as tarefas do processo de desenvolvimento, elas atuam mais como ponto de integração entre diversas aplicações e tecnologias de terceiros e a performance das aplicações está condicionadas às próprias aplicações e não ao sistema e normalmente são bem leves e rápidas.

Por fim, nesse texto espero que tenham entendido um pouco de como decorreu a evolução do desenvolvimento de sistemas usando IDEs entre os S.Os Windows e Linux, bem como um pouco das peculiaridades de cada sistema e como elas interferiram na arquitetura dos atuais ambientes de desenvolvimento que temos à nossa disposição hoje em dia.

No próximo post, abordarei as principais dificuldades encontradas no processo de migração de um desenvolvedor Windows para o ambiente livre.

Até Mais!

Para saber mais:
Meio bit
http://pt.wikipedia.org/wiki/Windows_NT
http://www.netpedia.com.br/MostraTermo.php?TermID=4761
Por Janio N. Lima


0 comentários:

Related Posts Plugin for WordPress, Blogger...