Arquivo da tag: aplicações

Como será o futuro dos desenvolvedores?

Fonte: Cezar Taurion

Outro dia recebi um e-mail muito interessante de um desenvolvedor recém-formado, que se questionava sobre quais tecnologias deveria se dedicar nos próximos anos. Debatemos o assunto e creio que um pequeno resumo do debate pode ser de interesse para outros desenvolvedores que estejam diante da mesma dúvida: como será o futuro do desenvolvedor?

Bem, minha bola de cristal dá “tela azul” toda vez que tento fazer previsões, mas podemos discutir alguns cenários que já estão claramente delineados.

Os desenvolvedores estão as voltas com uma verdadeira convergência tecnológica, na qual cloud computing, mobilidade, social business, Big Data e Internet of Things requerem novas habilidades para o desenvolvimento de aplicações inovadoras. As empresas esperam que sejam desenvolvidas novas aplicações para novos dispositivos, com a finalidade de resolver novos tipos de problemas.

O desafio das empresas e de seus desenvolvedores é de criar estas novas aplicações, ao mesmo tempo que devem manter as atuais funcionando sem interrupções. Em muitas organizações, isso significa manter programas Cobol e escrever aplicações PHP ou Ruby simultaneamente.

As aplicações que farão diferença em um mercado altamente competitivo criam grandes oportunidades, mas ao mesmo tempo, geram novos desafios. Desenvolver uma aplicação usando interfaces touch-screen, ou de reconhecimento de voz, que interaja com tecnologias de midia social, como Facebook ou Twitter, demandam habilidade, métodos e processos diferentes. Por exemplo, a computação social demanda habilidades sociológicas e antropológicas para criar novos processos que atendam à demanda das interações sociais que os usuários desejam. Não espero que os desenvolvedores estudem a fundo antropologia, mas as equipes de desenvolvimento deverão ter uma multidisciplinaridade de habilidades que trabalharão em conjunto. Assim, métodos e práticas de desenvolvimento colaborativo serão fundamentais para a criação destas novas aplicações.

Também é desafiadora a criação de aplicativos que interajam com tecnologias de Big Data, como o Hadoop e o MapReduce. Juntamente com mobilidade e social business, teremos aplicações socialytics (social business + business analytics) sendo acessadas por dispositivos móveis, como smartphones e tablets.

O Hadoop é um desafio à parte, pois é um conjunto de diversos projetos open source desenvolvidos para trabalhar com grandes volumes de dados, de forma paralela. Para termos uma ideia do Hadoop, pense que ele contém projetos como o Hadoop e MapReduce, que são um framework Java para processamento paralelo, HDFS, que é um sistema de arquivos distribuídos, Pig (linguagem de programação), Hive (linguagem similar ao SQL, chamado de HiveSQL), e diversos outros. Uma visita ao site mostra os diversos projetos associados ao Hadoop.

Cada projeto não se integra, necessariamente, com os demais e portanto é necessário um exaustivo trabalho de integração. Surgem, então, as distribuições Hadoop, que atuam mais ou menos de forma similar às distribuições Linux. Existem várias distribuições – cada uma com caracteristicas diferentes. Entre as mais conhecidas temos a Cloudera, a InfoSphere BigInsight da IBM (que usa GPFS ou General Parallel File System) como alternativa ao HDFS e DataStax, que usa Cassandra ao invés do HDFS. Portanto, muito estudo e trabalho pela frente!

O recente CES 2012 (Consumer Electronics Show) mostrou mais alguns futuros desafios para os desenvolvedores. As interfaces estão saindo rapidamente do tradicional contexto teclado+mouse para multitouch, voz, gestos, reconhecimento facial e até mesmo “eye tracking”. Já temos casos de sucesso: o Siri do iPhone 4S sinaliza que os usuarios começarão a interagir com seus dispositivos através de comandos de voz. A Samsung anunciou um conjunto de APIs abertas e um SDK (Software Development Kit) para desenvolvimento de aplicações para sua Smart TV. A empresa realizou recentemente uma competição para desenvolvedores criarem aplicativos para esta plataforma e coisas muito interessantes foram geradas. Vejam em aqui. A LG anunciou o Gesture Cam, que permite o controle da TV através de gestos; de forma similar ao Kinect do Xbox360. Provavelmente, em breve as diferenças entre PCs, TVs, smartphones e tablets serão apenas o tamanho da tela, uma vez que todos usarão as mesmas interfaces.

A Internet das Coisas (Internet of Things, ou IoT) também abre novas frentes. Estamos falando de coisas como eletrodomésticos, automóveis, ativos da empresas (edifícios inteligentes, por exemplo) e infraestrutura das cidades conectadas à Interrnet e interagindo entre si e com os aplicativos corporativos. Quando adicionamos inteligência (leia-se software) aos objetos e eles começam a interagir e a negociar entre si, isso nos abre inúmeras oportunidades de novos negócios. Claro que as empresas vão olhar esta possibilidade de obter vantagens competitivas com atenção. Um exemplo é a criação de uma logistica muito mais inteligente que a maioria das empresas tem hoje. Imaginem uma “self-controlled logistics”!

Bem, o que os executivos demandarão? Novos aplicativos que explorem a IoT e que, por sua vez, demandam novas habilidades dos desenvolvedores como EDA (event-driven architecture). Um texto basico sobre EDA pode ser encontrado na Wikipedia.

Claro, .NET e Java continuarão a dominar o cenário das linguagens usadas nas empresas, pelo menos no horizonte previsível. Mas começa a surgir espaço para novas linguagens, como Perl, Ruby ou PHP. Por brincadeira consultei algumas vagas de desenvolvedores para o Facebook e encontrei de maneira geral demandas por profissionais que conheçam Java e/ou C++ e tenham conhecimento de PHP, Perl ou Python, além, é claro, de Hadoop.

Este cenário leva a uma outra discussão: até que ponto os métodos ágeis de desenvolvimento substituirão ou complementarão os métodos de desenvolvimento mais tradicionais? Me parece que os métodos ágeis estarão mais próximos da velocidade de resposta que os negócios demandam dos desenvolvedores. Além disso, está claro que os desenvolvedores nunca terão todas as respostas para as inumeras demandas dos seus usuários. Aí é que entra o conceito das aplicações mashup. Os usuários passarão a também desenvolver pequenas aplicações em cima das APIs geradas pelos desenvolvedores. Veremos os desenvolvedores-cidadãos! E isso tende a se acelerar à medida que a geração digital se insere no mercado de trabalho. Eles entram nas empresas já com vários anos de prática na criação de apps para smartphones e tablets (são verdadeiros app entrepreneurs) e vão querer usar suas habilidades para desenvolver apps para interagirem com as aplicações corporativas.

Na minha opinião, as aplicações serão cada vez mais heterogêneas em tecnologias, misturando diversas linguagens no mesmo sistema. Além disso, novas funcionalidades deverão ser incorporadas de um dia para o outro. O SOA (service-oriented architecture) e os métodos SODA (service-oriented development of applications) são a resposta.

Por tudo que debatemos, nosso amigo ficou mais preocupado ainda… Por outro lado, enxergou que terá, como desenvolvedor, uma longa carreira pela frente!

Apple libera primeira atualização para Mac OS X Lion

A Apple liberou ontem a primeira atualização para o Mac OS X Lion, a 10.7.1. Ela pesa apenas 17.4 MB e traz várias correções de bugs.

De acordo com a empresa, o update é recomendável para todos os usuários do sistema operacional, e ele melhora a estabilidade e a compatibilidade dos Macs.

As correções incluem um problema que pode travar o sistema durante a execução de um vídeo no Safari, outro que pode causar a paralisação do áudio ao usar HDMI ou cabo ótico, uma falha que impede a transferência de dados, configurações e aplicativos compatíveis para um novo Mac rodando o OS X Lion, além de melhorarem o suporte para conexões Wi-Fi.

Fonte: Mashabale

O HTML5 é realmente o Santo Graal dos aplicativos web?

É ele que vai permitir a construção de apps baseados em navegadores que ajam como nativos e sejam escritos para funcionar em qualquer plataforma?

Será que o HTML5 é mesmo o Santo Graal para o desenvolvimento de aplicativos web? Ou os desenvolvedores devem abandonar o navegador e adotar aplicativos específicos para dispositivos como o iPhone e o Android?

Essas foram as principais perguntas que os desenvolvedores da Microsoft, Google, Twitter e outras companhias tentaram responder durante a conferência técnica Usenix, realizada semana passada em Portland, Oregon, nos EUA.

O moderador Michael Maximilien, pesquisador de software, arquiteto e engenheiro da IBM Research, perguntou aos debatedores se o HTML5 é ou não a resposta para a construção de aplicativos baseados em navegadores, que ajam como aplicações nativas e possam ser “escritos uma vez para funcionar em qualquer lugar.”

“Sempre tentamos descobrir a interface (Graphical User Interface – GUI) universal e acredito que isso jamais tenha funcionado”, disse Erik Meijer, designer de linguagem de programação que lidera a equipe de programação em nuvem da Microsoft. “O HTML5 é mais uma tentativa.”

Mas o gerente de relações com desenvolvedores para nuvem e ferramentas da Google, Patrick Chanezon, discordou. “Se você trabalha apenas com iOS, claro, faça tudo nativo. Mas se você quer fazer algo que funcione no Android e em navegadores de desktops, o HTML5 é o melhor caminho”, declarou. O HTML5 permitiu que a Google construísse alguns clientes de Gmail muito bons.

“Você quer dizer que devemos construir uma versão ruim em HTML5, mas que funcione em todos os lugares?”, alfinetou Maximilien, lembrando que mesmo que o HTML5, por mais que seja proeminente nos navegadores Chrome e Internet Explorer, permita novos tipos de aplicações web interativas, incluindo as que usem armazenamento offline, jamais se comportará como código nativo. Sempre será possível encontrar arestas a aparar.

Raffi Krikorian, engenheiro de infraestrutura do Twitter, também chamou a atenção para as limitações do HTML5. Segundo ele, a linguagem permite criar aplicações “realmente agradáveis”, do ponto de vista visual, mas não permite fazer coisas como enviar notificações para os usuários. “Um app móvel é mais que apenas uma interface de usuário”, afirmou Krikorian.

Outro membro do painel, o engenheiro da Flipboard, Charles Ying, desenvolvedor de uma revista personalizada para iPad reunindo conteúdos do Facebook e do Twitter, foi outro a apontar limitações. Segundo ele, apps HTML5 que rodam com 60 quadros por segundo, demonstrados pela Google nos Chrome para desktop, são rápidos, sem dúvida. Mas essa velocidade é muito difícil de atingir em dispositivos móveis.

“O HTML5 é bem sucedido porque ele é o novo caminho para o navegador Web moderno, a plataforma online moderna. Mas ainda temos muito a percorrer”, disse Ying. “Tentamos construir grandes experiências nele, mas descobrimos que as taxas de frames não funcionam quando tentamos fazer novas animações.”

A maioria dos participantes do painel pareceu concordar que o HTML5 é um grande passo para os navegadores para desktop, porém tem ainda uma longa estrada para chegar ao mesmo nas plataformas móveis.

Apps ou navegação web móvel?

Desenvolver para a web ou para lojas de aplicativos foi a “mãe de todas as perguntas”.

Ninguém menos que o criador da World Wide Web, Tim-Berners-Lee, já chegou a afirmar que o modelo de App Store está saturando a Internet e que, por isso, desenvolvedores deveriam se concentrar em escrever programas para navegadores.

No caso dos navegadores para desktops, e especialmente nos Chromebooks, a Web Chrome Store é um bom exemplo de como muitas aplicações podem ser executadas executadas em browsers.

“O problema com os navegadores de hoje é que eles não foram otimizados especificamente para construir experiências de softwares que você usa em aparelhos móveis”, acrescentou Ying. Essas limitações podem estar escondidas nos desktops devido à força de processamento, mas se tornam aparentes em smartphones e tablets.

“Em um iPad, iPhone ou em um Android você realmente precisa pensar nas suas abstrações, respostas de toque na tela, velocidade das animações… As abstrações são importantes em aparelhos móveis”, disse Ying.

Na opinião da maioria dos participantes da USENIX, porém, essa escolha é uma questão monetária. Bem ou mal, o modelo de app store traz lucros para desenvolvedores.

Ying não concorda. Para ele, apps nativos são melhores em dispositivos móveis do que sites, tanto do ponto de vista tecnológico quanto monetário.

Mas mesmo os aplicativos nativos têm suas falhas. Nem sempre funcionam em todas as versões do Android, do iOS da Apple e de outras plataformas, e quando mudamos de aparelho, precisamos baixar novamente os programas e torcer para que funcionem como antes.

A audiência e os participantes do painel discutiram como o mundo da tecnologia tem ido para frente e para trás entre o modelo web e o modelo cliente/servidor, com o modelo web realmente parecido com o ambiente de mainframe 1960, em que a lógica é construída no lado do servidor e os clientes não precisam ter muito trabalho.

“O crescimento das aplicações web que parecem mais como aplicativos nativos e precisam de um cliente Web poderoso é de uma forma de retornar para a arquitetura cliente-servidor”, declarou Chanezon, da Google.

Na opinião de Mejer, da Microsoft, aplicações web sempre foram uma má ideia. “É absurdo gerar interfaces de usuário no lado do servidor e projetá-las para o cliente. Não é assim que as coisas funcionam. Quando falamos em tecnologia, sou realmente conservador e gosto de manter as coisas simples”.

Até mesmo a Google, onde os executivos proclamam um futuro “100% web”, está em conflito interno sobre quais tecnologias trarão esse futuro à realidade.

Chanezon acrescentou que viu a empresa projetar um futuro baseado no Android em um dia e, no outro, no Chrome, durante a recente conferência Google I/O.

“Acho que o júri ainda não decidiu qual versão vai ganhar, e francamente eu não sei”, disse Chanezon, com Maximilien concluindo: “Até mesmo na Google, a casa está dividida.”

Fonte: IDGNOW