Segurança: Ajax X Applets

Ontem recebi um link para um projeto nacional que tem tido muito sucesso, e estava lendo as informações no site e encontrei algo que é um perfeito exemplo de má interpretação de tecnologias, e isso me deixou bastante intrigado, é uma questão sobre a camada de apresentação do projeto, que é feita em Ajax, até aí tudo bem certo? (afinal, o que de novo hoje em dia não usa Ajax?)

Não, não quero colocar aqui o projeto e o link para o site pois não quero que esse post soe como uma crítica direto ao projeto, pois não é, é apenas uma crítica a forma em que uma questão em particular foi encarada, o que não tira os méritos do projeto.

IMHO, o problema foi o modo com que isso foi exposto e, até de certa forma, usado como motivo para justificar a adoção ao Ajax. No site do projeto existem claramente duas seções: Ajax e Não Utiliza Applets. A categoria Ajax é simples e mostra algumas vantagens de se utilizar Ajax na apresentação de aplicações Web. Já a categoria “Não Utiliza Applets” possui uma série de divagações das quais não concordei muito, e vou dizer o porque.

Começando:

Applets … …. além de serem mais lentos e inseguros…

Lentos eu até concordo quando comparados com utilitários bem escritos com JavaScript, mas isso não quer dizer que sempre será mais lento, não é difícil escorregar e perder a linha gerando na aplicação vários (ou até dezenas) Mega Bytes de JavaScript que serão tão lentos quanto um applet para carregar e poderão sacrificar o cliente como qualquer aplicação desktop repleta de memory leaks (quem nunca viu o Firefox sugando seus ~400Mb++ de memória?).

E a segurança, a não ser que o cliente esteja utilizando uma versão antiga da JVM (cujos bug já são conhecidos e possuem correção, geralmente em versões mais novas) eu concordo que possa haver problemas com segurança, mas ainda não concordo que a segurança de um applet seja inferior à de algum componente escrito em JavaScript. Podemos começar falando de vulnerabilidade ao cliente, com o applet, ou o cilente tem a JVM ou não tem, portanto, ou o applet irá funcionar ou não irá, já com o JavaScript, o controle de funcionar ou não, não é como um ON/OFF, o usuário tem diversas formas de bloquear e desbloquear determinadas operações, sem contar as formas existentes de interferir no fluxo normal de processamento do JavaScript, com o GraseMonkey, por exemplo, é fácil escrever códigos que se integram (inicialmente à apresentação) ao código JavaScript de qualquer página. Sem contar as possíveis formas de se utilizar de XSS para explorar falhas no DOM, HTML/Scripts injection, etc.

Em relação ao Javascript, os applets são mais lentos de processar alem de possuir espaço muito delimitado na página onde se executam

Essa parte de integração com os demais objetos da página realmente é um ponto fraco, muito fraco, quando utilizamos applets. Já a questão de velocidade de processamento, é fácil confundir o tempo de processamento gasto numa determinada funcionalidade com a quantidade de operações que cada funcionalidade realmente executa, mas como eu nunca fiz esse tipo de teste – de escrever um applet e um javascript que façam a mesma coisa – não irei muito além, apesar de não acreditar que possam haver diferenças tão grandes, afinal, tudo é executado no cliente, com os mesmos recursos.

todos os recursos são feitos sem a utilização de Applets (com eufemismo – isso não tem no site :D), os sistemas são baseados principalmente no AJAX, o que garante velocidade e segurança, além de que não é necessária a instalação da JVM na máquina do cliente

Pois é, antes que arremessem as pedras, não estou aqui defendendo o uso de applets frente a componentes Ajax, muito pelo contrário, eu já trabalhei bastante com applets e sei o quanto é chato, em todos os aspectos, e também já trabalhei, trabalho e pretendo trabalhar por um bom tempo com componentes Ajax bem escritos, a razão pela qual escrevi este post foi para, de certa forma, criticar o modo com que foi exposto o motivo para usar Ajax, não acho que seja necessário dizer: “- Uso Ajax pois Applets são lentos, inseguros, gordos e feios.”; afinal de contas, não é bem assim.

Atualizando a casa

Semanas sem postar nada, estamos aí de novo. Vou tentar me lembrar dos últimos ou pelo menos de alguns dos últimos acontecimentos desse tempo longe do blog e fazer um resumo, ou pelo menos algo semelhante a um.

  • EJES: Bom, a última coisa que postei no blog foi sobre o início do II EJES, que foi realizado nos dias 30 e 31 de agosto. O evento correu bem e teve tudo que todos eventos “normais” sempre tem, desde alguns imprevistos com palestras/palestrantes até brindes legais, sorteios e tudo mais, e graças ao forte apoio e empenho do Victor Pinto (coordenador do ESJUG) tudo foi contornado e conseguimos realizar o evento sem maiores problemas. E por fim, mas não menos importante, tivemos a presença do Shoes no último dia, encerrando as apresentações com uma palestra muito, muito boa: “Introduzindo Agilidade Eficiência“. Agora só no ano que vem :D
  • Palestra: Entre as chatas ótimas viagens, consegui arrumar tempo para atender um convite para fazer uma palestra de apresentação e introdução ao Java na Doctum, faculdade de Guarapari (cidade das praias boas) que fica bem pertinho de Vitória. Achei que foi bem legal lá e espero que o pessoal tenha gostado também.
  • WTF: Dar manutenção em qualquer sistema é sempre uma aventura, e às vezes encontramos algumas coisas, humm, hamm, digamos, horripilantes. Algo como isso por exemplo:

[code]System.gc();
System.gc();
System.gc();[/code]

Será que com um “toc toc toc” desses o GC se anima a rodar? hehehe

  • WTF2: Desde muito tempo que sempre recebo alguns pedidos um tanto quanto “folgados” por e-mail, mas esses dias recebi um que acho que superou muitos dos outros que já recebi algum dia… O pior é que tive que responder.

Encontrei os teus dois trabalhos, do jantar dos filosofos e do barbeiro dorminhoco com a implementação em java, como ainda estamos aprendendo C++ ficaria muito grato se pudesse disponibilizar o codigo em C++ para linux, para meu email.

email: [email]

Desde ja agradeco pela atenção.

  • Sem muito a fazer: Pois é, apesar de sempre ter coisas na lista de pendência, de sempre ter um draft a se terminar, um e-mail a enviar, sempre temos um momento vago (não sei como isso é possível, mas acontece), Achei em algum lugar (algum blog ou fórum que infelizmente esqueci) o link de um site e fiz um teste para saber que linguagem de programação eu sou, não foi muita novidade, mas deu no deu:

  • Curso de RoR: Aproveitando o espaço, vou divulgar (se é que posso chamar isso de divulgação) o curso de Ruby On Rails que será realizado em Porto Alegre, pela Tech Office IT, empresa do Urubatan.
  • JustJava: E por fim estou preparando o material para a minha apresentação no JustJava deste ano, vou tentar fazer alguns resuminhos e postar aqui no blog.

II Encontro de Java do Espírito Santo vai começar

Não é hoje, ainda, mas amanhã daremos início ao II Encontro de Java do Espírito Santo (II EJES), realizado junto ao VII ERI. Amanhã teremos a abertura do II EJES com um tutorial sobre Introdução ao Java. Eu serei o responsável pelas apresentações do tutorial de Java ME na quinta-feira de noite e pela palestra de Web2.0 e Ajax na sexta-feira de noite e logo após teremos a apresentação do Shoes, Introduzindo Agilidade.

A grade completa está aqui.

Ohloh

Um serviço muito legal, uma idéia simples que foi implementada de forma bem interessante. O Ohloh.net é uma comunidade que conecta as pessoas através de seus projetos Open Source. Mais um orkut-like? Pois é, é sim, mas este é interessante, pois pesquisamos, navegamos e encontramos as pessoas através de projetos que já trabalhamos, que já usamos ou que apenas admiramos.

Como o Ohloh funciona? Ele baixa as alterações no repositório do seu projeto (como guest), analisa as alterações, gera métricas e diversas informações úteis sobre o seu projeto e disponibiliza isso em sua comunidade. Com isso, ele te da possibilidades de avaliar projetos (Stacks), associar a sua conta do Ohloh com um determinado usuário num determinado projeto, isso associa com o seu usuário do Ohloh todas as informações do usuário do repositório do projeto, ou seja, quantidade commits, tempo de participação no projeto, quantidade de tecnologias que você conhece e o tempo de experiência com cada uma, com essas informações ele gera métricas importantes sobre o perfil dos desenvolvedores. Você também pode indicar um amigo para se associar com um determinado usuário de um projeto e avaliar também as pessoas, com um sistema de indicações feitas e recebidas chamadas de Kudos. Existe o KudoRanking (tinha que haver algum tipo de competição pra animar as pessoas, ham!?) por enquanto a minha classificação em Kudos é essa:

ohloh profile for jeveaux

Entre e participe você também: www.ohloh.net