Codename One é um ambiente multiplataforma móvel para desenvolvedores Java e Kotlin. Ele pode compilar bytecode Java para executáveis nativos do sistema operacional (iOS, Android, UWP etc.). É uma plataforma móvel completa com máquinas virtuais, simulador, ferramentas de design (tema visual/construtor/css), integrações IDE, portas para vários sistemas operacionais e muito mais. Ele fornece acesso total ao código do sistema operacional nativo subjacente (por exemplo, Objective-C, C#, Dalvik/ART) por meio de uma abstração portátil que permite a reutilização de 100% do código.
Ao contrário dos emuladores que você pode ver no Android etc. Codename One usa um simulador. Isso significa que ele inicia rapidamente, mesmo durante a depuração. Você pode aproveitar os recursos do IDE, como recarga de código ao vivo para modificar o código em tempo de execução, etc.
Isso significa ciclo de depuração mais rápido e processo de desenvolvimento mais rápido!
Escolha entre uma grande seleção de “skins” de dispositivos para ver como seu aplicativo ficará em dispositivos específicos. A capa leva em consideração fatores como resolução e densidade do dispositivo para fornecer uma apresentação perfeita em pixels do seu aplicativo, como apareceria no dispositivo real. Alternar entre skins de dispositivos é quase instantâneo.
Você pode editar e contribuir com skins em seu próprio projeto de código aberto aqui.
Interaja com as APIs do seu aplicativo em tempo de execução usando o Groovy Console interativo. Inspecione o estado do aplicativo ou experimente as alterações enquanto o aplicativo estiver em execução.
Isso permite investigar problemas e experimentar sem sequer a pequena sobrecarga de recompilação.
O Simulador permite que você aproveite o recurso "Recarregar classes alteradas" no IntelliJ (denominado "Aplicar alterações de código" no NetBeans) para que as alterações feitas em seu código-fonte Java sejam aplicadas imediatamente ao seu aplicativo já em execução no simulador.
Observe que isso geralmente é superior ao console interativo, mas há limitações, como a capacidade de adicionar métodos/alterar a estrutura do código. Esses limites não se aplicam ao console interativo!
Quando você faz alterações na folha de estilo CSS do seu aplicativo, as alterações são refletidas instantaneamente no simulador. Isso inclui alterar seu tema, imagens, fontes, etc. Todas as alterações são atualizadas instantaneamente ao salvar, sem necessidade de recarregar/atualizar ou qualquer coisa do tipo!
Isso torna o processo de estilização de um aplicativo extremamente fácil e rápido.
Use o poderoso inspetor de componentes para navegar na hierarquia de componentes de IU em seu aplicativo. Essa ferramenta torna mais fácil descobrir de onde vem esse preenchimento extra ou por que algo simplesmente não está alinhado como você gostaria. Você também pode alterar o UIID (seletor) de um componente em tempo de execução para ver como ele afeta a UI e ver qual componente na hierarquia é mapeado para um elemento na árvore de componentes (equivalente ao DOM).
Veja todas as conexões de rede que seu aplicativo faz usando o Network Monitor. Essa ferramenta valiosa é útil quando você tenta descobrir por que uma solicitação HTTP não está funcionando para você. Verifique os cabeçalhos e corpos da solicitação e da resposta. Você pode até mesmo limitar a rede para simular uma conexão de rede lenta.
Use a ferramenta Test Recorder para registrar testes de unidade para seu aplicativo. Assim que você iniciar a gravação, suas interações serão salvas em um teste de unidade que poderá ser reproduzido posteriormente para verificar se o comportamento permanece correto.
Você pode então conectar os testes registrados ao seu processo de CI, incluindo testes automatizados no dispositivo.
Codename One é um projeto maduro de código aberto com raízes que remontam à Sun Microsystems (2006), onde um de seus principais componentes subjacentes foi desenvolvido e de código aberto. Você pode aprender sobre sua história e como funciona neste vídeo.
Os aplicativos Codename One funcionam como aplicativos nativos, porque são aplicativos nativos reais.
Eles são compilados estaticamente em binários nativos usando as ferramentas de construção oficiais da plataforma de destino.
Em plataformas que não suportam Java nativamente, como iOS, o bytecode JVM do aplicativo é primeiro transpilado para um formato que as ferramentas de construção nativas aceitarão. No iOS, o bytecode JVM do aplicativo é transformado em código-fonte C, em um projeto xcode real. No Android, como o Java é suportado nativamente, tal transformação não é necessária. O jar do aplicativo é incluído diretamente em um projeto Gradle do Android Studio, que pode ser criado diretamente usando as ferramentas de compilação do Android SDK.
Você pode clicar na imagem para ampliá-la ou visualizar uma versão em PDF aqui.
DICA: No momento, estamos fazendo a transição para o Maven e criamos um método novo e mais simples para criar projetos. Confira https://start.codenameone.com para começar agora.
Há muito para saber sobre Codename One, este vídeo de 3 minutos oferece uma visão muito concisa de alto nível. Observe que há vídeos semelhantes para Eclipse, IntelliJ/IDEA e Netbeans aqui:
Codename One pode ser estendido facilmente usando bibliotecas de terceiros que podem incluir código de sistema operacional nativo. Há uma extensa lista dessas bibliotecas (cn1libs) aqui. A lista de bibliotecas é gerada automaticamente com base neste projeto do GitHub.
Você pode aprender mais sobre o Codename One e seus recursos no site principal e ver uma extensa lista de documentação e tutoriais aqui.
Você pode começar com o binário e a visão panorâmica na seção de download. Links adicionais importantes são:
NOTA: Estamos em processo de migração do Ant para o Maven, o que simplifica o processo de construção a partir do código-fonte. Consulte Ant Quick Start para obter instruções de construção herdadas do Ant.
A configuração é abordada em detalhes neste artigo e no vídeo.
IMPORTANTE: Construir Codename One requer JDK 8 , atualmente. Você não pode usar o JDK 11, pois alguns submódulos devem usar -source 1.5
e -target 1.5
para manter a compatibilidade retroativa com partes do conjunto de ferramentas.
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
Isso irá construir e instalar o Codename One em seu repositório Maven local. Este processo pode demorar um pouco, pois baixa automaticamente dependências com tamanho de aproximadamente 1 GB.
Para construir os projetos de arquétipo a partir do código-fonte, você deve verificar o repositório cn1-maven-archetypes e compilá-lo também:
git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install
Agora que o Codename One está instalado em seu repositório Maven local, você pode usar essa versão em um projeto em vez da versão de lançamento. Um novo projeto de teste pode ser gerado rapidamente com o inicializador Codename One.
Após baixar e extrair o projeto, abra seu arquivo pom.xml e procure pelas propriedades <cn1.version>
e <cn1.plugin.version>
. Em seguida, altere-os para apontar para a versão que foi instalada em seu repositório maven local por mvn install
. A versão construída localmente será geralmente uma versão SNAPSHOT (por exemplo, 7.0.21-SNAPSHOT).
Obtendo e construindo fontes
$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant
Executando testes unitários
$ ant test-javase
Executando Amostras
O diretório Samples contém um conjunto crescente de aplicativos de amostra. Esses exemplos não pretendem ser demonstrações, mas sim exemplos de como usar APIs.
Você pode iniciar o aplicativo executor de amostra na linha de comando usando:
$ ant samples
A VM iOS do Codename One é bastante única e também de código aberto. Você pode ler mais sobre isso em sua pasta dedicada neste repositório.
ParparVM é uma VM exclusivamente conservadora que traduz bytecode Java em código C. Fornecendo assim desempenho e acesso nativos, ao mesmo tempo que fornece uma rede de segurança. Esta abordagem é exclusiva do Codename One e é essencial para compatibilidade futura!
A Apple tem a tendência de mudar as coisas abruptamente, por exemplo, suporte a 64 bits, bitcode etc. Como o ParparVM gera um projeto Xcode padrão, não foram necessárias alterações de código para nenhuma dessas mudanças tectônicas. É como se você mesmo tivesse codificado o projeto manualmente!
Você pode até abrir o projeto resultante no xcode e depurá-lo ou criar um perfil dele diretamente no dispositivo iOS. Isso fornece muitas informações úteis, como pilhas de chamadas legíveis e rastreamento de desempenho valioso/acionável...
Os compiladores tradicionais falham nesses casos.
Codename One mantém um fork do iKVM que é uma JVM para CLR. Esta porta modificada nos permite executar a implementação da Plataforma Universal do Windows do Codename One nativamente em dispositivos Windows 10.
Fornecemos suporte no StackOverflow quando você marca usando codenameone, você pode perguntar qualquer coisa lá e tentamos ser bastante responsivos. O link StackOverflow também serve como um excelente FAQ voltado para a comunidade, uma vez que literalmente mapeia as perguntas dos usuários em respostas.
Codename One tem um grupo de discussão onde você pode postar perguntas. Porém, devido à natureza desse grupo, tentamos limitar as discussões sobre a fonte. O fórum de discussão destina-se a um uso mais simples e hacks de código-fonte/compilação nativa mais complexos podem criar ruído lá.
Os agradecimentos vão para essas pessoas maravilhosas (chave emoji):
beazl-peter | liannacasper | sergeyCodenameOne | Thomas H99 | Javier Antón | Diamante | Francisco Galgani |
kutoman | Ramséstom | Maaartinus | Durank | ddyer0 | carlos verdier | Roberto Edelmann |
Adalberto393 | Steve Hannah | digappsepp | Pavneet Singh | vprise | JrmyDev | Terry Wilkinson |
João Hansen | Yaacov Gesher | Michael Munch | Saeder | Miguel Munoz | Ahmed Aboumalwa | Fábio |
Piotr | Baía de Matias | Sanny Sanoff | McSym28 | Eric Leong | Dia de Davi | Nick Preço |
Ahnaf bin Azad | Otávio E Anino | Espinha Yash | Nina | FercueNat | ImmediandoSrl | davideprimasc |
DB107 | Ikko Eltociear Ashimine |
Este projeto segue a especificação de todos os contribuidores. Contribuições de qualquer tipo são bem-vindas! ❤️