# SuperWaba

SuperWaba é uma linguagem de programação utilizada para desenvolvimento de aplicações para aparelhos móveis como telefones celulares e aparelhos que comportam sistemas como PalmOS, Windows, Windows Mobile, WindowsCE e SymbianOS. O SuperWaba se baseia e estende o Waba. A linguagem do SuperWaba é um versão reduzida da definida em Java. Existe semelhança com o Java, também é usada uma máquina virtual cuja implementação é específica de cada aparelho onde é instalada. Diferentemente do Java, SuperWaba não suporta o modelo de sincronização e, como tal, não pode ser considerada verdadeiramente tecnologia Java. SuperWaba cumpre um papel semelhante à tecnologia J2ME. A diferença fundamental é sua maior integração nativa com os aparelhos moveis e um modelo de API mais pragmático que a API J2ME.

## Características

O SuperWaba é uma plataforma que possui uma implementação própria de linguagem (com sintaxe semelhante ao Java), máquina virtual, formato de arquivos de classes e um conjunto de classes. Além disso, ele permite o uso de ferramentas Java no desenvolvimento.
Dentre as diversas características, podemos notar o suporte para SQL, leitor de código de barras, protocolo GPS, protocolo HTTP, tratamento de imagens JPEG, PNG, GIF e PNG, e suporte para compressão de dados.
Podemos comparar o SuperWaba ao .NET Compact Framework em recursos (exceto linguagem), porém o SuperWaba é ainda mais portável, rodando em várias plataformas como comentado na seção anterior.
Somente podemos compará-lo com o J2ME em termos de sintaxe da linguagem utilizada, pois enquanto o J2ME usa a linguagem Java o SuperWaba possui uma linguagem de sintaxe similar ao Java, porém não podemos comparar os dois em termos de recursos e portabilidade, pois o SuperWaba roda em dispositivos em que o J2ME não possui máquina virtual, sem considerar que o SuperWaba possui muito mais recursos que o J2ME.

### Programação

O SuperWaba estende uma linguagem parecida com o Java, porém, com vários recursos reduzidos devido ao processamento limitado dos dispositivos moveis, existem alguns pontos a serem destacados:
* As classes do SuperWaba estão contidas no pacote waba, embora a maioria possua o mesmo nome que as classes java, são implementadas de forma diferenciada.
* Embora o SuperWaba seja semelhante ao Java, o compilador não aceita classes Java, ocorrendo um erro no processo de compilação.
* Os tipos de variáveis do SuperWaba são iguais aos tipos do Java, todos ocupam mesmo espaço de memória e são caracterizados iguais.
* Uma exceção muito crítica em comparação ao Java, é a variável String, que não são aceitos alguns métodos como o "split".
* As maiores reduções encontradas em comparação ao java é em questão ao pacote "útil" do Java, onde no SuperWaba a única collections existente é o "Vector" não existindo List, Map, Set e outras.

### Ferramentas

IDE - Eclipse (IDE)
Plugins de IDE - SuperWaba Kit
Compiladores - Warp e Exegen

### Compiladores

O ponto crucial do SuperWaba é a compilação, feita pelo Warp que gera o arquivo .pdb responsável por conter o código do programa, e o Exegen que gera os arquivos de execução de acordo com a plataforma.
Existe uma maquina virtual para cada plataforma (PalmOS, WindowsCE, etc..), tendo que utilizar os arquivos compilados de acordo com tal maquina virtual.
O processo de compilação ocorre sob um arquivo JAR que é gerado pela interpretação de um arquivo XML que contem as informações necessárias para o procedimento:
Existem dois procedimentos a serem tomados para compilação:
Desta forma ocorrerá a compilação para todos os tipos de maquinas virtuais possíveis.

## Exemplo de Sintaxe

No SuperWaba não existe uma diferença muito grande em comparação ao java, a maior diferenção é a localização das classes para o pacote "waba", porém existem suas particularidades em questão da montagem de um sistema visual, abaixo está o modelo basico:

## Referencias Externas

* «Página oficial»
* Página oficial do TotalCross (em inglês)