Java & .NET
Eu estava revendo meu arquivo de documentos e encontrei um artigo que escrevi para a revista Fórum Access em março de 2005, falando sobre um dilema comum a muitos desenvolvedores: “qual é a melhor opção, Java ou .NET?” Bem, gostaria de compartilhar esse artigo com vocês. Veja abaixo a íntegra do referido artigo
Java e .NET: dois lados da mesma moeda?
Desde que comecei a me envolver com a Informática, algo sempre me deixou curioso: ver como certas pessoas se envolviam em intermináveis discussões sobre quais seriam as melhores ferramentas de desenvolvimento. Ainda posso me lembrar das brigas entre os programadores de dBASE e os de Clipper, mais tarde repetida pelos programadores de Access e Visual Basic. Por falar em Visual Basic, quando entrei no colégio técnico, as comparações começaram em torno dele. “O Delphi é melhor que o VB”, ou então “o Visual C++ é para programadores de verdade; VB é para crianças”. Peça a qualquer desenvolvedor e ele vai lhe contar casos semelhantes. Como num encontro de torcedores de times de futebol rivais, sempre há alguém “puxando a sardinha” para o lado da sua ferramenta preferida. Com o advento da plataforma .NET não podia ser diferente. A Microsoft finalmente conseguiu, com seu moderno modelo de desenvolvimento, ameaçar o então inabalável Java em seu reduto, o desenvolvimento de aplicações para a Internet. “E daí”, você pode se perguntar, “o que eu tenho a ver com tudo isso?”. Bem, se você tira seu sustento do desenvolvimento de sistemas, este é um assunto do seu interesse.
Especialista ou generalista?
Um dilema que sempre atormentou a nós, profissionais de Informática, é decidir o quanto devemos nos manter atualizados, sem exageros. Sabemos que as novidades em nossa área vêm em velocidade vertiginosa, e que é humanamente impossível mantermo-nos a par de tudo que é lançado. Junte-se a isso a preferência por essa ou aquela tecnologia, e acabamos optando por nos especializar em umas poucas ferramentas. Essa especialização faz com que muitas pessoas, por vezes incertas de terem optado pelo rumo correto, digam repetidamente a todos que “a linguagem ABC é muito melhor que a XYZ”, como se estivessem tentando se(Convencer a si próprias disso?/ convencer a elas mesmas?) convencer disso. Por conta dessa tendência de especialização, há quem diga que nossa área começa a sofrer de um problema que já vem preocupando aos profissionais da Medicina: está desaparecendo o “clínico-geral”. Muitos médicos recém-formados, de olho em modismos ou na busca por áreas mais rentáveis, acabam se especializando excessivamente. Com isso, depois de um tempo, tornam-se incapazes de diagnosticar um simples resfriado. Da mesma forma que um clínico-geral tem um papel fundamental na Medicina, por ser ele quem tem o primeiro contato com o paciente, ajudando-o inclusive a identificar qual especialista deve ser procurado, assim é o profissional generalista: com uma visão mais ampla do mercado, ele consegue fornecer orientações mais lúcidas, imparciais e precisas a seus clientes.
“Não ponha todos os ovos na mesma cesta”
Isso não quer dizer que não deve haver especialistas. Porém, um grau muito alto de especialização pode ser perigoso num mercado tão dinâmico como o de Informática. Os leitores com mais de trinta anos – e com pelo menos quinze anos no desenvolvimento de sistemas – certamente se lembrarão do Clipper, e do quanto ele foi relevante. Se você dissesse a qualquer analista de sistemas, há quinze anos atrás, que o Clipper estava fadado a morrer em pouco tempo, provavelmente ele iria rir de você. A vasta maioria de todos os aplicativos comerciais da época era baseado na linguagem de programação derivada do venerável dBASE. Entretanto, em maio de 1990, foi lançado um produto que iria mudar o mundo: O Windows 3.0. Com sua interface gráfica e a habilidade de aproveitar melhor a memória do micro (veja quadro), abriu um novo horizonte de possibilidades. A partir daí, e com o constante avanço do hardware, os clientes passaram a exigir programas que rodassem nesse novo ambiente, praticamente sepultando o outrora inabalável Clipper. Ninguém teria previsto tal acontecimento. Provavelmente, muitos especialistas em Clipper não conseguiram se ajustar às mudanças, e eventualmente tiveram problemas, até mesmo financeiros, durante a transição. Por outro lado, os “clínicos-gerais” da Informática, com sua abordagem mais generalista, adaptaram-se mais rapidamente à nova realidade do mercado, lucrando muito com isso.
A revolução chamada Windows
_Enquanto no Brasil ainda se conhecia apenas o MS-DOS (e a versão mais popular ainda era a 3.3) no quartel-general da Microsoft, em Redmond, uma revolução acontecia silenciosamente. A Microsoft estava colocando todos os seus esforços de desenvolvimento no OS/2 1.1, um projeto em parceria com a IBM para criar o “sistema operacional do futuro”, capaz de substituir o DOS. _
_A versão mais recente do Windows era a 2.0. Ainda muito primitiva, era incapaz de rodar programas DOS, além de estar limitada pela barreira de 640Kbytes da memória convencional, o que impedia a criação de programas avançados. _
_Quem virou o jogo, abrindo o caminho para a Informática como a conhecemos hoje, foi David Weise, ex-integrante da equipe de desenvolvimento do Windows, criador da técnica que permitiu ao Windows executar aplicações em modo protegido (um recurso dos processadores que permite a utilização de toda a memória do micro), virtualmente eliminando a barreira dos 640K. Tudo isso feito sem que ninguém soubesse, como se fosse um pet project – um projeto de estimação, feito nas horas vagas. Só aí foi apresentado a Steve Ballmer o que viria a ser o Windows 3.0, e o resto é história. O Windows 3.0 foi um dos lançamentos mais bem-sucedidos do mercado de software, vendendo mais de dez milhões de cópias num mês. _
Não tente abraçar o mundo
Será que é possível conciliar as duas coisas? Quer dizer, como ser generalista, conhecendo um pouco de cada ferramenta, e ainda assim ser bom o bastante no que se faz, se destacando num mercado tão competitivo? O fato é que não existem fórmulas mágicas. Cabe a você, leitor, achar seu próprio ponto de equilíbrio. Uma dica é tentar achar um denominador comum, alguma convergência entre as diferentes tecnologias. Um exemplo bem típico é a programação orientada a objetos. Sabemos que há inúmeras linguagens orientadas a objetos – desde o VB até o Java, passando pelo C++, C# e o Delphi, dentre outras – completamente distintas entre si, mas os princípios básicos, tais como herança, polimorfismo, classes, objetos etc. são exatamente os mesmos. Assim, se você for muito bom na análise e programação orientadas a objeto seu handicap é muito maior, pois pode aprender uma nova linguagem de programação em questão de dias. Bastará aprender a nomenclatura dos comandos. Uma outra habilidade muito valorizada no profissional é a capacidade de ver o processo em que está envolvido como um todo, não apenas a parte pela qual é responsável. Estar a par do negócio de sua empresa permite perceber no mercado novas técnicas, que podem ser aplicadas em seu dia-a-dia. Essa visão mais aberta, com o tempo, permitirá identificar novas tendências de mercado, dando-lhe uma grande vantagem estratégica: a agilidade para se adaptar.
Empregabilidade é tudo
Em meu último emprego, numa companhia de seguros, trabalhei inicialmente com Visual Basic 6.0, desenvolvendo sistemas desktop para os clientes internos (aplicações de suporte ao negócio para os diferentes departamentos) e externos (kits de cálculo para os corretores de seguros). Na época ainda não tínhamos uma Intranet, e o website era bastante precário. Apesar de eu ter um excelente domínio da linguagem, que poderia me permitir certa acomodação (“faço apenas o que pedirem, nada além disso”), eu não estava satisfeito. Sentia que o futuro era a Internet e, portanto, deveria me aprofundar mais num campo do qual tinha apenas noções básicas: o desenvolvimento de aplicações Web. A Microsoft estava, então, trabalhando a todo o vapor no .NET, e resolvi apostar minhas fichas na nova versão do ASP. Depois de muita insistência com a minha chefia, consegui autorização para desenvolver a nova Intranet em VB.NET. O problema é que eu não tinha a menor noção de por onde começar, já que o novo Visual Studio ainda estava no beta 1, e sua documentação era escassa. Além disso, o modelo de desenvolvimento era completamente diferente daquele que eu conhecia. Apesar de tudo, com muita perseverança, consegui colocar a Intranet no ar! O resultado foi tão bom que a equipe começou a ser treinada para portar as aplicações desktop internas para o novo ambiente, de modo a centralizar o acesso e simplificar a manutenção e suporte. Tudo estava indo muito bem, até que num belo dia meu chefe disse “eu tenho estudado o Java há algum tempo, e acho que pode ser uma alternativa interessante para a empresa. Vamos passar a Intranet toda para Java?” Não preciso dizer o quanto essa pergunta me tirou do sério. Depois de todo o esforço que foi aprender a programar em ASP.NET sem nenhum tipo de apoio, depois de todo o tempo despendido na codificação das aplicações, ele me diz na maior naturalidade que quer que eu jogue meu serviço no lixo e recomece do zero? “Bom, tudo bem. Só que eu não sei programar em Java”, eu disse. “Onde vamos fazer o curso?” “Curso? Não, não tem curso. Pega este livro aqui e vai lendo. Se tiver alguma dúvida, me pergunta.” Na hora fiquei revoltado. Mas devo admitir que foi uma das melhores coisas que me aconteceram, profissionalmente falando. Programar em Java ampliou meus horizontes, me deu uma bagagem que eu não tinha. Foi aí que percebi que ser generalista poderia ampliar ainda mais minha empregabilidade. Durante o aprendizado do Java, vi que poderia trabalhar em projetos com qualquer linguagem orientada a objetos, tanto para desktop quanto para a Web. VB 6, VB.NET, C#, Java, tanto faz. Lembre-se, ache o denominador comum – a orientação a objetos, a análise de sistemas – que programar torna-se apenas uma questão de sintaxe.
_O mundo dos objetos _
_A diferença entre as diferentes linguagens orientadas a objeto são bastante sutis. Veja alguns exemplos de um típico “Alô mundo” em diferentes linguagens de programação. _ _VB.NET _
1
<em>Imports System Namespace MeuProjeto Public Class MainClass Public Shared Sub Main(Args() As String) Console.WriteLine("Alô mundo!") End Sub End Class End Namespace </em>
_C# _
1
<em>using System; namespace MeuProjeto { public class MainClass { public static void Main(string[] args) Console.WriteLine("Alô mundo!"); } } } </em>
_Java _
1
<em>package MeuProjeto; imports java.lang.*; public class MainClass { public static void main(String[] args) System.out.println("Alô mundo!"); } } </em>
_E aqui um exemplo de uma classe típica, com herança e implementação de interfaces: _ _VB.NET _
1
<em>Imports System Namespace MeuProjeto Public Class MinhaClasse Inherits ClasseAncestral Implements IMinhaInterface Public Sub MeuMétodo(Parâmetros() As Object) For i As Integer = 0 To Parâmetros.Length – 1 Console.WriteLine(Parâmetros(i)) Next End Sub End Class End Namespace </em>
_C# _
1
<em>using System; namespace MeuProjeto { public class MinhaClasse: ClasseAncestral, IMinhaInterface { public void MeuMétodo(object[] Parâmetros) for(int i = 0; i < Parâmetros.Length; i++) { Console.WriteLine(Parâmetros[i]); } } } } </em>
_Java _
1
<em>package MeuProjeto; import java.lang.*; public class MinhaClasse extends ClasseAncestral implements MinhaInterface { public void MeuMétodo(Object[] Parâmetros) { for(int i = 0; i < Parâmetros.length; i++) { System.out.println(Parâmetros[i]); } } } </em>
Software livre
Java e C# são muito semelhantes, e não por acaso. Quem conhece uma linguagem facilmente aprende a outra. Ambas têm suas qualidades e defeitos, mas por enquanto o Java tem uma vantagem difícil de ser batida: é mais maduro. Como está disponível há mais tempo, pôde ser mais aprimorado. Além disso, foi abraçado pela comunidade do software livre, que é responsável por alguns dos melhores softwares do mundo. O C# caminha na mesma direção, uma vez que ele também é um padrão aberto. Uma coisa é certa: envolva-se com a comunidade do software livre. Você só tem a ganhar com isso. Além de ter acesso a várias ferramentas de alta qualidade e totalmente livres para uso, você conhecerá gente competente do mundo inteiro, podendo aumentar em muito seu nível de conhecimento. Impossível falar de software livre e não lembrar do Linux, né? Certamente muitos dos leitores se perguntam: Windows ou Linux? Em qual devo investir? Os dois são excelentes produtos, e podem se complementar. Estude-os de maneira imparcial e procure tirar o maior proveito de cada um deles.
Conclusão
A verdade é que só você pode decidir qual o caminho certo. Ferramentas como Java e C# podem ser concorrentes ferrenhos, e você pode querer optar por um dos lados. Ou então eles podem ser apenas formas diferentes de resolver o mesmo problema – e você estará livre para usar qualquer um dos dois a qualquer momento. Lembre-se apenas que quanto mais abertos estiverem seus olhos, mais difícil será cair num buraco pelo caminho.
28/12/2006 | Por Igor Abade V. Leite | Em Pessoal | Tempo de leitura: 10 mins.