
Mal da comunidade Java: Ao invés de utilizar as bibliotecas existentes em outras linguagens, criando apenas ports (JNI) para java, os desenvolvedores preferem re-implementar. Algo muito semelhate ao que a Microsoft faz: re-implementa tudo.
Todo o processamento gráfico 3D, 2D, além de carga e execução áudio, no Dot Net é feito sobre o Microsoft DirectX. Da mesma forma, toda a biblioteca para a criação de telas é o Windows Forms. Obviamente, DirectX e Windows Forms não funcionam no Linux, obrigando a galera do Mono a fazer malabarismos com OpenGL e GTK / QT / etc. No entanto, observe que a OpenGL é o básico do básico para trabalhar com gráficos 3D, e o DirectX oferece muito mais do que o básico. Por mais ativa e persistente que seja a comunidade do Mono, eles não conseguiriam recriar todo o suporte que o DirectX tem em Linux. Assim, apelaram para os ports, juntaram os melhores projetos, as melhores bibliotecas e disponibilizaram os mesmos recursos que existem no Windows, para Linux, com muito mais opções e liberdade para o desenvolvedor.
Veja, a primeira opção deles não foi recriar, foi portar. Exatamente o inverso do que a Microsoft e a Sun fazem. O resultado desta diferença é que, enquanto no mono temos diversas opções estáveis para desenhar interfaces, em java temos apenas uma, o Swing. Felizmente, aos poucos os ports de GTK, QT, WxWidgets para java ficarão maduros e estáveis (Sem esquecer do SWT que já é estável a muito tempo). A luta agora é contra a cultura de que só coisas feitas em Java são estáveis e portáveis.
Cheguei essa conclusão após pesquisar sobre formas de trabalho com OpenGL na Boo, onde encontrei o super poderoso Tao Framework para Mono. O Tao faz o port para Mono de:
Embora já existam ports destas libs para Java, poucas pessoas as utilizam. Na verdade, poucos desenvolvedores Java sabem que podem utilizar um port para uma lib em outra linguagem. A maioria nem considera esta opção. A verdade é que a maioria dos programadores Java tem medo dessas abordagens, eu diria até que medo do C + + (que é linguagem da maioria destas APIs).
Quando falei que o Netbeans é feio, uma pessoa disse que usar SWT seria voltar no tempo. Como se o Java fosse uma evolução, o que não necessariamente é verdade. SWT é tão portável, ou até mais portável que o Java. Quando falaram que poucos usam SWT, esqueceram de ver que o Eclipse é feito em SWT e até hoje é a IDE java mais utilizada em vários SOs. Outro me perguntou se as GUI Toolkit que citei rodavam em diversos SOs sem alterar nenhuma linha de código. Ora, a QT roda, sem altear nenhuma linha de código, em Windows, Linux, MacOS, Windows CE, Solaris, FreeBSD, HP-UX, AIX, Amiga e IRIX (Já ouviu falar em todos eles?) e se você alterar alguns detalhes ainda roda em Linux Embarcado. O GTK é usado por 27 linguagens, rodando em Windows, Mac e todos os Unix-based OS. Certamente foram muito mais testados do que o mero Swing, que as vezes não roda nem em Mac OS.
Fica aqui minha crítica aos javeiros puristas. Java não é a única solução. Há muita coisa pronta. Tirem os seus cabrestos e olhem para os lados. Até lá, não critiquem a Microsoft, vocês não são diferentes dela.
The following pages are talking about "Reconstruindo muitas Rodas":
Copyright © 2007 Vitor Pamplona | All Rights Reserved
Powered by Priki and design G. Wolfgang