Apple abre código da Linguagem Swift

Num movimento que representa uma mudança significativa para a Apple e para a indústria de TI ela abriu o código de sua linguagem de programação Swift em dezembro ultimo.

A Apple lançou o Swift inicialmente apenas para iOS/watchOS/tvOS (iPod, Apple Watch, iPhone, iPad, Apple TV) e para OSX (linha Mac). Ao abrir o código da linguagem a Apple está preparando o caminho para Swift ser executado em todos os tipos de máquinas, incluindo servidores com Linux, smartphones baseados no sistema operacional Android e tablets baseado no sistema operacional Windows Phone, da Microsoft.

A Apple criou um site http://Swift.org e vai compartilhar o código fonte através do repositório no GitHub. Ela também criou um ecosistema com uma ampla gama de ferramentas. a) Compilador Swift que poderá ser executado no Linux, além do Mac OSX; b) Gerenciador de pacotes para Swift;

A Apple não portou o Swift para Android ou Windows Phone, porém o código que lançou deve permitir que a comunidade open source construa software que rode potencialmente, em qualquer outro sistema operacional. Codificadores serão motivados a fazê-lo porque Swift já provou ser muito eficaz, segura e produtiva. Swift é significativamente mais fácil de aprender e usar do que Objective-C, e fornece a mesma eficiência. Empresas de grande porte como Twitter, Yahoo e LinkedIn já estão usando a nova linguagem em aparelhos da Apple e várias startups, já estão de olho nas formas de executar a linguagem em outras máquinas.

As máquinas Linux são usadas tanto nos grandes servidores e Farms das maiores empresas de tecnologia (Google, Facebook, Uber, Airbnb, etc.) como nos smartphones Android. Desta forma é muito bem vinda esta noticia de abertura da Linguagem Swift.

Em breve veremos Aplicações Swift rodando nos maiores Data Centers do planeta.

Para comemorar este fato eu criei uma imagem Docker que pode ser obtida em hub.docker.com/r/dockerbrasil/swift-2_2

Swift open source

Deixe seu nome e e-mail para que eu possa enviar cupons de desconto para o curso sobre Docker

Java 9 no Docker – Java Playground com REPL

A abordagem adotada aqui, com uso de contêiner Docker, foi motivada pela preservação do ambiente Java existente no computador Host já que instalar uma versão Java 9 onde já existe outra versão do Java, tal como o Java8, pode deixar o ambiente instável, criando problemas para o Desenvolvedor ou SysAdmin.

Criando ou Obtendo a imagem Docker

Criando

cd ~/Desktop/Development
git clone git@github.com:joao-parana/java-jdk9.git
cd java-jdk9
docker build -t parana/java-jdk9 .

Obtendo

Senão NÃO desejar fazer o build você poderá baixar direto a imagem do Docker Hub

docker pull parana/java-jdk9

Sessão do JShell

Para termos a disposição uma sessão do JShell, basta executar o Contêiner e invocar a JShell

docker run -i -t --rm parana/java-jdk9
jshell

Você verá uma mensagem parecida com esta abaixo

Jan 01, 2016 12:28:09 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
|  Welcome to JShell -- Version 9-internal
|  Type /help for help

E um prompt assim:

-> 

Agora podemos digitar código Java diretamente na console. Não exibirei o prompt abaixo para simplificar o uso dos comandos. Em vez disso colocarei o código Java e os comandos JShell em fonte de tamanho fixo.

import java.util.stream.*
IntStream.range(0, 10).map(x->x*x).forEach(System.out::println)
/save script-01.repl 
/exit

Voltamos a Bash e podemos listar os arquivos e exibir o conteudo de script-01.repl

ls
script-01.repl
cat script-01.repl 
import java.util.stream.*;
IntStream.range(0, 10).map(x->x*x).forEach(System.out::println)

Voltamos a invocar a JShell e digitar comandos Java ou comandos JShell (estes que são precedidos pelo caracter / )

Experimentemos os comandos /?, /vars e /methods

jshell
System.out.println("Agora interativamente")
/open script-01.repl 
/?
/methods

O método printf já vem definido para facilitar o uso da console REPL

printf("Oi %s", "Mundo")
int pi = 3.1416
float pi = 3.1416
float pi = 3.1416f
/vars

Experimentando os comandos /imports, /vars e /reset

/imports
/vars
/reset

Usando o comando /list para listar o código Java no contexto atual

/list

Obtendo o Histórico de comandos digitados até o momento

/history

É possível modificar o nível de LOG na console REPL do JShell com o comando /feedback

-> /feedback ?
|  Follow /feedback with of the following:
|    off       (errors and critical output only)
|    concise
|    normal
|    verbose
|    default
|  You may also use just the first letter, for example: /f c
|  In interactive mode 'default' is the same as 'normal', from a file it is the same as 'off'

O conteúdo mostrado pelo comando /? lista todas as possibilidaes de uso do JShell. Veja abaixo

Type a Java language expression, statement, or declaration.
Or type one of the following commands:

/list [all]                      -- list the source you have typed
/seteditor           -- set the external editor command to use
/edit                -- edit a source entry referenced by name or id
/drop                -- delete a source entry referenced by name or id
/save [all|history|start]  -- save:  - current source;
                                          all - source including overwritten, failed, and start-up code;
                                          history - editing history;
                                          start - default start-up definitions
/open                      -- open a file as source input
/vars                            -- list the declared variables and their values
/methods                         -- list the declared methods and their signatures
/classes                         -- list the declared classes
/imports                         -- list the imported items
/exit                            -- exit the REPL
/reset                           -- reset everything in the REPL
/feedback                 -- feedback information: off, concise, normal, verbose, default, or ?
/prompt                          -- toggle display of a prompt
/classpath                 -- add a path to the classpath
/history                         -- history of what you have typed
/setstart                  -- read file and set as the new start-up definitions
/help                            -- this help message
/?                               -- this help message
/!                               -- re-run last snippet
/                            -- re-run snippet by id
/-                            -- re-run n-th previous snippet

Supported shortcuts include:
       -- show possible completions for the current text
Shift- -- for current method or constructor invocation, show a synopsis of the method/constructor

Deixe seu nome e e-mail para que eu possa enviar cupons de desconto para o curso sobre Docker