sábado, julho 01, 2006

Pesquisa para um novo projeto – Parte II

Bom, continuando as pesquisas para o novo projeto, continuo falando com diversas pessoas e pesquisando. A decisão sobre que tipo de banco de dados suportar já está tomada, a primeira versão irá dar suporte para Firebird, Microsoft SQL Server e ORACLE, em uma futura versão vamos dar suporte para IBM DB2.

Porquê não inserir suporte ao IBM DB2 já nesta versão? Afinal, como diz o velho ditado (ou o velho deitado): já que estamos no inferno, não custa nada dançar uma valsa com o capeta né?
Bem, a principal questão é que já temos versões instaladas do Firebird, ORACLE a versão express e o MSDE, e já temos um domínio desses bancos de dados, o IBM DB2 eu sei que é muito bom e rápido, mas sinceramente não faço nem idéia de como criar ou manter uma tabela. Então vamos fazer a primeira versão sem tentar complicar muito a história, depois da primeira versão pronta, teremos tempo para aprender a mexer no DB2.

Existe também a questão comercial, em termos de marketing, o suporte ao ORACLE e ao SQL Server são significativos, representam uma importante característica para o mercado.

Agora a decisão sobre a camada de servidor que irá fazer a ponte entre o banco de dados e a interface com o usuário, a camada que irá conter as regras de negócio, é o próximo passo.

As opções representativas para mim ainda são Java, .Net ou Delphi, este último com preferência para uso do RemObjects.

Alguns me falaram do Lazarus, o Free Pascal com versão para Linux e Windows, mas com sinceridade não é uma opção que eu considere seriamente. Pense bem, pretendemos uma aplicação que possa ser vendida em nível mundial, que possa se integrar com aplicativos de ERP conhecidos no mercado, para empresas de todos os portes, com suporte multilingua, que possa ser customizado pela equipe de TI do cliente, ou por parceiros, apelo de marketing, que tenha evolução garantida.
O que o uso do Lazarus poderia agregar de valor ao projeto? Sem desprezar a ferramenta que, diga-se de passagem, é muito boa. Mas no caso de optar por linguagem Pascal, ou Object Pascal, a escolha seria naturalmente o Delphi, em comparação com o Lazarus, só perde no preço e na disponibilidade para Linux, mas ganha com uma vantagem imensa em termos de suporte, disponibilidade de componentes, tecnologias, evolução, maturidade, estabilidade, disponibilidade de serviços e profissionais que dominam a ferramenta.
O Lazarus é uma excelente ferramenta, mas ainda está no inicio de seu ciclo de vida, dentro de 1 ou 2 anos será uma ferramenta que deverá ser seriamente considerada, mas ainda não chegou lá.

Analisando as opções da camada servidor:

.NET

A tecnologia da Microsoft é madura, bem posicionada no mercado, mas não me encanta por algumas razões.
- Foi desenvolvida como uma indecisão da Microsoft, que queria barrar o avanço do Java na sua briga com a Sun, é uma tentativa de fazer com que o Windows se torne o padrão de sistema operacional de servidor para aplicativos Web.
- É pesado, e bota pesado nisso, o framework é imenso, existe uma divisão debulosa entre os objetos, componentes, rotinas, etc. As ferramentas que suportam desenvolvimento para .NET são uma carroça de tão pesadas e lentas, é um paquiderme com câimbras, algo que definitivamente que deixa muito desconfortável.
- Até quando a Microsoft vai continuar no .NET? Ela já mudou tanto de proposta de tecnologia que é de se perguntar: Qual será a próxima onda? Não há uma consistência, um caminho claro e seguro do que a Microsoft pretende fazer para o futuro.
Tradicionalmente a turma do tio Bill garante que a tecnologia é a definitiva, até eles pensarem a próxima sacada de marketing, quanto então mudam tudo e a nova tecnologia passa a ser o novo Santo Graal do desenvolvimento.
Tenho visto a Microsoft usar tão pouco a sua própria tecnologia, que me pergunto se seria prudente apostar em .NET.
- Só roda em Windows e pronto. Isso é um ponto negativo bem forte a se considerar, com o uso crescente de Unix e Linux nos servidores, desprezar estes SO não é uma prática muito recomendável.

Quanto ao Linux, uma observação interessante:
Quando começou a onda do Linux, eu já comentava que era algo a se considerar apenas no futuro, quem estava migrando para Linux não tinha representatividade no mercado. Eram instituições de ensino ou pesquisa, ou então pequenas e micro empresas em busca de economizar uns trocados em licenciamento de servidor. Ou seja, um mercado para o qual não valia a pena fazer investimentos, cujo retorno era insignificante. Só valeria investir nesse mercado se você tivesse grana suficiente para suportar alguns anos de desenvolvimento com nenhum ou muito pouco retorno financeiro, até que o mercado ficasse maduro suficiente para compensar o que se investiu.
Eu trabalhei muitos anos com servidores Unix, e para mim a grande vantagem do Linux sempre foi o mesmo que eu sempre considerei no Unix: estabilidade, escalabilidade, confiabilidade, mas o que o mercado via era somente o custo de licenciamento.
Bem, felizmente parece que as coisas mudaram, tenho visto muitas empresas, inclusive de grande porte, migrarem soluções de servidor para Linux, não por preço, mas pelas razões que mencionei para o Unix, até por que no final das contas o Linux pode sair até mais caro do que o Windows, o que geralmente ocorre, pois você começa a explorar e a usar muito mais recursos que estarão disponíveis no servidor, começa a visualizar opções muito mais sofisticadas e interessantes, e vai investir muito mais dinheiro no final, claro que também vai ter muito mais retorno, vai receber mais pelo seu dinheiro.

Delphi

Seria a opção natural, pois é a nossa ferramenta nativa de desenvolvimento para soluções desenvolvidas pela Spectrus. Como trabalhamos também como fábrica de software, outras soluções como .NET, C/C++ também são confortáveis para nós, pois muitas vezes o projeto para o cliente exige que se desenvolva em uma tecnologia que a equipe de TI domine.
O Delphi seria uma opção fácil de implementar, é uma ferramenta poderosa, com tecnologias maduras e consistentes, em constante evolução, com uma comunidade de desenvolvedores imensa (um grande número de malucos, o que é bom!), a oferta de componentes, códigos, e suporte é imensa, talvez a ferramenta com maior suporte na atualidade. Sem falar que é uma linguagem orientada a objetos de fato, fácil de implementar e usar.
As desvantagens:
Roda apenas em Windows;
O licenciamento é caro, se você for colocar uma equipe com 5 ou 6 desenvolvedores vai precisar de uma licença para cada um, considerando que para este projeto será necessário a versão Enterprise ou Architect, o investimento vai ser bem caro, antes do produto dar resultado.
A última versão rápida e confiável é a 7, o Delphi 8 foi um fiasco, a 2005 uma tragédia, a 2006 parece que melhorou, mas só se comparada com o Delphi 8 ou 2005, e a Borland ainda tem a cara de pau de apresentar algumas vantagens do Delphi 2006, omitindo que isso já tinha na versão 7 e desapareceu nas posteriores. A 2006 ainda está muito longe de ser a ferramenta fantástica que o Delphi 7 é, parece que a Borland está sofrendo da síndrome de espelhamento com a Microsoft, acham que basta ir acrescentando penduricalhos na ferramenta para dizer que é evolução, e deixam prá lá questões como performance e estabilidade.
A última versão que valeu a pena a grana do licenciamento foi a Delphi 7, grande parte do que foi acrescentado pela Borland de lá para cá, e que ela cobra uma boa grana por isso, pode ser conseguido com AddOns e componentes para o Delphi 7.

Java

Eis aqui uma opção bem interessante apesar, como já escrevi em outro post, do peso absurdo das ferramentas da Sun. Mas o JDK (o Java Develpment Kit) da Sun é bem razoável em termos de desempenho.
Estou experimentando diversas ferramentas de desenvolvimento: Sun JavaStudio Creator, Sun JavaStudio Enterprise, NetBeans, Eclipse e Oracle JDeveloper, e até um modesto TextPad.
Gostei no nível de facilidades e ferramentas disponíveis no Sun JavaStudio Creator, podemos dizer que é praticamente uma ferramenta RAD para desenvolvimento em Java, porém o peso da ferramenta é absurdo, simplesmente derruba a máquina, tornando inviável o seu uso.
O Sun JavaStudio Enterprise é outra ferramenta fantátisca, que também sofre dos mesmos males do JavaStudio Creator, um peso absurdo.
Mas ambas as ferramentas da Sun têm a vantagem de ter uma gama de recursos fantástica.
As 3 IDES mais interessantes, sem um peso absurdo, que eu experimentei: NetBeans, Eclipse e Oracle JDeveloper.
Se você for desenvolver em Java aplicativos stand alone, considere seriamente o uso do NetBeans, tem uma IDE excelente, recursos muito bons, e o GUI Builder dele não fica devendo nada à outras ferramentas RAD.
O ORACLE JDeveloper vai bem no desenvolvimento tanto no lado servidor quanto no cliente, é uma ferramenta também excelente para o desenvolvimento, considere seriamente, pois tem performance bem melhor do que as ferramentas da Sun.

Já faz alguns anos que você pode contar com artigos sobre Java em qualquer revista de programação, tem sido uma das soluções mais badaladas nos últimos tempos. E com justiça, se bem que eu não desenvolveria em Java uma aplicação Desktop (por enquanto), para isto usaria Delphi sem sombra de dúvidas.
A linguagem é fortemente tipada, e totalmente orientada a objetos, mais até do C++.
Tem uma comunidade de desenvolvedores tão grande e ativa quanto o pessoal de Delphi, roda em uma infinidade de arquiteturas de hardware/software, sem o ônus de alterações no código fonte para suportar outro sistema operacional ou arquitetura de hardware.
Os custos de licenciamento são zero.

As desvantagens é que é lenta para a carga inicial, pois o que é gerado é um pseudo código, e um código nativo compilado e linkado, como o Delphi, irá rodar com uma performance bem superior.
O treinamento para os desenvolvedores é um pouco mais dispendioso e trabalhoso, não é fácil fazer alguns desenvolvedores que vêm do VB, ou que aprenderam Delphi nos cursinhos meia boca da vida (que só ensinam a usar a linguagem em meio procedural, muito pouco OOP), a aprenderem a tecnologia.
A curva de aprendizagem para os novatos é bem mais áspera e íngreme, e não há atalhos.
O JRE (Java Runtime Environment) é um kit de tamanho considerável para ser instalado nas máquinas destino, se bem que isto não é desvantagem num produto como este, pois vai como parte da instalação padrão do aplicativo.


O Junior, lá de RO tem me falado muito de Ruby, e ele já me mandou algumas dicas muito boas sobre outras tecnologias, passei a usar o DBISAM para os produtos de prateleira por causa do (excelente) trabalho que ele faz de divulgação da tecnologia. Por causa da recomendação estou analisando o Ruby, principalmente com a IDE Ruby On Rails, que parece ser bem interessante. Vamos ver o que essa tecnologia promete.

Vou parando por aqui por hoje, o Brasil perdeu prá França, coisa já esperada com essa turma do Parreira, a turma do Quadrado Trágico, turma mesmo por que time nunca teve, é uma turma de grandes estrelas, mas eu preferia um time, que soubesse jogar junto, que tivesse pegada, honra, brios... O Dunga faz falta, pelo menos ele chamava os companheiros na cincha, e cobrava responsabilidade, esta turma de bundões não tem brios, não tem nem sequer garra. Agora é torcer pelo Felipão, ou Big Phil como dizem os ingleses.