Com a crescente popularidade dos aplicativos móveis, muitas pessoas tem se aventurado na publicação de comparações de suas experiências de desenvolvimento em cada ambiente. A cerca de um ano atrás, David Green publicou uma revisão completa de ambos os ambientes, enquanto John Blanco, publicou na semana passada uma análise comparativa dos ambientes de desenvolvimento do iPhone e do Android. Tanto Dave quanto John concordam que:
usar Java é muito melhor que Objective-C. Os métodos privados, as classes internas, as classes anônimas, o uso de generics, uma melhor sintaxe de funções, e uma infinidade muito superior de código de terceiros são apenas um pequeno punhado de vantagens do Java. Para tudo isso não há como concorrer.
John e Dave discordam sobre Xcode vs Eclipse:
[John] Eu costumava amar o Eclipse. Eu dominava a IDE completamente e obtia os benefícios necessários para o trabalho que eu desenvolvia. Passou-se mais de um ano desde que eu precisei usar o Eclipse novamente [...] e quando voltei a usa-lo ... foi ... uma experiência terrível ... eu não sei como isso pode acontecer. O Eclipse está inchado, lento, e o simples ato de mudar de contexto no editor (XML vs Java vs Android Manifesto, etc) é incrivelmente tedioso. Ele leva segundos. [...] E com isso, está passando uma experiência *miserável* de trabalhar com o Android. Compare ele com o XCode, o XCode é delícioso de se trabalhar. É elegante, muito rápido, e eu nunca vi uma lentidão ao digitar meu código. Eu assumi o XCode, com toda certeza. O XCode encontra-se em movimento.
Dave vê o compilador incremental do Eclipse como um grande benefício do ambiente Eclipse. Para ele, o assistente de conteúdo não funciona bem e o Xcode abre janelas demais:
O XCode é tão chocantemente ruim que eu quase não sei por onde começar. Aqui está uma lista mínima de coisas que eu acho que precisam ser sanados para que a IDE do XCode possa se tornar viável:
No entanto, Dave gosta do construtor de interfaces para o iPhone.
Da perspectiva de um simulador, John vê várias limitações para os simuladores de iPhone sem uma possibilidade de emulação real dos recursos de um GPS ou acelerômetros. Mas diz que ficou impressionado com a sua precisão:
Eu quase nunca vejo um problema em um dispositivo que eu não consiga reproduzir em um simulador. Eu consigo sempre desligá-lo, eu posso reconfigurá-lo facilmente, eu posso mudar de idioma, e assim por diante. O emulador do Android, por outro lado, é o pior emulador que eu já vi. É pior do que o do BlackBerry - que sempre nos diz alguma coisa. Às vezes eu executo um aplicativo e ele simplesmente não funciona mais no emulador e eu preciso reiniciar essa coisa. Também é terrivelmente lento. Certa vez, uma atividade precisou de 8 segundos para exibir alguma coisa. Esses problemas podem estar relacionadas com o meu Eclipse, mas sem dúvida são nitidamente notáveis, pois eu não tenho *nenhum* desses problemas com o desenvolvimento para o iPhone. Com todos os desenvolvedores do Android nos quais eu me deparei sempre me disseram que não fazem uso do emulador, e sempre optam por executar o aplicativo diretamente no dispositivo.
Dave vê o poder de uma década de melhorias implacáveis na plataforma Java com um depurador cheio de recursos, a capacidade de usar JUnit, juntamente com suas ferramentas de profiling memory (Um profiler é uma ferramenta que informa sobre o comportamento de uma aplicação em tempo de execução. veja mais em www.javapassion.com/javase/javaMemoryProfiling.pdf).
Eu escrevi minha primeira linha de Objective-C a mais de 20 anos atrás. Me lembro de ter sido uma experiência incrível e eu não conseguia ficar longe do laboratório da Penn State Computer por muito tempo. Para muitas pessoas, é difícil de imaginar que o XCode estava disponível, tão bonito como é hoje, em um passado tão remoto (como NeXTStep). O Interface Builder, o elemento fundamental do NeXTStep, foi uma ideia de Jean-Marie Hullot que começou a trabalhar nele em 1985 e o lider do NeXTStep Tim Berners-Lee concebeu a base da Web no CERN. Junto com Jean-Marie, pessoas como Jack Greenfield que desenvolveram a primeira ferramenta ORM, estabeleceram uma base sólida para a engenharia orientada a modelos (model-driven engineering). Com um passado tão inovador, não é nenhuma surpresa ver o XCode ainda no ano de 2010. Mas será que ele ainda está em sintonia com seu tempo? Ainda encontra-se no topo? Poderia ser melhorado? A Objective-C ainda continua sendo uma linguagem moderna o suficiente mesmo com todas as recentes adições, ou será que o XCode está ficando para trás e vai rapidamente de fato perder sua popularidade para ferramentas orientadas ao modelo mais avançadas? Poderíamos até questionar se o padrão MVC tem futuro? ou será que os conceitos do Android estão num patamar de intenções e atividades superiores?
Qual é a sua opinião sobre isso?