terça-feira, novembro 30, 2010

A Vida do Desenvolvedor Windows CE Continua Dura

Retomando o assunto de um post anterior, a situação do desenvolvemos para Windows CE continua complicada.

No ponto que eu tinha parado, no Visual Studio 2005 SP1, as coisas pareciam estar melhorando. Com o VS2005 Standard, você tinha duas opções para desenvolver para o CE: código nativo em C/C++ ou código gerenciado com o Compact .Net Framework, programando em C# ou VB.Net.

No Visual Studio 2008, uma pequena alteração: o desenvolvimento para "Smart Devices" deixou de ser suportado na versão Standard, era preciso comprar a versão Profe$$ional.

Com a ascensão do iPhone e Android, a participação no mercado dos smartphones baseados no CE vem despencando. A reação da Microsoft foi criar algo "diferente", o Windows Phone. E com isto está deixando órfãos os desenvolvedores para o Windows CE: o Visual Studio 2010 não suporta o desenvolvimento para os "Smart Devices", tanto nativo como gerenciado.

Por aqui a maioria das aplicações estão em C e estamos prevendo uma vida longa para o VS2008. Provavelmente não vamos fazer mais experiências com o Compact Framework que, apesar de negativas de pessoas isoladas da Microsoft, claramente está andando de bicicleta no telhado.

Um lembrete para a Microsoft: no mercado de coletores de dados, onde Windows CE tem sido o padrão desde a virado do milênio, a líder é uma divisão da Motorola. E a Motorola parece já ter adotado uma alternativa ao CE na divisão de celulares. E eu já estou estudando Java...

3 comentários:

Breno Augusto Cruz Faria disse...

Daniel, já se passaram quase 8 anos que você escreveu este post e o assunto continua recente, pelo menos para mim. Precisei desenvolver algumas soluções para coletores de dados recentemente e para isso entrei em contato com alguns fornecedores de hardware afim de saber qual plataforma iria utilizar para o desenvolvimento.

O que temos hoje em dia são dispositivos rodando basicamente Android e Windows Mobile, que foi o sucessor do Windows CE para a maioria dos equipamentos. Porém, a maioria dos fabricantes de hardware é categórica ao dizer que as opções de hardwares rodando o sistema operacional da Microsoft ainda são as mais procuradas e vendidas.

Talvez esta estatística se justifique em decorrência dos códigos das soluções antigas estarem na maioria das vezes em linguagem C, C# ou VB, tornando as vendas destes dispositivos para o sistema operacional da Microsoft mais populares. Outro ponto, este confirmado por um vendedor, é que os sistemas Android seriam atualizados muito mais rapidamente, tornando mais difíceis de se manter, com um software mais pesado que exige mais do hardware. (Carece de mais informações técnicas)

No meu caso, qualquer um dos sistemas não seria problema, visto que já desenvolvi soluções para as duas plataformas. Para Android, desenvolvi apenas soluções para dispositivos móveis (leia-se celulares e tablets), não industriais. A decisão então ficou na mão do cliente, que escolheu a versão com o sistema operacional da Microsoft.

O problema disso tudo é ter que utilizar uma IDE desatualizada, como o Visual Studio 2008. Acredito que o Windows Mobile já esteja descontinuado, mas isto, infelizmente não impede sua comercialização para estes dispositivos industriais. A indústria anda muito mais lentamente que o resto do mundo. Existem muitos sistemas antigos rodando em plantas industriais, mais do que se pode imaginar. Com isso, o desenvolver tem que se virar com documentação antiga (quando disponível) e suporte cada vez mais escasso.

Não sei se existe algum posicionamento da Microsoft com relação a comercialização de tais equipamentos rodando seu sistema operacional, mas acredito que este fato não deveria ser ignorado, principalmente em se tratando de soluções que envolvem muito dinheiro, tanto na parte hardware quanto na parte software.

Obrigado Daniel, ótimo Blog como sempre!

Breno.

Daniel Quadros disse...

Breno,

Trabalho com coletores desde o tempo que eles rodavam DOS (ou sistemas proprietários).

Olhando para trás, 2008 talvez tenha sido uma boa época. O Visual Studio suportava CE e Windows Mobile (que nada mais era que uma carroceria bonita para o CE), tanto com C como C#. Deixando de lado as piadinhas, a API do Windows e o Framework .NET são bem completos, documentados e estáveis.

Daí para frente a Microsoft foi para o Windows Phone, Windows 8.1, Windows 10 e entregou os pontos. Os fabricantes de coletores até anunciaram modelos com estes sistemas, mas ninguém queria refazer os sistemas, ainda mais para plataformas de futuro duvidoso. Eles continuam oferecendo CE e WM, apesar da Microsoft não se entusiasmar com isto.

Os modelos Android tem avançado lentamente, mas está se tornando muito difícil desenvolver e dar suporte para o CE e WM. Desenvolver para Android, na minha opinião, não é moleza. Cheguei a escrever uns posts sobre isto e às vezes parece que só piora. Ao contrário da Microsoft, a Google parece não dar muito valor à compatibilidade retroativa. Toda vez que você vai rodar uma aplicação em uma nova versão do Android tem surpresas desagradáveis. E as novas versões saem continuamente. As ferramentas também são alteradas toda hora, pode reservar meio dia por semana para baixar e instalar as atualizações...

Se você já conhece Android para celulares e tablets, vai descobrir que nos coletores é igual. O que às vezes é um problema, pois os requisitos são diferentes.

Enfim, boa sorte para você!

Breno Augusto Cruz Faria disse...

Obrigado Daniel! Não trabalho com coletores a tanto tempo, então não cheguei a ver sistemas diferentes do Windows e do Android rodando nestes equipamentos, mas imagino que deveriam ser tempos difíceis!

Minhas aventuras com o Android Studio ou mesmo quando era pelo Eclipse, realmente sempre foram cheias de atualizações, configurações e jeitinhos a cada nova versão ou plugin. A falta de compatibilidade também sempre foi um problema no Android. Já com a Microsoft, a compatibilidade parece que sempre foi levada mais à sério.

De certa forma, me senti confortável com a escolha do cliente e conseguimos desenvolver a aplicação sem muitos problemas. Os problemas que tivemos estavam mais relacionados com detalhes da aplicação e menos com a linguagem ou bibliotecas em si. A configuração do emulador, enquanto não estávamos com o hardware em mãos, gerou também um pouco de dor de cabeça, mas também foi superada.

Depois de tanto tempo do seu post inicial até aqui, acredito que pouca coisa mudou com relação à estes sistemas. Continuo achando que existe um gap gigantesco para a utilização destes sistemas operacionais em tais dispositivos. Ao meu ver, o Android está mais voltado para dispositivos móveis que evoluem seu hardware muito rapidamente. Em contrapartida, o Windows CE e seus primos, por exemplo, parecem terem sido feitos justamente para esta finalidade, porém, estão descontinuados.

Talvez a solução seja um "novo" sistema operacional, quem sabe uma distribuição Linux enxuta que possua algumas bibliotecas padrões para conseguir abstrair o hardware e funcionar de forma simplificada. Isso poderia ser uma solução ou um novo problema, visto que cada fabricante teria seu próprio sistema e bibliotecas, e talvez com muita sorte, sua própria documentação.

Daniel, obrigado pela atenção!

Breno.