Integrando o Eclipse ao Team Foundation Server

Introdução

Durante o desenvolvimento de um projeto pessoal, fui apresentado a um plugin para o Eclipse que me chamou a atenção. Percebi então, que este plugin na verdade poderia ser a solução de alguns problemas de Gerência de Configuração, como a padronização de processos de release de produtos. Resolvi trazê-lo para o conhecimento de todos através deste post. Este plugin que é pouco comentado no mercado, pode ser de grande utilidade para empresas que já possuem um Team Foundation Server (TFS) instalado (como é o caso da Mobiltec). Por mais que o SVN, Git e CVS sejam bons softwares de gestão de códigos fonte, é difícil para qualquer empresa ter que controlar diferentes tipos de servidores e ter que gerenciar diferentes tipos de releases de seus softwares. O ideal seria utilizar apenas um deles e unificar essa gestão. Pois bem, se a sua empresa já trabalha com o TFS e possui outros projetos em Java, o Team Explorer Everywhere 2010 (TEE) pode ser uma solução para unificar todos os processos da Gerência de configuração, centralizando tudo dentro do TFS. O TEE era de propriedade da empresa Teamprise que foi comprada pela Microsoft. Quem já possui uma subscription da MSDN, provavelmente tem direitos a este software e nunca ficou sabendo para que ele serve. Com este plugin, é possível integrar todas as funcionalidades do TFS no Eclipse, inclusive checkins vinculados a itens cadastrados no portal do TFS. É possível também controlar bugs, issues, etc., através deste plugin. Este plugin irá ajudar a Mobiltec em sua Gerência de Configuração, padronizando todos os projetos que são desenvolvidos em Java e C#, facilitando, assim a gerência dos projetos. O objetivo deste post será mostrar a instalação e demonstrar alguns recursos interessantes dessa ferramenta de integração, que auxiliam na gestão do desenvolvimento.

Instalação
Depois desta introdução é hora de por a mão na massa. O Team Explorer Everywhere 2010 SP1 está disponível para download aqui. O TEE SP1 é compatível com as versões 2005, 2008 e 2010 do TFS. É necessário ter o Eclipse, ou o IBM Rational Application Developer, ou ainda qualquer IDE baseado no Eclipse como o Aptana Studio e Adobe Flash Builder.

A instalação utilizada como exemplo será a do Eclipse, que é a ferramenta padrão de desenvolvimento Java aqui na Mobiltec. Para iniciar a instalação, baixe o arquivo zip TFSEclipsePlugin, usaremos ele mais adiante. O outro arquivo, TEE-CLC, é um cliente para acessar o TFS via linha de comando. Este cliente é cross-platform, ou seja, pode ser usado em qualquer sistema operacional, desde que suportado pelo programa. Não utilizaremos esse TEE-CLC, apenas o TFSEclipsePlugin. Depois do download concluído, no Eclipse, vá em Help e depois em Install New Software, conforme figura abaixo:

Na tela seguinte vá em Add e depois em Archive e selecione o zip baixado anteriormente. Em Name, pode ser colocado qualquer coisa (recomendação da Microsoft: Local Team Explorer plug-in archive). Feito isso, deverá aparecer o Plugin listado conforme a figura abaixo:

Adicionando o novo plugin

Marque o checkbox e clique em Next e novamente em Next. Aceite os termos da licença, e finalize. O plugin será instalado e será necessário reiniciar o Eclipse.

Utilizando o TFS Exploring

Depois que o Eclipse é reiniciado, para iniciar o cliente do TFS, vá em Window e depois em Open Perspective escolha Other. Irá aparecer uma lista de Perspectives parecida com a figura abaixo:

Abrindo perspectiva do TFS Exploring

Selecione a perspectiva Team Foundation Server Exploring. Este é o plugin para o Eclipse do TFS. Na visualização padrão, a esquerda é apresentado o servidor do TFS, e logo abaixo uma janela contendo os checkins pendentes. Outras janelas, como o History (histórico de alterações) podem ser encontradas em Window, Show View e depois em Other.

Para se conectar à um servidor TFS, utilize o botão abaixo da janela Team Explorer:

Conectar ao TFS

Irá aparecer uma janela mostrando os termos da licença, e antes de continuarmos, uma palavrinha sobre a licença.

Você poderá utilizar o TEE completo por 30 dias. Para trocar a licença do TEE, no Eclipse, vá em Window, Preferences e procure pelo caminho conforme a figura abaixo:

Troca da licença

Retomando, após aceitar os termos da licença, irá aparecer uma tela para adicionar um servidor TFS. Preencha os campos com as informações necessárias para se conectar ao seu servidor TFS.

Adicionando um servidor TFS

Principais Recursos

Abaixo uma lista dos principais recursos desse plugin.

Source Control

Source Control

Com o Source Control é possível explorar as soluções e os códigos fontes que estão no TFS. É possível visualizar históricos, realizar branches, merges, etc.

Work Items

Adicionando um work item

Podemos criar e consultar Work Items do projeto. Um Work Item pode ser um bug, uma issue ou mesmo uma tarefa que precisa ser realizada.

Synchronize

Sincronizando códigos fonte

Perspectiva que mostra as diferenças entre os fontes que estão na máquina do desenvolvedor e no servidor. Para abrir essa perspectiva, clique com o botão direito no projeto, depois em Team e Synchronize.

Vinculando Check-ins a Work Items

Realizando um checkin

Observe por esta imagem que podemos procurar por Work Items para que este possa ser vinculado ao check-in que o programador estiver fazendo. Assim fica fácil rastrear as correções de bugs e implementações de tarefas.

Conclusões

Observamos que a integração deste plugin com o TFS foi bem sucedida e este atendeu todas as expectativas. Com certeza será de grande utilidade nos projetos desenvolvidos para Android e J2EE. Agora falta descobrirmos uma integração entre o XCode e o TFS. Alguém tem uma sugestão? Bom, acho que isto é assunto para um futuro post. Até mais!

Escrito por Paulo Sérgio Morandi

TUTORIAL – Windows Phone – Parte 1 – Hello World

Mobiltec, nosso blog e 2012:
Olá! Fico feliz em escrever o primeiro post de 2012 e antes de abordar o assunto que lhe trouxe até aqui, gostaria de destacar a iniciativa da Mobiltec em criar esse blog, onde membros de nossa equipe podem compartilhar experiências com o público.
Redigir estes artigos nos permitem repassar determinados assuntos, esmiuçando-os antes de trazê-los em forma de post e refinar o conhecimento já existente.
Espero que todo nosso esforço possa agregar valores para nossos leitores!
Desejamos que o ano de 2012 seja de muita alegria, saúde, sucesso e crescimento profissional!

O mercado de trabalho está constantemente a procura de profissionais com conhecimentos em C#.
Com a chegada do Windows Phone para impulsionar novamente a Microsoft no mercado mobile e tudo apontando para tablets com Windows 8, somados ao novo fôlego dado ao Silverlight, quem é que não gostaria de desenvolver aplicativos para esses dispositivos?
O post de hoje vai abordar de forma prática e objetiva os primeiros passos para iniciar o desenvolvimento de aplicações para Windows Phone , no estilo TUTORIAL.
Este post é o primeiro de uma série que estamos escrevendo para as plataformas móveis. Se você é ligado também em Android e iOS, aguarde pois estes sistemas operacionais também serão abordados no blog por nossos programadores.
Chega de LERO-LERO e LET’S GO!

Pré-requisitos:

Sistemas operacionais suportados:

  • Windows Vista (x86 and x64) com Service Pack 2 – qualquer edição exceto Starter Edition
  • Windows 7 (x86 and x64) – qualquer edição exceto Starter Edition

Hardware:

  • A instalação requer 4GB de espaço em disco
  • 3GB RAM
  • Placa de vídeo com suporte ao DirectX 10 e driver WDDM 1.1

O download abaixo contém:

  • VISUAL STUDIO 2010 EXPRESS FOR WINDOWS PHONE
  • Windows Phone Emulator
  • Windows Phone SDK 7.1 Assemblies e extensions para XNA
  • Silverlight 4 SDK e DRT
  • Microsoft Expression Blend
  • WCF Data Service Client para Windows Phone
  • Microsoft Advertising SDK para Windows Phone

Faça o download e realize a instalação:
:: DOWNLOAD DO VISUAL STUDIO 2010 EXPRESS FOR WINDOWS PHONE ::

Ambiente de desenvolvimento:
Embora colocar a mão no código seja a parte mais legal da história, não adianta se apressar.
Desenvolver em qualquer linguagem de programação exige que você “prepare” o ambiente de desenvolvimento, algo muito comum de se ouvir em empresas de T.I.

- Mas Luiz, o que isso quer dizer?
Preparar o ambiente nada mais é do que analisar pré-requisitos do seu computador e instalar as devidas ferramentas.
A preparação da IDE de uma linguagem, muitas vezes, exige outros complementos como SDK’s ou outros tipos de updates.
Para uma abordagem conceitual sobre IDE visite nosso post nesse LINK.

- Certo, mas o que é SDK?
SDK é a sigla de Software Development Kit (Kit de Desenvolvimento de Software) e está presente em diversas linguagens de programação.

Agora, com as devidas ferramentas em mãos, vamos começar!!!

1 – O primeiro passo – Executando o Visual Studio e criando um novo projeto
2 – Em seguida, selecione o tipo de projeto (Windows Phone Application), framework(.NET Framework 4.0) e nome da solução (opcional)

3 – Caso você tenha instalado o SDK de ambas as versões 7.0 e 7.1, deverá optar por uma durante a criação do projeto

4 – Familiarizando-se com a interface e a estrutura básica do código XAML

5 – Abra a toolbox e arraste um controle do tipo textblock e button para dentro da grid chamada ContentPanel

6 – Em seguida, atribuimos um nome para os controles e também adicionamos algumas propriedades para ajuste de layout
Colocaremos a textblock ao topo da tela com texto ao centro e o botão na parte inferior

<TextBlock x:Name="ContentTextBlock"
    VerticalAlignment="Top"
    HorizontalAlignment="Stretch"
    TextAlignment="Center" />
<Button x:Name="ShowTextButton" Content="OK"
    VerticalAlignment="Bottom"
    Click="ShowTextButton_Click" />

7- Para criar o evento de toque do botão você pode dar dois cliques sobre o botão na interface de visualização da tela (onde a seta indica na imagem abaixo) e o código do evento será inserido automaticamente * O Visual Studio adicionou o evento de nome Click, entretanto, por se tratar de um dipositívo móvel, esse evento muitas vezes pode ser chamado de Tap. A interação usuário-dispositivo pode trazer outros tipos de eventos, chamados Gesture Listeners, que enriquecem o uso da aplicação, entretanto, são pauta para um novo post, específico, pois a abordagem é extensa.
8 – O Visual Studio abrirá o code behind automaticamente, já com o novo método, onde adicionaremos o seguinte trecho de código para exibir a mensagem “Hello world!” em nosso textblock

ContentTextBlock.Text = "Hello World!";

9 – Para rodar a aplicação no dispositivo, vamos selecionar no menu superior a opção Windows Phone Emulator, e em seguida clicar no símbolo verde tipo PLAY, conforme imagem abaixo, para compilar o projeto e executar o emulador

10 – Após executar o emulador, clicamos em OK para conferir o resultado
Como podemos ver, os primeiros passos para o desenvolvimento em Windows Phone é relativamente simples!
Na medida que o grau de exigência de determinados projetos aumenta é que nos deparamos com situações novas e mais complexas, porém, para um “Hello world!” em um ambiente configurado, isso é o suficiente!

Espero que tenham gostado! Fiquem ligados e acompanhem o restante da série de TUTORIAIS que vêm por ai!

Escrito por Luiz Roberto Lethang Rodolpho.

Desenvolvimento Mobile na Plataforma Java ME

Introdução

Perdido no meio da explosão dos smartphones, o J2ME parece ainda ter fôlego em algumas empresas. Recentemente, foi solicitado a Mobiltec que fosse desenvolvido um cliente J2ME para nosso produto M3. Vocês podem estar se perguntando: porque uma empresa investiria ainda em J2ME? A resposta é simples: custo. Os smartphones mais recentes tem um custo elevado e uma sofisticação que muitas vezes não é necessária para algumas empresas. O objetivo deste post, seguindo a proposta dos outros posts introdutórios, é conhecer algumas definições do J2ME e capacitar o leitor a começar o desenvolvimento nesta plataforma. Futuramente mostraremos como funciona a construção de interfaces e também comentaremos um pouco sobre segurança.

Conceitos

Antes de por a mão na massa, devemos entender do que se trata o J2ME. Primeiro, devemos salientar que o termo J2ME não é mais usado pela Oracle, que trata agora apenas de Java ME. O Java Micro Edition, é um conjunto de tecnologias e especificações desenvolvidas para trabalhar com as restrições impostas por dispositivos de baixa capacidade (memória, display, bateria, etc).

Existem dois tipos de configurações especificadas pelo Java ME: CDC e CLDC. Connected Device Configuration (CDC) são especificações para dispositivos do tipo PDA ou setup boxes. Já o Connected Limited Device Configuration (CLDC) são especificações para dispositivos móveis do tipo celular (com mais restrições em termos de hardware que um PDA).

Se um dispositivo é compatível com Java ME, ele precisa necessariamente implementar um profile, que é um subconjunto das especificações de uma das configurações acima. Para o CLDC existem o MIDP (Mobile Information Device Profile) e o IDP (Information Device Profile). Para o CDC existe o FP (Foundation Profile) e o PBP (Personal Basis Profile). Não entraremos em mais detalhes, se quiser saber mais veja aqui.

Neste post (e nos próximos) o foco será no profile MIDP versão 2.0 ou superior.

Pré-Requisitos para o Desenvolvimento

Assim como no Android, não há nenhum custo para iniciar o desenvolvimento em Java ME. Tanto o SDK, quanto as IDEs que trabalham com Java ME são livres para serem baixadas e utilizadas. Primeiro passo é ter o Java SE SDK instalado em seu computador, para isso baixe a última versão do site da Oracle. O SDK do Java é o pré-requisito para a próxima ferramenta: Netbeans. Usaremos como exemplo o Netbeans pois ele já vem com o Java ME integrado e pronto para uso, diferente do Eclipse que necessita de um setup inicial. Na versão anterior do Eclipse (Helios), existia uma integração no projeto chamado Eclipse Pulsar, que era uma IDE especial para o desenvolvimento de aplicativos móveis. Mas na versão mais recente (Indigo), até o presente momento, esse projeto Pulsar não existe mais.

Infelizmente tem que ser a versão mais completa do Netbeans (em torno de 245 Mb), pois conforme a tabela abaixo é a única que tem suporte ao Java ME.

Versões do Netbeans
Versões Netbeans

Depois do Netbeans instalado certifique-se que o plugin do Java ME está ativado. No menu Ferramentas, escolha a opção Plug-ins:

Seleção de plug-ins
Seleção de plug-ins

Veja na figura abaixo como deve estar a opção do Java ME:

Ativação do Java ME
Ativação do Java ME

Pronto, estamos aptos para iniciar um projeto Java ME.

Desenvolvimento

O Java ME é basicamente um subconjunto, bem mais restrito, do Java SE. Isso é natural, uma vez que foi feito para ser utilizado em dispositivos com baixa capacidade de processador e memória. Como exemplo dessa restrição podemos citar o acesso a arquivos. No Java SE existe um pacote (package) chamado java.io que possui uma classe chamada File responsável por manipular arquivos. No Java ME (lembrando que estamos falando de MIDP 2.0 ou superior) não existe esse conceito de arquivo. Existe uma classe responsável por criar uma conexão com um recurso chamada Connector. Essa classe serve tanto para criar uma conexão HTTP, quanto para abrir e manipular um arquivo. Através dela informamos qual o recurso desejado e recebemos de volta uma interface chamada Connection. Onde podemos ler e escrever os bytes desse recurso que foi aberto. Mais informações sobre esta classe pode ser encontrada aqui.

Muitas vezes encontramos uma biblioteca Java SE que gostaríamos de utilizar no Java ME, mas infelizmente, isso, na maioria das vezes, não vai funcionar. Mas nem tudo está perdido! Existe uma chance (pequena, mas existe!) de sucesso se a biblioteca for open source e tenha sido feita puramente em Java (sem mais dependências). Assim é possível tentar alterar o código fonte da biblioteca para usar os recursos do Java ME (como trocar a classe File pela Connector). Nessas horas sempre é bom procurar por aí por alguém que já tenha feito este trabalho.

Um programa feito em Java ME possui uma classe chamada Midlet, que é responsável por gerenciar o ciclo de vida da aplicação. Os três principais métodos dessa classe são:

  • startApp: Chamado quando o usuário seleciona a aplicação no menu de aplicações.
  • pauseApp: Chamado quando o usuário do telefone recebe uma ligação por exemplo.
  • destroyApp: É a sinalização que a aplicação deve ser encerrada.

A documentação da API do Java ME (MIDP 2.0) com os métodos disponíveis está aqui.

No próximo post falaremos mais sobre a estrutura de interfaces (Midlet) de um projeto Java ME e mostraremos como funciona a navegação entre os forms de uma aplicação.

Distribuição de Aplicativos

Diferentemente do Android, Windows Phone e iOS, não existe uma “Java ME Store” controlada pela Oracle. A Oracle apenas fornece a documentação, suporte e treinamento em Java ME, bem como é a responsável por definir os rumos futuros da plataforma. Algumas empresas, como a Nokia, possuem uma loja própria onde é vendido/distribuído seus aplicativos desenvolvidos em Java ME (ou em alguma linguagem nativa, no caso da Nokia, C++). Lojas próprias não são algo tão incomum assim. Com o Android, por exemplo, temos grandes empresas como Samsung, Amazon e Barnes & Noble que possuem sua própria forma de licenciar e distribuir aplicativos para Android.

Frameworks

E antes do apagar das luzes, uma última informação sobre outros frameworks Java ME. As vezes temos que utilizar um framework Java ME que não o default da plataforma, para utilizarmos os recursos específicos de uma plataforma, como, por exemplo, uma API de geolocalização. Para instalar outros frameworks no Netbeans, acesse a página do SDK (exemplo: Symbiam SDKs) e instale a partir do menu Ferramentas, opção Plataforma Java, conforme figura abaixo:

Adicionando frameworks
Adicionando frameworks

Conclusão

A Oracle parece ainda não ter desistido do Java ME e continua a atualizar a plataforma. Aparentemente o mercado caminha para termos dispositivos cada vez mais robustos por preços mais acessíveis. Aparentemente somente em países subdesenvolvidos a Nokia continua com sua linha que ainda possui aparelhos compatíveis com Java ME, mas mesmo assim a empresa dá mais ênfase no desenvolvimento utilizando C++ para o seu sistema S40. Mas mesmo a Nokia, que sempre foi uma gigante na telefonia, está aos poucos migrando para o Windows Phone e a tendência é que o Java ME seja deixado de lado e fique talvez mais restrito a sistemas embarcados. Mas conhecimento nunca é demais e nunca sabemos quando teremos que dar manutenção naquele código legado de Java ME, não é mesmo? Até o próximo post!

Escrito por Paulo Sérgio Morandi

O Google App Engine

Este é o primeiro de vários posts sobre uma das  mais novas  ferramentas do Google, chamada “Google App Engine”. Aqui, vamos expor conteúdo informativo, com o objetivo de auxiliar os desenvolvedores a compreenderem as funcionalidades e aplicações para o desenvolvimento de aplicativos móveis integrados a internet, desse novo fenômeno do Google. Vamos expor como uma empresa pode expandir seus horizontes em relação ao modo em que seus aplicativos podem alcançar uma gama maior e crescente de clientes remotos e processar altas quantidades de dados via web, sem perda de desempenho.

O Google Application  Engine ou simplesmente “App Engine” é uma plataforma de desenvolvimento web desenvolvida pelo Google, para criar aplicações web que usam a sua infra-estrutura, o que as transforma em aplicações altamente escaláveis, seguras, rápidas de implementar e fáceis de publicar . O App Engine oferece aos desenvolvedores a possibilidade de executar as suas aplicações na infra-estrutura utilizada pelo próprio Google  para prover suas aplicações, o que inclui servidores altamente redundantes, seguros e tolerantes a falhas, espalhados em diversos centros de processamento de dados (Data Centers) ao redor do mundo. Os produtos do Google, tais como Gmail, Google Maps e outros utilizam a mesma infra-estrutura. Dessa forma, permite que os aplicativos respondam positivamente para o crescimento de dados armazenados e manipulados, além do tráfego (web) que recebem.

As App Engine foram projetadas para serem independentes da APIs da linguagem de programação escolhida. Isso significa que o App Engine fornece aos desenvolvedores uma lista crescente de linguagens de programação para a criação de aplicações compatíveis com a ferramenta. Inicialmente, o App Engine foi lançado suportando somente o ambiente de execução do Python. Atualmente, o App Engine oferece suporte a três runtimes, o Python 2.5, o Go (linguagem desenvolvida pelo Google) e o Java. A última permite rodar qualquer  linguagem baseada em JVM, como JavaScript, Ruby.

App Engine trata o armazenamento e persistência de dados de forma singular. As aplicações criadas com o App Engine usam um sistema de armazenamento de dados chamado “Datastore” (um banco de dados não relacional), que por sua vez é baseado em uma estrutura escalável de armazenamento de dados chamado “Bigtable”, ambos desenvolvidos pelo Google.

Antes de nos aprofundarmos nas funcionalidades do datastore, gostaríamos de contar a razão pela qual ele foi desenvolvido. Basicamente, os RDBMS tradicionais não escalam de forma eficiente, devido a algumas características que eles fornecem para facilitar a busca dos dados em diversas tabelas: os “JOINS”. Os joins só funcionam bem quando todas as tabelas envolvidas estão localizadas na mesma máquina, consequentemente, eliminando a possibilidade de criar um sistema de armazenamento distribuído de dados. No App Engine, cada tabela pode ser armazenada em máquinas diferentes à medida que crescem em tamanho. O App Engine não suporta joins, uma vez que os dados das suas aplicações podem ser armazenadas em diferentes centros de dados do Google ao redor do mundo.

Utilizando o Datastore do AppEngine o desenvolvedor não precisa se preocupar com a manutenção, seja de banco de dados ou de segurança. Ele pode armazenar dados e recuperá-los quando necessário. O App Engine armazena dados das aplicações como objetos indexados chamados “entidades” no datastore. O índice (auto-gerado) é uma das bases de armazenamento de dados que facilita a recuperação dos dados.

O Google App pode variar de uso, desde aplicações simples de uso próprio do desenvolvedor, até um aplicativo complexo e rico para empresas, com a tecnologia push móvel ativada e acessado por milhões de usuários ao redor do mundo. Leia nosso post anterior para saber mais sobre a tecnologia push mobile.

O App Engine também permite a autenticação de usuários dos aplicativos, utilizando o sistema de contas Google (Google Accounts). O desenvolvedor deixará de se preocupar com a autenticação e segurança de acesso na sua aplicação através de um portal de administrador na web (falaremos mais sobre esse portal em outro post). Isto é feito especificando quais usuários das contas do Google tem acesso a determinadas informações através da aplicação web do próprio desenvolvedor.

O Google fornece aos desenvolvedores um Kit de Desenvolvimento de Software (SDK) disponível gratuitamente para download através da página http://code.google.com/appengine. O SDK a ser baixado depende do ambiente de execução (Runtime Environment) que o desenvolvedor decide usar. O Java runtime SDK vem com um plug-in do Google para o IDE Eclipse, que é um excelente IDE para a o desenvolvimento de linguagens de programação baseadas em JVM. O Python runtime SDK vem com uma versão antiga do Django. Esta versão pode ser substituída sempre que surgir uma mais recente.

Imediatamente após o download do SDK desejado, já podem ser criados os Google Apps. As aplicações podem ser testadas apenas localmente no modo de depuração. Se desejar publicar suas aplicações na web (sem custos), o desenvolvedor terá que criar uma conta de usuário de App Engine no site http://code.google.com/appengine. Isto feito, desejamos a vocês uma boa programação.

A tabela abaixo resume as principais características do App Engine:

• Armazenamento de dados: Datastore, um sistema escalável baseado no BigTable.

• Fonte de arquivos de código necessários: arquivo html (s) para o projeto e arquivo de código de templates (s) (ex. code.py) para a lógica de negócios e aplicações de arquivo de configuração.

• Investimento inicial: nenhum

Runtime Environment

Compilado

Interpretado

IDE/Plug-In

Python Runtime

Sim*

Sim

Django

Go Runtime

Sim

Não

n/a

Java Runtime

Sim*

Sim

Eclipse

(*) Just-In-Time (JIT) Compilers.

 

Em novos posts, vamos mostrar como as cotas do uso de recursos do Google funcionam usando o App Engine e como as estatísticas de uso dos aplicativos Google podem ser monitorados, usando o console de administrador (Administration Console) na web. Também comentaremos sobre as restrições impostas pelo App Engine nos Google Apps para garantir a sua segurança e eficiência. Uma das restrições impossibilita a escrita no sistema de arquivo pelas aplicações nas máquinas em que estão hospedados. Mas isso já é assunto para a próxima postagem.

 

Escrito por Ahmed Alejo