sábado, 17 de maio de 2008

Wrappers

Talvez você já tenha se deparado com inúmeras bibliotecas comuns em C++ que ficam facilmente disponíveis em outras linguagens e scripting languages como Java, Ruby, Python e várias outras. Um exemplo bem comum é a JOGL (https://jogl.dev.java.net/), que é um wrapper para Java da OpenGL. A forma como a JOGL foi desenvolvida é extremamente interessante, visto que produziu-se a GlueGen (https://gluegen.dev.java.net/) para automatizar o processo de binding.
Para justificar o grande números destas bibliotecas, ao ler sobre a GSL (GNU Scientific Library) descobri que a maneira sugerida para criar-se wrappers é através do utilitário SWIG (Simplified Wrapper and Interface Generator). O site do SWIG (http://www.swig.org/) tem tutoriais mostrando como gerar-se uma dll para ser usada em Java, por exemplo, com pouquíssimas linhas de código e execução da ferramenta. Há varios exemplos de bindings em Perl, PHP, Python, Tcl, Ruby, C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), Java, Lua, Modula-3, OCAML, Octave e R.
Fica aí a dica para quem quiser desenvolver em uma linguagem deixando o legado disponível para todas as demais :)

Nenhum comentário: