Rodrigo Kumpera Weblog

Meus achados sobre tecnologia

Levando I/O escalavel para mortais

September 22nd, 2006 · No Comments

Esses dias eu tive uma idéia de como usar java NIO de forma facil. Essa API permite programar usando I/O não bloqueante com sockets e multiplexação. Ambas as técnicas são muito dificeis de serem usadas. Eu pensei em usar um pouco de mágicas de engenharia de bytecodes e introduzir continuations em Java. Sim, é perfeitamente possível fazer isso.

Existem artigos que explicam como é possivel transformar um trecho de código para permitir utilizar continuations. A grosso modo, a mecânica é bem simples, introduzimos um parâmetros em todas funções que é a continuação corrente e nela está embutido o conhecimento necessário para determinar o fluxo de execução a ser tormado. Esse texto fala bem disso, mostrando como fazer isso em python.

Permitir continuações resolve somente mentade do problema, a outra é introduzir uma API que opere de modo bloquante, mas por traz dos panos esteja usando NIO e continuations. Essa parte eu ainda não me decidi, se simplesmente deve ter cara de um stream normal, ou se permitir que uma interface seja transformada em um autômato finito. Essa, por sinal, seria outra maneira de programar com a linguagem, descrevendo a gramática dos dados recebidos e permitindo que ela fosse compilada para código que utilize NIO de forma não bloqueante.

Eu gostaria de seguir com a idéia de transformar código Java e não ter uma linguagem separada, pois essa parece ser a alternativa que garantiria a melhor produtividade ao desenvolvedor, vide como o Google Web Toolkit faz – ele recompila tua aplicação em javascript, por que não recompilar então em um autômato ou passar para CPS? Certa vez escrevi um protótipo da idéia de um um DFA, vou ver de desenterro e dou um tapa nele, quanto a continuations, alguém sabe em qual estado está o RIFE Continuations?

Tags: Programming · concurrency · java · network programming

0 responses so far ↓

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment