# Binário universal

Um binário universal (ing.: universal binary) é, em computadores da Apple, um tipo de arquivo executável ou um pacote de aplicativos que roda nativamente em computadores Macintosh (chamados atualmente apenas de Mac) baseados tanto em processadores PowerPC (RISC) da IBM como em x86 (CISC) da Intel.

## Transição inicial

O sistema de binário universal foi introduzido na Worldwide Developers Conference de 2005 para facilitar a transição dos computadores existentes baseados na arquitetura tradicional de PowerPC para computadores baseados em Intel, que estrearam nas lojas em 2006.
O primeiro sistema operacional a suportar Macs baseados em Intel foi o Mac OS X v10.4 Tiger. Entretanto nunca chegou a existir uma versão universal binária cliente dessa versão do sistema opeacional, apenas o Tiger Sever foi disponibilizada em um disco de DVD na versão v10.4.7. Enquanto a Apple vendia a edição Mac para PowerPC empacotado com Macs PowerPC e também vendia apenas o programa em si no varejo, separado do computador completo. A única forma do consumidor final obter o Tiger para Intel era adquirindo um computador Mac baseado em Intel, a Apple nunca chegou a disponibilizar para a venda a versão Tiger para Intel como software, separado do computador. Então, o primeiro sistema operacional disponibilizado ao consumidor final em binário universal foi, de facto, o Mac OS X v10.5 Leopard.

## Funcionamento

Binários universais tipicamente inclui ambas as versões PowerPC e x86 de um aplicativo compilado. O sistema operacional detecta um binário universal pelo seu cabeçalho, e executa o seção apropriada para a arquitetura em uso. Isso permite a aplicação rodar nativamente em qualquer arquitetura suportada., sem impacto negativo no desempenho. Xslimmer é um utilitário/programa usado para reduzir o tamanho de aplicativos removendo as porções do código que o sistema do usuário não usará.
Binários universais são usualmente maiores que binários monoplataforma, isso porque cópias multiplataforma são compiladas e precisa ser armazenado. porque cópias múltiplas do código compilada precisam ser armazenadas na unidade. O tamanho do binário universal resultante é normalmente muito maior e uma grande porção será de recursos não-executáveis que são compartilhadas entre as duas arquiteturas. Eles também não precisam de memória extra, porque só um das duas cópias é carregada para execução.
Já o Rosetta funciona como uma camada de emulação embutida em Mac OS X x86 para emular programas compilados apenas para PowerPC.

## História

A Apple utilizou anteriormente de uma técnica similar durante a transição de processadores 68k da Motorola para PowerPC em meados dos anos 1990. Esses executáveis de dupla plataforma eram denomiados "fat binaries" (termo em inglês para 'binário gordo'), uma referência ao enorme tamanhos desses arquivos. O NEXTSTEP, outro predecessor do Mac OS X, suportou o fat binary, logo um pacote de aplicações podia/pode rodar em múltiplas arquiteturas, incluindo x86 (Intel), Sparc (Sun Microsystems) e PA-RISC (Hewlett-Packard).

### Criação no Xcode

A partir da versão 2.1 do Xcode se permite a criação e compilação de arquivos executáveis em formato binário universal, como um novo recurso naquele lançamento.
O Xcode 2.4 levou o conceito de binários universais para mais além, por permitir que sejam criados binários de quatro arquiteturas (32 bits e 64 bits para ambos Intel e PowerPC), permitindo então a executável tirar total vantagens das capacidades do CPU de qualquer máquina Mac OS X.

## Aplicações em formato binário universal

Muitas empresas e desenvolvedores individuais têm provido atualizações para binários universais em seus produtos desde a WWDC de 2005. Em janeiro de 2008, a página da Apple lista mais de 7200 aplicativos universais.
Em 16 de Abril de 2007, a Adobe anunciou o lançamento do Adobe Creative Suite 3, a primeira versão versão da suite de aplicativos no formato binário universal.
A Março de 2008, todos os aplicativos high profile para Mac OS X foram convertidos ("portados") para o formato binário universal, incluindo QuarkXPress, Final Cut Studio da Apple, Adobe Creative Suite, Microsoft Office 2008 e tocador Shockwave (a partir da versão 11). Produtos não universais rodarão em Macs baseados em Intel (na maioria dos casos), mas com desempenho não otimizado, já que eles precisam se "traduzidos" no mesmo instante pelo programa de emulação Rosetta. Programas emulados ou "traduzidos" em tempo real pelo Rosetta se tornam lentos e não otimizados com perda considerável de desempenho, variando de acordo com a configuração do computador.

## Desvantagens e críticas

Como já supracitado, programas em formato binário universal são maiores, pois são compilados para ambos os processadores. Por exemplo, um programa simples acaba "inchando" quando o mesmo é binário universal, ou seja o usuário que o baixa pela internet acaba consumindo mais tempo, banda e espaço de armazenamento.

## Simbolismo

A Apple criou um símbolo gráfico para facilitar ao usuário a identificação de programas que são em formato binário universal.

## Referências e notas

* ↑ http://www.apple.com/br/universal/
* ↑ http://www.macnews.com.br/noticias/item/2006/11/rosetta-beneficiado-com-novo-core-2-duo
* ↑ http://guide.apple.com/universal/