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.