MAUI - Antigo XAMARIN

O que é ?

MAUI é a sigla para Multplatform Application User Interface e é uma tentativa de criar uma 'linguagem de programação ' unificada para todas as plataformas ( sistemas operacionais) do mercado, como IOS, Android, Windows entre outras. Note que não é web, webview, html, javascript nem nada disso, o código gerado é compilado nativo da plataforma.

As grandes empresas se reuniram e criaram 'recursos' (APIs, dlls, svgs entre outros recursos) que permite, por exemplo, se é necessário exibir um botão na interface do usuário elas 'criaram' um padrão, muito parecido entre as plataformas, com os mesmos recursos, parâmetros e visual. Disse o mais próximo possível na plataforma mas nem sempre tudo funciona redondinho como prometeram. Portanto temos uma 'API' para o Windows, outra para a APPLE (Catalyst - IOS) e o Android. Ao compilar o projeto a IDE converte tudo para elementos que a API do sistema destinatário possa entender.

Detalhes

Note que todo desenvolvimento é feito como um desenvolvimento WEB só que ao invés de chamar um browser ou web view é chamada a biblioteca nativa do sistema de destino.

Quando estamos programando em MAIU-XAMARIN fazemos um código apenas que poderá rodar em qualquer plataforma. Na compilação é que definimos a plataforma de destino. Sendo assim uma aplicação MAUI tem pastas separadas para cada plataforma porque o código gerado é diferente para cada uma delas.

No exemplo acima o botão é criado em XAML que a IDE (Visual Studio ou semelhante) se encarrega de associar o botão ao elemento ( ou objeto ) no código nativo. Ao criar um 'evento' no botão é criado um 'script' ( tipo onclick ) e o código por traz do botão é gerado em C# ( no MAUI ) mas é convertido para o padrão da plataforma no momento da compilação e publicação.

Publicação

Feito o código vamos implantar' o projeto num sistema de destino, pode ser windows, apple ou android. Contudo temos grossas aspas a destacar neste processo.

A primeira é que a APPLE exige que você faça isso numa máquina da Apple, ou seja, não liberou para a Microsoft os direitos de produzir ou de utilizar sua 'interface de desenvolvimento' para os sistemas da Apple. Por isso, se você vai criar programas para a Apple vai precisar de um computador da Apple para rodar a aplicação, mesmo na depuração do programa. Sendo assim risco a apple do assunto desta página, deram um tiro no próprio pé.

Outro problema horrível ao trabalhar com o MAUI é a emulação de um sistema em outro sistema. Por exemplo minha aplicação é para Android e eu estou utilizando uma máquina windows para o desenvolvimento. Sendo assim é carregada um emulador do Android ( feito pela própria Google ) e é horrivelmente pesado, como rodar um computador dentro do seu computador...essa api nativa é muito grande e pesada e ao rodar a API tudo que for memória e CPU, se necessário, o emulador vai comer do seu computador. Sendo assim desenvolver para MAUI num laptop só se for num parrudo, muito avantajado em CPU e memória especialmente.

Impressões Finais

O grande 'lance' do .NET MAUI é que ao invés de ter 3 equipes diferentes trabalhando no mesmo sistema em plataformas diferentes ( windows, adroid e apple) poderemos gerar um código que irá rodar em qualquer plataforma.

Posso garantir que não é o caso na atualidade e abaixo cito os principais problemas.

Problemas ainda não solucionados na Plataforma de desenvolvimento MAUI

1-Baixa abstração onde é importante. Abstração é o que a interface facilita o desenvolvimento da atividade para você e se você fica perdendo tempo em muitos detalhes praticamente insignificantes acaba tendo baixa produtividade no desenvolvimento. Por exemplo, você cria um link para ir de uma página para outra. Contudo ao retornar a página anterior e clicar novamente no mesmo link este já não funciona mais. Você tem que criar um 'recurso' para que funcione sendo que este recurso está disponível em qualquer browser ( histórico de navegação ) e em todas as outras plataformas que conheço funciona muito bem sem mais delongas.

2-Engessamento. Tudo é padronizado nessa plataforma de desenvolvimento . Se você quer um botão, é um padrão, se quer uma página para apenas exibir um conteúdo é um padrão, para exibir links, outro, para exibir barras de navegação, outro. O que isso faz, simplesmente você tem que carregar uma página padrão' e ficar adaptando ela para o que você deseja. Muitas vezes é facil mas outras é impossível, fica tão complexo que nunca mais você vai querer ver a página na sua frente.

3-Produtividade. Se você desenvolver uma aplicação para o windows via modo normal e via MAUI verá que o processo é extremamente demorado na compilação do MAUI, na execução etc. O MAUI só tem desvantagem em relação ao método de desenvolvimento original da plataforma.

Considerações finais

Acredito que o MAUI ainda está na fase embrionaria de sua geração e que tem muito a evoluir. Para mim parece a versão 1.0 do Java que só de olhar dava vontade de jogar fora. Não interessa só o visual, só a interface, só a programação e a ferramenta de desenvolvimento. O que importa é o conjunto todo que possibilita em alta produtividade de desenvolvimento sem esquecer na facilidade de futuras implementações ou manutenção da aplicação a longo prazo.