Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Transcrição / Tradução do keynote da KotlinConf 2019
1
00:00:00,100 --> 00:00:07,000
[Música]
2
00:00:11,500 --> 00:00:13,500
Olá pessoal, bom dia!
3
00:00:13,500 --> 00:00:18,200
Caramba... 1.700 pessoas...
4
00:00:22,500 --> 00:00:26,500
Será que eu já vi tanta gente
em uma sala antes?
5
00:00:26,500 --> 00:00:28,500
Bem, talvez, mas nunca na KotlinConf
6
00:00:28,500 --> 00:00:30,200
Obrigado a todos por virem
7
00:00:30,200 --> 00:00:31,500
É maravilhoso estar aqui
8
00:00:32,800 --> 00:00:35,200
Hoje vamos falar sobre Kotlin
9
00:00:35,200 --> 00:00:39,200
E espero que seja uma abertura inspiradora
para os próximos dias
10
00:00:40,800 --> 00:00:43,500
Então vamos começar com...
11
00:00:44,300 --> 00:00:45,500
Números!
12
00:00:45,500 --> 00:00:48,200
Eu venho mostrando os
números de utilização
13
00:00:48,200 --> 00:00:51,000
em todo keynote de abertura
14
00:00:51,000 --> 00:00:53,200
Porque é algo que me ajuda
15
00:00:53,200 --> 00:00:55,200
a ter o sentimento de
16
00:00:55,200 --> 00:00:57,500
quem somos e como estamos indo.
12
00:00:58,000 --> 00:01:00,200
Vamos voltar alguns anos atrás
13
00:01:00,800 --> 00:01:04,200
Nós lançamos a versão 1.0 em 2016 e
14
00:01:04,700 --> 00:01:08,700
aquela versão foi usada
por cerca de 200.000 pessoas,
15
00:01:08,700 --> 00:01:10,000
o que é um número maravilhoso!
16
00:01:10,000 --> 00:01:14,200
é muito mais gente do que temos nessa sala,
o que é muita gente!
17
00:01:14,200 --> 00:01:16,500
E isso foi só o começo
18
00:01:16,500 --> 00:01:20,500
a propósito, quando digo que foi usado
por essa quantidade de pessoas
19
00:01:20,500 --> 00:01:24,000
significa pessoas que, de fato,
abriram um arquivo no editor
20
00:01:24,000 --> 00:01:26,500
e modificaram alguma coisa.
21
00:01:27,000 --> 00:01:29,500
Então, talvez elas não tenham colocado
isso em produção
22
00:01:29,500 --> 00:01:31,200
mas elas fizeram alguma coisa
com código Kotlin
23
00:01:32,000 --> 00:01:35,200
então a versão 1.1 teve 500.000 usuários
24
00:01:35,200 --> 00:01:37,500
e a 1.2 mais de 2 milhões
25
00:01:37,500 --> 00:01:40,200
e a 1.3, que é a versão atual
26
00:01:40,200 --> 00:01:43,500
já tem mais de 4 milhões de usuários
27
00:01:43,500 --> 00:01:45,800
o que é um número impressionante.
28
00:01:46,000 --> 00:01:49,500
Mas, o que é mais
impressionante pra mim
29
00:01:49,500 --> 00:01:52,500
é que se passaram menos de 4 anos
30
00:01:52,500 --> 00:01:56,200
desde o lançamento da versão 1.0
em fevereiro de 2016
31
00:01:56,200 --> 00:01:59,500
e hoje já temos mais de 4 milhões de
usuários no último ano
32
00:02:00,000 --> 00:02:02,200
Isso me impressiona muito,
e é algo que me inspira também.
33
00:02:03,000 --> 00:02:07,500
Mas, por que devemos nos preocupar
com os números de utilização?
34
00:02:07,500 --> 00:02:12,200
Isso é uma métrica,
é só um número qualquer
35
00:02:12,200 --> 00:02:16,200
Eu me preocupo é em fazer o Kotlin
um grande produto
36
00:02:16,200 --> 00:02:18,200
torná-lo uma ferramenta que todo
mundo gosta
37
00:02:18,200 --> 00:02:21,200
que ajuda as pessoas, etc.
38
00:02:21,200 --> 00:02:23,500
Então por que devo me preocupar
com o número?
39
00:02:24,000 --> 00:02:28,200
bem, na verdade é só um tipo
de validação pra mim.
40
00:02:28,500 --> 00:02:31,500
Acredito que, se as pessoas gostam
do produto,
41
00:02:31,500 --> 00:02:34,200
se elas acham a linguagem útil,
42
00:02:34,200 --> 00:02:37,500
se elas querem resolver seus
problemas com ela,
43
00:02:37,500 --> 00:02:39,200
então ela é boa
44
00:02:39,200 --> 00:02:42,400
e ver essa quantidade de pessoas
interessadas no Kotlin
45
00:02:42,400 --> 00:02:44,500
significa que estamos fazendo
um bom trabalho
46
00:02:44,500 --> 00:02:46,500
nós, eu digo todos nós,
47
00:02:46,500 --> 00:02:48,800
todo mundo na comunidade Kotlin.
48
00:02:48,800 --> 00:02:53,700
Se olharmos nos nossos
lançamentos anteriores,
49
00:02:53,700 --> 00:02:57,500
começamos relativamente
pequenos, não é?
50
00:02:57,500 --> 00:03:01,500
Inicialmente pensamos Kotlin
como uma nova linguagem para JVM
51
00:03:01,500 --> 00:03:06,200
como algo pensado para modernizar
o ecossistema da JVM
52
00:03:06,200 --> 00:03:10,500
a 1.0 foi JVM e Android,
e um pouco de JavaScript experimental
53
00:03:11,500 --> 00:03:15,400
Então estabilizamos JavaScript e
introduzimos Coroutines experimental
54
00:03:15,400 --> 00:03:20,000
E adicionamos multi-plataforma como
uma feature experimental também
55
00:03:20,000 --> 00:03:22,500
então estabilizamos as coroutines
56
00:03:22,500 --> 00:03:26,200
e Kotlin Native continuou andando
e atingiu o beta na 1.3.
57
00:03:26,200 --> 00:03:29,000
Agora estamos olhando para
a versão 1.4
58
00:03:29,000 --> 00:03:30,200
é possível ver a progressão
59
00:03:30,200 --> 00:03:32,500
estamos ampliando o escopo
60
00:03:32,500 --> 00:03:34,500
estamos cobrindo mais casos de uso
61
00:03:34,500 --> 00:03:36,000
e isso é o que me faz sentir que
62
00:03:36,000 --> 00:03:39,200
o Kotlin tem amplitude
em termos de escala,
63
00:03:39,200 --> 00:03:41,000
em termos de relevância,
64
00:03:41,000 --> 00:03:43,400
em termos de interesse
dos os usuários.
65
00:03:47,000 --> 00:03:49,200
Kotlin está se tornando
nem uma linguagem,
66
00:03:49,200 --> 00:03:50,500
nem um conjunto de ferramentas,
67
00:03:50,500 --> 00:03:51,500
nem uma palavra,
68
00:03:51,500 --> 00:03:53,500
mas um ecossistema
69
00:03:53,500 --> 00:03:57,200
e queremos que seja um
ecossistema aberto
70
00:03:57,200 --> 00:04:00,200
que seja acolhedor para todos
71
00:04:00,200 --> 00:04:01,700
o ecossistema é aberto para vocês
72
00:04:01,700 --> 00:04:04,800
ele é aberto para qualquer um
que queira estender o Kotlin
73
00:04:04,800 --> 00:04:08,100
para quem queira construir algo
em cima do Kotlin
74
00:04:08,100 --> 00:04:12,000
e um ecossistema é mais que
uma coisa só.
75
00:04:12,500 --> 00:04:14,500
é primeiramente feito de pessoas
76
00:04:14,500 --> 00:04:17,500
Kotlin não é um pedaço de software,
77
00:04:17,500 --> 00:04:19,000
são pessoas.
78
00:04:19,000 --> 00:04:21,400
São pessoas unidas por ideias,
79
00:04:21,400 --> 00:04:23,200
pela forma de pensar
80
00:04:23,200 --> 00:04:25,900
pela forma de fazer código funcionar
e assim por diante,
81
00:04:25,900 --> 00:04:29,800
e claro, sobre tudo isso,
Kotlin é software
82
00:04:29,800 --> 00:04:33,400
É assim que penso sobre
o que Kotlin é
83
00:04:33,800 --> 00:04:36,600
e o ecossistema é complexo
84
00:04:36,600 --> 00:04:38,600
como aqui na parte de
baixo do slide,
85
00:04:38,600 --> 00:04:40,300
vocês podem ver várias caixas
86
00:04:40,300 --> 00:04:42,500
elas são a plataforma do Kotlin
87
00:04:42,500 --> 00:04:44,200
é com isso que nós,
88
00:04:44,200 --> 00:04:47,400
o time core na JetBrains,
estamos contribuindo
89
00:04:47,400 --> 00:04:49,500
estamos fazendo o compilador,
o ambiente de execução
90
00:04:49,500 --> 00:04:52,200
todos os geradores de código
para diferentes plataformas
91
00:04:52,200 --> 00:04:56,100
bibliotecas, ferramentas, IDE
92
00:04:56,100 --> 00:04:58,100
temos nosso repositório
no Github
93
00:04:58,100 --> 00:05:01,500
disponível para todos
contribuírem, etc.
94
00:05:01,500 --> 00:05:05,100
e isso é o nível mais
básico da plataforma
95
00:05:05,100 --> 00:05:08,800
então, todos constroem em cima
de tudo isso.
96
00:05:08,800 --> 00:05:12,200
Várias pessoas criam seus próprios
materiais de aprendizagem,
97
00:05:14,000 --> 00:05:17,200
criam plugins para o compilador
e para o toolchain,
98
00:05:17,200 --> 00:05:19,500
criam suas próprias bibliotecas,
99
00:05:19,500 --> 00:05:21,400
criam pull requests no Github,
100
00:05:22,200 --> 00:05:26,000
nos enviam bugs e
solicitações de features
101
00:05:26,000 --> 00:05:29,200
e tudo isso vem pra
estender a plataforma.
102
00:05:29,200 --> 00:05:32,500
Aqui eu gostaria de agradecer
os nossos contribuidores
103
00:05:32,500 --> 00:05:35,200
muitas pessoas estão, de fato,
104
00:05:35,200 --> 00:05:37,200
adicionando código ao Kotlin
105
00:05:37,200 --> 00:05:39,500
através de pull requests
no Github
106
00:05:39,500 --> 00:05:42,300
e agora não é somente
o time core na JetBrains,
107
00:05:42,300 --> 00:05:45,100
mas também um time no Google
ajudando com o compilador.
108
00:05:45,100 --> 00:05:47,500
Muito obrigado por fazer
isso por todos nós
109
00:05:47,500 --> 00:05:52,300
e muitas outras pessoas
na comunidade fazendo o mesmo
110
00:05:52,300 --> 00:05:55,400
mas isso é só um tipo
de contribuição, certo?
111
00:05:55,400 --> 00:05:57,200
somente código...
112
00:05:58,200 --> 00:06:00,400
...e bibliotecas, são código também
113
00:06:00,400 --> 00:06:03,200
mas sobre tudo isso,
tem muito mais coisas.
114
00:06:03,200 --> 00:06:06,400
Todos que compartilham um
estudo de caso na Internet,
115
00:06:06,400 --> 00:06:09,000
que fazem perguntas,
fornecem respostas,
116
00:06:09,000 --> 00:06:12,300
compartilham notícias,
comentam nas redes sociais,
117
00:06:12,300 --> 00:06:15,400
ou mesmo aperta o botão
de like em algum lugar,
118
00:06:15,400 --> 00:06:17,800
todos estão trazendo valor
para a comunidade
119
00:06:17,800 --> 00:06:21,300
e mesmo que você não tenha tempo
para fazer isso,
120
00:06:21,300 --> 00:06:24,400
alguns de nós estamos realmente
ocupados com nosso código,
121
00:06:24,400 --> 00:06:26,100
focando nos problemas do negócio,
122
00:06:26,100 --> 00:06:29,400
ainda assim, se você somente
reportar os dados de utilização,
123
00:06:29,400 --> 00:06:32,100
você pode ajudar a comunidade
de forma passiva.
124
00:06:32,500 --> 00:06:37,100
Agradeço a todos que nos ajudam
a tornar o Kotlin melhor.
125
00:06:39,500 --> 00:06:42,100
Vamos pensar por um segundo
126
00:06:42,100 --> 00:06:45,400
sobre o que queremos que
o Kotlin se torne no futuro.
127
00:06:45,900 --> 00:06:49,400
Eu penso em uma metáfora de
uma linguagem padrão,
128
00:06:49,400 --> 00:06:50,400
ou uma ferramenta padrão,
129
00:06:50,400 --> 00:06:56,400
algo que procuro quando tenho
uma tarefa a fazer.
130
00:06:56,900 --> 00:07:01,300
Uma linguagem padrão é mais do que
algo que eu sei bem,
131
00:07:01,300 --> 00:07:03,500
é algo que posso usar em
qualquer lugar.
132
00:07:03,500 --> 00:07:08,200
Algo que vai resolver qualquer
problema que eu tiver,
133
00:07:08,200 --> 00:07:12,200
e algo que vai escalar se
o projeto demandar, certo?
134
00:07:13,000 --> 00:07:15,200
Então, para tornar o Kotlin
a sua linguagem padrão
135
00:07:15,200 --> 00:07:18,400
precisamos que ele funcione
em qualquer escala,
136
00:07:18,400 --> 00:07:19,700
em qualquer plataforma,
137
00:07:19,700 --> 00:07:21,300
em qualquer área de aplicação,
138
00:07:21,300 --> 00:07:25,100
e claro, entendemos que precisamos
fazê-lo acessível
139
00:07:25,100 --> 00:07:28,500
para que seja relevante em
qualquer nível de experiência
140
00:07:28,900 --> 00:07:31,200
porque nem todo mundo já
é um profissional.
141
00:07:31,200 --> 00:07:34,200
Então queremos ser o padrão para
todas as pessoas,
142
00:07:34,200 --> 00:07:38,500
e a ideia é que, se tenho algo
para trabalhar,
143
00:07:38,500 --> 00:07:41,100
e eu já sei Kotlin,
vai funcionar pra mim.
144
00:07:41,100 --> 00:07:43,400
E eu posso usar como minha
ferramenta padrão.
145
00:07:44,100 --> 00:07:47,300
Como fazemos isso, então?
146
00:07:47,300 --> 00:07:50,200
Para completarmos essa missão
de ser a sua linguagem padrão,
147
00:07:50,200 --> 00:07:52,300
não é uma tarefa fácil,
148
00:07:52,300 --> 00:07:55,400
você precisa ser muito bom
149
00:07:55,400 --> 00:07:59,100
e o caminho que penso que vai
levar o Kotlin a ser tão bom
150
00:07:59,100 --> 00:08:01,300
é diminuindo as barreiras.
151
00:08:01,900 --> 00:08:05,100
Para ser esse tipo de linguagem padrão
152
00:08:05,100 --> 00:08:09,000
precisamos diminuir as barreiras
entre as plataformas
153
00:08:09,000 --> 00:08:10,600
para permitir que você transferir
seu conhecimento
154
00:08:10,600 --> 00:08:12,200
de uma plataforma para outra.
155
00:08:12,400 --> 00:08:13,600
Diminuir as barreiras entre as pessoas,
156
00:08:13,600 --> 00:08:16,300
para que possam compartilhar sua
expertise em seus códigos.
157
00:08:16,700 --> 00:08:18,500
e, por último,
158
00:08:18,500 --> 00:08:22,400
diminuir a barreira entre humanos
e software funcional.
159
00:08:22,400 --> 00:08:24,300
Assim, se você tem uma ideia
160
00:08:24,300 --> 00:08:27,200
existe uma ferramenta que é a via
161
00:08:27,200 --> 00:08:30,500
para expressar a ideia,
e não o obstáculo no caminho.
162
00:08:31,100 --> 00:08:33,200
É assim que eu penso.
163
00:08:33,200 --> 00:08:38,100
E, claro, vocês perceberam que
falei muito sobre plataformas.
164
00:08:38,100 --> 00:08:40,300
O que você faz deve funcionar
em qualquer plataforma.
165
00:08:40,300 --> 00:08:43,500
Nós diminuímos a barreira
entre plataformas,
166
00:08:43,500 --> 00:08:47,300
e essa é uma parte muito importante
da nossa estratégia.
167
00:08:47,300 --> 00:08:50,600
Vamos olhar as plataformas
em que o Kotlin funciona hoje.
168
00:08:50,600 --> 00:08:53,300
Vou começar com desenvolvimento
no server side.
169
00:08:53,300 --> 00:08:57,300
De novo, lá atrás em 2010
170
00:08:57,300 --> 00:08:59,200
quando começamos com o Kotlin,
171
00:08:59,200 --> 00:09:00,900
pensávamos no ecossistema Java
172
00:09:00,900 --> 00:09:03,100
e Java é enorme no server side.
173
00:09:03,100 --> 00:09:05,700
Então, esse foi o caso de uso
primário que pensamos naquela época
174
00:09:05,700 --> 00:09:08,900
e hoje Kotlin é muito forte no server side.
175
00:09:08,900 --> 00:09:12,300
Quando você olha vagas de Kotlin
na Internet,
176
00:09:12,300 --> 00:09:14,400
existem muitas vagas para server side.
177
00:09:14,400 --> 00:09:17,400
É desenvolvimento backend de todo tipo
178
00:09:17,400 --> 00:09:19,500
e todo tipo de negócio.
179
00:09:19,500 --> 00:09:22,300
E faz sentido, certo?
180
00:09:22,300 --> 00:09:27,200
Kotlin foi criado para projetos
de larga escala,
181
00:09:27,200 --> 00:09:29,400
para criar soluções robustas, etc.
182
00:09:29,400 --> 00:09:30,000
e está funcionando.
183
00:09:30,000 --> 00:09:35,300
Existe muitas soluções interessantes
para desenvolvimento server side com Kotlin,
184
00:09:35,300 --> 00:09:39,000
e muitas mais estão emergindo,
185
00:09:39,000 --> 00:09:41,200
mas eu gostaria de destacar algumas.
186
00:09:41,600 --> 00:09:45,300
Vocês devem saber que somos amigos
do Spring faz tempo.
187
00:09:45,300 --> 00:09:49,400
O Spring Framework é um dos frameworks
web mais populares do mundo
188
00:09:49,400 --> 00:09:51,600
está dominando o mundo Java,
189
00:09:51,900 --> 00:09:57,200
e o suporte oficial para Kotlin
foi adicionado lá em 2017
190
00:09:57,200 --> 00:09:58,700
e está sendo expandido
191
00:09:58,700 --> 00:10:01,300
agora não só no Spring Boot,
mas também no Web MVC
192
00:10:01,300 --> 00:10:05,400
tendo até a documentação de exemplo
em Kotlin junto com Java
193
00:10:05,400 --> 00:10:09,300
e tem o Web Flux que é um grande
amigo das coroutines
194
00:10:09,300 --> 00:10:12,200
fazendo requests assíncronas muito fáceis.
195
00:10:12,200 --> 00:10:14,300
Acredito que é uma colaboração
muito produtiva.
196
00:10:14,300 --> 00:10:16,000
E muitas pessoas já estão usando,
197
00:10:16,000 --> 00:10:17,700
fico muito contente em ver isso.
198
00:10:18,300 --> 00:10:19,800
Nossos amigos da Pivotal
199
00:10:19,800 --> 00:10:23,400
vão dar grandes palestras aqui
na KotlinConf sobre Spring.
200
00:10:23,400 --> 00:10:25,500
Então, se estiver interessado em
desenvolvimento server-side,
201
00:10:25,500 --> 00:10:27,700
não perca.
202
00:10:29,100 --> 00:10:33,400
Nós da JetBrains também estamos fazendo
203
00:10:33,400 --> 00:10:37,200
nosso próprio framework de aplicações
conectadas chamado Ktor
204
00:10:37,200 --> 00:10:40,200
que é usado no software de missão crítica
205
00:10:40,200 --> 00:10:41,700
que desenvolvemos na JetBrains.
206
00:10:41,700 --> 00:10:43,300
Acredito que a JetBrains
207
00:10:43,300 --> 00:10:47,300
é um dos maiores usuários no
server-side desde o começo
208
00:10:47,300 --> 00:10:49,500
porque começamos a colocar código Kotlin
209
00:10:49,500 --> 00:10:52,300
em produção no servidor
antes mesmo da versão 1.0
210
00:10:52,300 --> 00:10:56,300
e hoje o Ktor é muito forte
e fazemos mais produtos baseados nele.
211
00:10:56,300 --> 00:11:00,300
Então, Kotlin é um investimento
estratégico para a JetBrains
212
00:11:00,300 --> 00:11:01,700
e estamos comprometidos com ele.
213
00:11:01,700 --> 00:11:03,300
Mas não somos somente nós.
214
00:11:03,300 --> 00:11:06,400
Muitos outros estão compartilhando
seus estudos de caso
215
00:11:06,400 --> 00:11:11,100
e aqui na KotlinConf vemos muitos
casos interessantes.
216
00:11:11,100 --> 00:11:14,300
Nossos amigos da Expedia estão usando,
217
00:11:14,300 --> 00:11:19,300
E até mesmo a receita federal da Noruega
está usando Kotlin em seus servidores.
218
00:11:19,300 --> 00:11:22,300
Essa é uma transição muito interessante.
219
00:11:22,300 --> 00:11:25,300
Primeiro, vimos os early adopters e
220
00:11:25,300 --> 00:11:28,000
nós usávamos Kotlin internamente
na JetBrains.
221
00:11:28,000 --> 00:11:31,400
Então vimos startups e grandes empresas
222
00:11:31,400 --> 00:11:33,900
e empresas financeiras começando a usar
223
00:11:33,900 --> 00:11:36,300
e agora é o governo.
224
00:11:36,800 --> 00:11:39,400
Imagino o que vem depois...
225
00:11:40,100 --> 00:11:42,800
Não sei, vamos ver ano que vem.
226
00:11:47,300 --> 00:11:49,800
OK, então é assim que estamos
no servidor.
227
00:11:51,200 --> 00:11:53,200
Mas, claro, existem muitas outras
plataformas.
228
00:11:53,200 --> 00:11:55,200
Android é uma plataforma muito forte.
195
00:11:55,700 --> 00:11:58,800
Android se tornou Kotlin-first este ano,
195
00:11:58,800 --> 00:12:02,400
e podemos perceber que o ecossistema
195
00:12:02,400 --> 00:12:04,700
está crescendo com o
desenvolvimento mobile.
195
00:12:04,700 --> 00:12:07,500
mais de 50% dos desenvolvedores
profissionais
195
00:12:07,500 --> 00:12:09,600
trabalhando na plataforma Android
195
00:12:09,600 --> 00:12:11,400
estão usando Kotlin
195
00:12:11,400 --> 00:12:14,200
além de 60% dos Top 100 apps
195
00:12:14,200 --> 00:12:15,400
na Play Store
195
00:12:15,400 --> 00:12:18,200
o que é um número gigante de usuários,
195
00:12:18,200 --> 00:12:19,800
milhões e mais milhões de usuários
195
00:12:19,800 --> 00:12:20,900
não sei, talvez bilhões.
195
00:12:21,500 --> 00:12:23,900
Todos esses apps estão usando Kotlin
195
00:12:24,200 --> 00:12:27,200
e o time incrível da Google
195
00:12:27,200 --> 00:12:30,200
está criando excelentes
bibliotecas com Kotlin
195
00:12:30,200 --> 00:12:32,800
e nos ajudando a melhorar
o ecossistema.
195
00:12:33,000 --> 00:12:35,200
Agradeço meus colegas da
Google novamente
195
00:12:35,200 --> 00:12:36,700
tem sido ótimo trabalhar juntos
195
00:12:37,100 --> 00:12:39,200
e para reforçar ainda mais
195
00:12:39,200 --> 00:12:44,300
esses são alguns apps
feitos pela Google
195
00:12:44,300 --> 00:12:46,200
que são disponibilizados
para todo o mundo
195
00:12:46,200 --> 00:12:48,200
inclusive tenho alguns deles
aqui no meu bolso,
195
00:12:48,200 --> 00:12:51,300
todos eles estão usando Kotlin.
195
00:12:51,300 --> 00:12:53,400
E acredito que é empolgante ver
00:12:53,400 --> 00:12:56,200
quantos casos interessantes o Kotlin
está ajudando hoje me dia.
195
00:12:56,900 --> 00:13:00,200
Mas essa história não para com o Android
195
00:13:00,200 --> 00:13:03,500
porque o mundo mobile é mais amplo.
195
00:13:03,500 --> 00:13:05,200
Existem duas plataformas principais
195
00:13:05,200 --> 00:13:09,100
e com o Kotlin estamos tentando
195
00:13:09,100 --> 00:13:12,500
fazer as coisas funcionarem
bem para todas as plataformas
195
00:13:12,500 --> 00:13:15,000
e é por isso que estamos investindo
195
00:13:15,000 --> 00:13:16,600
no que chamamos mobile multiplatforma.
195
00:13:16,600 --> 00:13:19,200
Onde vamos compartilhar código
entre Android e iOS
195
00:13:19,200 --> 00:13:20,600
aqui temos uma lista de apps,
195
00:13:20,600 --> 00:13:24,200
muitos deles terão seus estudos
de caso apresentados na KotlinConf
195
00:13:24,200 --> 00:13:27,200
todos esses apps estão usando
Kotlin multiplataforma.
195
00:13:27,200 --> 00:13:30,200
Estão compartilhando lógica de
negócio entre iOS e Android
195
00:13:30,200 --> 00:13:35,200
e eu fico muito empolgado
por ver as pessoas
195
00:13:35,200 --> 00:13:38,200
colocando isso em produção hoje
00:13:38,700 --> 00:13:40,200
é muito bacana
195
00:13:40,200 --> 00:13:45,100
São várias empresas, algumas delas
nomes bem conhecidos
195
00:13:45,100 --> 00:13:50,200
incluindo soluções completas como
o recente anúncio da VMware
195
00:13:50,200 --> 00:13:54,200
Eles estão com a solução Workspace ONE
195
00:13:54,200 --> 00:13:56,800
que é um conjunto de aplicações
para mobilidade corporativa
195
00:13:56,800 --> 00:14:02,200
e estão usando a mesma lógica de negócios
tanto no iOS quanto no Android
195
00:14:02,200 --> 00:14:06,700
ou então a PlanGrid da Autodesk, com vários projetos de construção envolvidos
195
00:14:06,700 --> 00:14:11,200
é possível ver os números, milhões e milhões de usuários em cada aplicativo
195
00:14:11,800 --> 00:14:14,800
Gostaria também de destacar
aqui o Quizlet
195
00:14:14,800 --> 00:14:16,700
porque eles foram ainda mais longe
195
00:14:16,700 --> 00:14:18,500
eles possuem dois clientes
195
00:14:18,500 --> 00:14:21,200
iOS e Android,
195
00:14:21,200 --> 00:14:23,000
mas eles também tem um cliente web
00:14:23,000 --> 00:14:24,900
onde usam Kotlin para
compartilhar código
195
00:14:24,900 --> 00:14:28,900
e é isso que queremos que o
Kotlin se torne no futuro,
195
00:14:28,900 --> 00:14:32,500
a solução universal para
todas as plataformas
195
00:14:32,700 --> 00:14:39,200
Acredito que vocês vão gostar das
palestras sobre esses casos aqui
195
00:14:39,200 --> 00:14:43,800
e espero que tirem conclusões
interessantes dessas palestras
195
00:14:44,300 --> 00:14:47,300
Falando agora do panorama universal
195
00:14:47,300 --> 00:14:49,800
de ter Kotlin em todo lugar,
em todas as plataformas
195
00:14:49,800 --> 00:14:51,400
é assim que seria
195
00:14:51,700 --> 00:14:54,200
somos fortes no servidor,
fortes no mobile,
195
00:14:54,200 --> 00:14:56,200
nós somos fortes no navegador
195
00:14:56,200 --> 00:14:58,200
você pode fazer um cliente
desktop também
195
00:14:58,200 --> 00:15:02,200
se estiver usando uma IDE Jetbrains
pode fazer um plugin para a IDE
195
00:15:02,200 --> 00:15:04,200
Então essa é a experiência fullstack
195
00:15:04,200 --> 00:15:06,400
Você tem uma ferramenta
195
00:15:06,400 --> 00:15:08,900
e você resolve todos os seus problemas
em todas as plataformas com ela
195
00:15:08,900 --> 00:15:11,500
É exatamente isso que
estamos fazendo na JetBrains
195
00:15:11,800 --> 00:15:14,500
vocês devem ter ouvido
que vamos anunciar
195
00:15:14,500 --> 00:15:18,400
um novo produto para equipes
aqui na KotlinConf mais tarde
195
00:15:18,600 --> 00:15:20,200
e não estou dizendo o que é
195
00:15:20,200 --> 00:15:23,500
É algo para equipes, e só.
195
00:15:23,600 --> 00:15:28,200
Mas posso dizer que é assim
que ele funciona.
195
00:15:28,200 --> 00:15:30,600
Ele roda Kotlin em todos os nós
195
00:15:30,700 --> 00:15:33,900
ele tem Kotlin no servidor,
no iOS, no Android
195
00:15:33,900 --> 00:15:36,500
no desktop, na IDE e no navegador
195
00:15:36,700 --> 00:15:40,200
está tudo aqui e vão haver...
195
00:15:40,200 --> 00:15:42,200
...
195
00:15:42,200 --> 00:15:43,500
vou falar das palestrar daqui a pouco...
195
00:15:43,500 --> 00:15:45,700
então, é isso que as
plataformas compartilham
195
00:15:45,900 --> 00:15:48,200
tudo nesse slide é compartilhado
195
00:15:48,200 --> 00:15:50,400
tanto o modelo de dados e
suas validações,
195
00:15:50,400 --> 00:15:52,800
as chamadas RPC, até
mesmo o View Model
195
00:15:52,800 --> 00:15:54,700
assim chegamos realmente
próximos da UI
195
00:15:54,700 --> 00:15:56,500
é muita coisa compartilhada
195
00:15:56,500 --> 00:15:59,000
e meus colegas vão falar mais sobre isso
195
00:15:59,200 --> 00:16:03,100
Maxim Shafirov vai anunciar
o produto mais tarde
195
00:16:03,200 --> 00:16:04,400
e Maxim Mazin...
195
00:16:04,600 --> 00:16:07,400
eu nem posso falar o título da palestra
195
00:16:07,700 --> 00:16:11,300
mas vai ser a palestra sobre como
tudo isso funciona,
195
00:16:11,300 --> 00:16:15,400
com bastante código e detalhes
empolgantes sobre esse produto.
195
00:16:17,300 --> 00:16:21,200
Espero já termos suspense o suficiente
pra esse anúncio.
195
00:16:26,800 --> 00:16:29,200
Então temos um sumário intermediário
195
00:16:29,700 --> 00:16:32,200
sobre onde estamos com o Kotlin hoje
195
00:16:33,200 --> 00:16:34,300
Todas as plataformas
195
00:16:34,300 --> 00:16:35,600
servidor, Android,
195
00:16:35,600 --> 00:16:38,700
código compartilhado em
dispositivos móveis,
195
00:16:38,700 --> 00:16:41,300
web, desktop, tudo junto.
195
00:16:41,300 --> 00:16:42,300
Isso significa fullstack,
195
00:16:42,300 --> 00:16:43,700
é aqui que estamos mirando e
195
00:16:43,700 --> 00:16:46,800
vamos continuar investindo
nessa história.
195
00:16:48,300 --> 00:16:51,200
Acredito que já temos 23
minutos de keynote,
195
00:16:51,200 --> 00:16:54,400
é hora de falar sobre alguns anúncios
195
00:16:54,700 --> 00:16:57,200
novamente, tenho que me desculpar,
Kotlin é um projeto open source,
195
00:16:57,200 --> 00:17:00,200
você já sabe de tudo se olhar no Github,
195
00:17:00,200 --> 00:17:05,200
mas vamos repassar algumas coisas
que estão acontecendo lá
195
00:17:05,200 --> 00:17:09,000
além disso, não vamos
lançar nada hoje
195
00:17:09,300 --> 00:17:12,800
eu parei de fazer lançamentos
em conferências
195
00:17:14,000 --> 00:17:15,200
sabem por quê?
195
00:17:15,200 --> 00:17:16,400
Uma conferência
195
00:17:16,400 --> 00:17:18,800
é algo que você precisa se preparar
195
00:17:18,800 --> 00:17:21,500
e um lançamento é algo que
você precisa se preparar
195
00:17:21,500 --> 00:17:22,700
e só existe um eu
195
00:17:23,500 --> 00:17:25,600
e só existe uma equipe
195
00:17:25,600 --> 00:17:27,700
e não vamos fazer isso.
195
00:17:27,900 --> 00:17:30,500
Estamos só lhes dando um aviso
195
00:17:30,500 --> 00:17:34,700
de que uma versão vai ser lançada
em algum momento na primavera deste ano.
195
00:17:35,100 --> 00:17:37,000
espero que seja sensacional
195
00:17:37,200 --> 00:17:39,200
e hoje vou somente passar
por alguma coisas
195
00:17:39,200 --> 00:17:41,300
que estarão disponíveis.
195
00:17:41,800 --> 00:17:44,500
O nosso maior foco
195
00:17:44,500 --> 00:17:47,300
nesta versão
é qualidade e performance
195
00:17:47,600 --> 00:17:50,200
Nós viemos adicionando muitas
features no passado,
195
00:17:51,300 --> 00:17:54,200
e dessa vez quisemos apenas
195
00:17:54,200 --> 00:17:55,900
diminuir um pouco o ritmo
195
00:17:55,900 --> 00:17:58,000
e polir as coisas. Polir bastante.
195
00:17:58,000 --> 00:18:00,700
Não significa que não vão haver
features, claro
195
00:18:00,700 --> 00:18:01,900
nós também somos desenvolvedores
195
00:18:01,900 --> 00:18:04,300
adoramos criar features
195
00:18:04,300 --> 00:18:06,000
mas também há muito trabalho
relacionado a qualidade.
195
00:18:06,600 --> 00:18:09,000
Uma das coisas... olhem isso
195
00:18:09,000 --> 00:18:10,200
é um vídeo, espero que funcione...
195
00:18:10,200 --> 00:18:12,500
aqui, dois desenvolvedores
195
00:18:12,500 --> 00:18:14,900
estão trabalhando em suas IDEs
com diferentes versões do Kotlin
195
00:18:15,700 --> 00:18:18,400
e dá pra ver que a pessoa de cima
195
00:18:18,400 --> 00:18:21,200
é mais rápida, sabe por quê?
195
00:18:22,200 --> 00:18:24,100
conseguem adivinhar o que houve?
195
00:18:24,300 --> 00:18:26,200
dá pra ver que é muito mais rápido
195
00:18:26,200 --> 00:18:28,100
praticamente uma linha na frente
195
00:18:28,500 --> 00:18:29,900
sabe o que aconteceu aqui?
195
00:18:29,900 --> 00:18:31,200
é code completion
195
00:18:31,200 --> 00:18:32,300
ficou mais rápido.
195
00:18:32,300 --> 00:18:34,800
3x mais do que costumava ser
195
00:18:35,800 --> 00:18:39,100
é um trabalho brilhante do
nosso time de IDE
195
00:18:39,100 --> 00:18:41,200
e vamos continuar trabalhando nisso
195
00:18:41,200 --> 00:18:44,600
hoje temos cerca de 93%
dos nosso usuários
195
00:18:44,600 --> 00:18:48,200
obtendo sugesões em menos
de 500 milissegundos
195
00:18:48,200 --> 00:18:49,500
podemos melhorar isso também,
195
00:18:49,500 --> 00:18:53,100
e vamos trabalhar nesses 7%
195
00:18:53,100 --> 00:18:54,200
que ainda não chegaram lá
195
00:18:54,200 --> 00:18:56,500
mas já é uma melhora muito boa
195
00:18:58,100 --> 00:19:02,400
além disso, quando você usa
uma IDE com Kotlin e Gradle
195
00:19:02,400 --> 00:19:04,900
tem uma dor latente chamada
import, certo?
195
00:19:04,900 --> 00:19:08,700
você muda alguma coisa num
arquivo Gradle e...
195
00:19:10,200 --> 00:19:11,500
de agora em diante
195
00:19:11,500 --> 00:19:16,800
vai ser muito menos ...
dá pra ver nos números, certo?
195
00:19:16,800 --> 00:19:20,000
ficou muito mais rápido
195
00:19:20,300 --> 00:19:24,100
ficou 2,5x mais rápida no import,
195
00:19:24,100 --> 00:19:25,500
e vamos melhorar ainda mais
195
00:19:25,800 --> 00:19:29,200
além de usar muito menos memória,
cerca de 4x menos memória
195
00:19:29,200 --> 00:19:33,500
é uma mudança crítica
pra muita gente.
195
00:19:33,500 --> 00:19:35,200
a propósito, isso já foi lançado
195
00:19:35,200 --> 00:19:37,200
tenho da versão 1.4 como
um grande ciclo de release
195
00:19:37,200 --> 00:19:40,000
mas algumas dessas coisas
já foram lançadas
195
00:19:40,000 --> 00:19:42,400
porque queremos que vocês usem
o mais rápido possível.
195
00:19:43,000 --> 00:19:47,200
Além disso, a compilação no Kotlin Native
foi melhorada também
195
00:19:47,600 --> 00:19:49,500
em modo de desenvolvimento,
195
00:19:49,500 --> 00:19:51,200
agora estamos cacheando código
195
00:19:51,200 --> 00:19:53,200
e podemos reutilizar binários
de compilações anteriores
195
00:19:53,200 --> 00:19:55,500
então vocês já devem obter
195
00:19:55,500 --> 00:19:57,200
melhoras significantes nos
tempos de build
195
00:19:57,200 --> 00:19:59,900
e vamos continuar trabalhando para
tornar ainda mais rápido.
195
00:20:00,200 --> 00:20:02,400
mas entendemos que
195
00:20:02,400 --> 00:20:04,500
a maior dor na comunidade Kotlin
é a velocidade de build
195
00:20:04,500 --> 00:20:06,500
e um dos problemas aqui é que
195
00:20:06,500 --> 00:20:08,500
vocês continuam escrevendo código.
195
00:20:09,200 --> 00:20:13,200
melhoramos o compilador e
o toolchain, e todo o resto
195
00:20:13,200 --> 00:20:15,300
mas vocês escrevem mais código,
195
00:20:15,900 --> 00:20:18,200
e quanto maior o projeto,
mais lento é o build
195
00:20:18,200 --> 00:20:19,300
é assim que funciona.
195
00:20:19,700 --> 00:20:24,200
então, mesmo fazendo essas
melhoras incrementais
195
00:20:24,200 --> 00:20:29,200
entendemos que é preciso
uma medida mais radical
195
00:20:29,200 --> 00:20:32,700
e é por isso que eu tenho que confessar:
estamos trabalhando em um novo compilador.
195
00:20:40,300 --> 00:20:41,300
Sim, estamos
195
00:20:42,300 --> 00:20:46,800
queremos que o novo compilador seja
rápido e seja uniforme
195
00:20:46,800 --> 00:20:48,200
e também seja expansível
195
00:20:48,200 --> 00:20:51,200
quando digo rápido, digo que queremos
muito aumentar a velocidade do build de vocês
195
00:20:51,200 --> 00:20:56,900
não em algum percentual, mas...
Já vou mostrar o quanto
195
00:20:56,900 --> 00:20:59,200
e também queremos que seja uniforme
195
00:20:59,200 --> 00:21:01,200
para que funcione da mesma forma
em todas as plataformas
195
00:21:01,200 --> 00:21:03,200
e quando digo que seja expansível
195
00:21:03,200 --> 00:21:06,000
queremos que possamos
criar um plugin
195
00:21:06,000 --> 00:21:07,100
que funcione me todas as
plataformas também.
195
00:21:07,400 --> 00:21:10,200
Algumas partes desse compilador
vão estar na versão 1.4
195
00:21:10,200 --> 00:21:11,800
algumas outras virão depois
195
00:21:11,800 --> 00:21:15,900
vou tentar a apontar esses detalhes
durante essa palestra.
195
00:21:17,000 --> 00:21:19,600
Vai ter bastante trabalho,
mas vai ser muito interessante.
195
00:21:20,200 --> 00:21:24,200
A parte mais interessante do
novo compilador
195
00:21:24,200 --> 00:21:25,700
acho que é a velocidade
195
00:21:25,700 --> 00:21:29,000
e, hoje, o maior gargalo é
00:21:29,000 --> 00:21:30,800
algo que chamamos frontend
do compilador,
195
00:21:30,800 --> 00:21:32,400
é a parte que olha o seu código,
195
00:21:32,400 --> 00:21:35,100
entende ele, analiza os tipos, etc.
195
00:21:36,200 --> 00:21:37,900
então, antes de qualquer
geração de código,
195
00:21:38,200 --> 00:21:39,900
você tem esse frontend
195
00:21:39,900 --> 00:21:42,800
e isso é algo que
começamos a trabalhar
195
00:21:43,000 --> 00:21:46,200
não está pronto, não vai
estar na versão 1.4
195
00:21:46,200 --> 00:21:51,600
mas já é cerca de 4,5x mais
rápido que o antigo.
195
00:21:51,900 --> 00:21:56,700
o que significa muito se você
tem um build demorado,
195
00:21:58,100 --> 00:21:59,800
ele vai demorar bem menos.
195
00:22:00,700 --> 00:22:02,500
Isso não está finalizado,
195
00:22:02,500 --> 00:22:05,600
então as medições não são perfeitas
195
00:22:05,600 --> 00:22:08,900
já que vamos adicionar mais
funcionalidade ao subsistema
195
00:22:08,900 --> 00:22:11,500
e ele pode ficar um pouco mais lento,
mas vamos também otimizá-lo.
195
00:22:11,500 --> 00:22:14,700
então estamos de fato mirando
em um fator de 5 e alguma coisa
195
00:22:14,700 --> 00:22:16,400
mas, por enquanto, é animador
195
00:22:16,600 --> 00:22:19,400
o que temos hoje já faz boa
parte do trabalho
195
00:22:19,400 --> 00:22:21,700
então acreditamos que ele
pode ser realmente rápido.
195
00:22:23,200 --> 00:22:28,800
Outra coisa que vem junto do
frontend do novo compilador
195
00:22:28,800 --> 00:22:29,900
é a nova inferência de tipos
195
00:22:29,900 --> 00:22:33,700
e o novo motor de inferência
que vamos lançar na 1.4
195
00:22:33,700 --> 00:22:35,900
e não estamos falando de performance,
195
00:22:35,900 --> 00:22:38,200
é mais sobre
195
00:22:38,200 --> 00:22:39,700
os bugs problemáticos que
não conseguimos
195
00:22:39,700 --> 00:22:41,700
corrigir na implementação anterior
195
00:22:41,800 --> 00:22:43,100
porque ela não era flexível o suficiente.
195
00:22:43,200 --> 00:22:46,500
Então vamos lançar com várias
correções de bugs.
195
00:22:46,600 --> 00:22:48,500
Esse motor possibilita novas
features na linguagem,
195
00:22:48,500 --> 00:22:51,200
e uma delas vou mostrar mais
a frente nessa palestra
195
00:22:51,200 --> 00:22:54,400
e, claro, ele pode ser evoluído
195
00:22:54,400 --> 00:22:56,200
e estendido depois.
195
00:22:56,200 --> 00:22:58,900
então, vai possibilitar ainda mais
features na linguagem no futuro.
195
00:22:59,600 --> 00:23:04,200
Outra parte do novo compilador
é o backend unificado.
195
00:23:04,700 --> 00:23:08,500
Kotlin tem 3 backends,
195
00:23:08,500 --> 00:23:10,800
JVM, JS e Kotlin Native
195
00:23:10,900 --> 00:23:14,600
e os três fazem o mesmo trabalho,
195
00:23:14,600 --> 00:23:20,400
convertem a representação do frontend para
um binário de alguma plataforma.
195
00:23:22,500 --> 00:23:23,500
Historicamente,
195
00:23:23,500 --> 00:23:28,100
os backends da JVM e JS foram
escritos completamente separados
195
00:23:28,100 --> 00:23:29,500
então eles não compartilham
muito código,
195
00:23:29,800 --> 00:23:32,100
mas quando começamos com
o Kotlin Native,
195
00:23:32,100 --> 00:23:34,300
começamos a construir essa
infra-estrutura
195
00:23:34,300 --> 00:23:35,500
que iria unificar todo mundo
195
00:23:35,600 --> 00:23:37,800
que é baseada numa
representação interna
195
00:23:37,800 --> 00:23:39,200
chamada 'Backend IR'.
195
00:23:39,700 --> 00:23:42,600
Agora estamos migrando JVM e JS
195
00:23:42,600 --> 00:23:44,200
para essa nova infra-estrutura
195
00:23:44,200 --> 00:23:47,100
e todos os 3 backends serão similares,
195
00:23:47,100 --> 00:23:48,600
e vão compartilhar muito código.
195
00:23:48,900 --> 00:23:50,800
E se quisermos criar
uma nova feature
195
00:23:50,800 --> 00:23:52,600
não precisamos fazer 3 vezes,
apenas uma
195
00:23:52,600 --> 00:23:54,100
e se corrigimos um bug,
195
00:23:54,100 --> 00:23:56,400
ele é corrigido em todo
lugar de uma só vez.
195
00:23:57,000 --> 00:23:58,800
Isso vai vir na versão 1.4
195
00:23:58,800 --> 00:24:01,600
Não vamos migrar todos
os usuários de uma vez
195
00:24:01,600 --> 00:24:03,600
então deve haver um
período experimental
195
00:24:03,600 --> 00:24:06,600
Mas ainda assim, já está logo ali.
195
00:24:08,200 --> 00:24:09,800
Algo interessante
00:24:11,100 --> 00:24:15,200
que esse novo backend
unificado possibilita
195
00:24:15,200 --> 00:24:17,400
é a criação de plugins para o compilador
195
00:24:17,900 --> 00:24:21,400
onde você pode escrever algo
195
00:24:21,400 --> 00:24:24,800
para melhorar ou estender
a funcionalidade do Kotlin
195
00:24:24,800 --> 00:24:28,600
e mesmo não lançando APIs
para isso na 1.4
195
00:24:28,600 --> 00:24:30,100
como sempre,
195
00:24:30,100 --> 00:24:33,700
já existem pessoas dependendo
dessa API.
195
00:24:35,200 --> 00:24:36,400
Claro, são pessoas amigas,
195
00:24:36,400 --> 00:24:37,700
então estamos as ajudando
195
00:24:40,200 --> 00:24:41,500
Pessoas no Google
195
00:24:41,500 --> 00:24:43,700
estão trabalhando em algo
chamado Jetpack Compose
195
00:24:43,700 --> 00:24:45,500
que é um framework de UI maravilhoso,
195
00:24:46,300 --> 00:24:50,200
e estão criando um plugin
para o backend
195
00:24:50,200 --> 00:24:53,200
que é o coração da tecnologia
do Jetpack Compose
195
00:24:53,200 --> 00:24:54,500
Além disso,
195
00:24:54,500 --> 00:24:55,800
nossos amigos no Facebook
195
00:24:55,800 --> 00:24:58,100
estão fazendo algo muito interessante
195
00:24:58,100 --> 00:24:59,800
fazendo do Kotlin
195
00:24:59,800 --> 00:25:03,400
uma linguagem excelente para
Machine Learning e AI,
195
00:25:03,700 --> 00:25:06,400
criando extensões para a linguagem
195
00:25:06,400 --> 00:25:09,500
chamadas de 'diferenciação automatizada'.
195
00:25:09,900 --> 00:25:11,500
então Leland e Eric
195
00:25:11,500 --> 00:25:13,700
vão apresentar suas palestras sobre
195
00:25:13,700 --> 00:25:16,200
essas iniciativas aqui na KotlinConf
195
00:25:16,200 --> 00:25:19,300
então se você está na crista da onda
195
00:25:19,300 --> 00:25:20,700
no ecossistema Kotlin,
195
00:25:20,700 --> 00:25:22,600
recomendo e muito assistir
essas palestras.
195
00:25:24,200 --> 00:25:27,200
Adoraria abrir para perguntar agora,
mas não vou
195
00:25:28,800 --> 00:25:32,200
Outro ponto sobre o novo compilador
é o formato portável.
195
00:25:32,200 --> 00:25:36,200
Hoje estamos disponíveis
em muitas plataformas
195
00:25:36,200 --> 00:25:40,200
precisamos unificar nosso formato
de distribuição para bibliotecas
195
00:25:40,200 --> 00:25:43,700
então, KLIB é o nome desse
novo formato.
195
00:25:43,700 --> 00:25:45,500
Ele vai unificar todas as plataformas,
195
00:25:45,500 --> 00:25:49,000
ele contém uma representação de
alto-nível de um programa Kotlin
195
00:25:49,000 --> 00:25:54,500
um tipo de bytecode como o do Java,
ou qualquer outro bytecode
195
00:25:54,500 --> 00:25:57,500
e isso significa que essa
representação pode ser lida
195
00:25:57,500 --> 00:25:59,500
você pode analisar,
você pode transformá-la
195
00:25:59,500 --> 00:26:02,300
é o início de uma representação
devidamente analisável
195
00:26:02,300 --> 00:26:04,500
de um programa Kotlin compilado
195
00:26:04,500 --> 00:26:07,300
Vamos começar a experimentar
esse formato na 1.4,
195
00:26:07,300 --> 00:26:09,500
e esperamos estabilizá-lo
ao longo do tempo
195
00:26:11,200 --> 00:26:12,500
OK, este é o novo compilador.
195
00:26:13,000 --> 00:26:16,500
Vamos agora olhar outras áreas.
195
00:26:16,500 --> 00:26:18,500
Venho falando muito sobre
multiplataforma
195
00:26:19,000 --> 00:26:23,500
já que é algo muito interessante
sobre Kotlin
195
00:26:23,500 --> 00:26:26,500
queremos que as pessoas possam
compartilhar código
195
00:26:26,500 --> 00:26:29,200
e habilidades entre plataformas
195
00:26:29,200 --> 00:26:31,500
então se você escreve algo em Kotlin
195
00:26:31,500 --> 00:26:33,500
você pode usar esse código
em qualquer lugar
195
00:26:33,500 --> 00:26:35,500
e se você adquire alguma expertise
195
00:26:35,500 --> 00:26:36,500
algumas habilidades em Kotlin,
195
00:26:36,500 --> 00:26:38,500
você pode usá-la em outra plataforma
195
00:26:38,500 --> 00:26:44,500
mas se você quer fazer algo
específico da plataforma
195
00:26:44,500 --> 00:26:49,100
que não pode ser facilmente
feito em outra plataforma
195
00:26:49,100 --> 00:26:51,900
algo legal que só essa
plataforma pode fazer
195
00:26:51,900 --> 00:26:54,500
você pode se apoiar
nas bases da plataforma
195
00:26:54,500 --> 00:26:58,500
é compartilhamento de código,
compartilhamento de conhecimento
195
00:26:58,500 --> 00:27:01,500
além de 100% de acesso a plataforma
195
00:27:01,500 --> 00:27:03,500
é assim que estamos tentando fazer
195
00:27:03,500 --> 00:27:06,500
este é o diagrama
195
00:27:06,500 --> 00:27:08,500
de como o Kotlin
multiplataforma funciona
195
00:27:08,500 --> 00:27:11,500
no centro temos o Kotlin comum
195
00:27:11,500 --> 00:27:13,500
que é a linguagem, as
bibliotecas core
195
00:27:13,500 --> 00:27:15,500
e o toolchain básico
195
00:27:15,500 --> 00:27:18,100
lá você escreve código
apenas com Kotlin
195
00:27:18,100 --> 00:27:19,900
e funciona em qualquer lugar
195
00:27:20,500 --> 00:27:24,100
mas sempre que quiser interagir
com a plataforma
195
00:27:24,100 --> 00:27:26,500
você opta por uma versão
específica do Kotlin
195
00:27:26,500 --> 00:27:29,500
extensões para a linguagem,
bibliotecas específicas, etc.
195
00:27:29,500 --> 00:27:30,900
seja Kotlin JVM, Kotlin JS
195
00:27:30,900 --> 00:27:33,500
ou o backend baseado em LLVM
do Kotlin Native
195
00:27:33,500 --> 00:27:35,500
todos te dão poder
195
00:27:35,500 --> 00:27:37,500
para interoperar com uma plataforma
195
00:27:37,500 --> 00:27:39,500
e através dessas extensões,
195
00:27:39,500 --> 00:27:41,500
você pode se comunicar com
código nativo da plataforma
195
00:27:41,500 --> 00:27:43,500
então, se existe código JVM lá,
você pode acessá-lo
195
00:27:43,500 --> 00:27:45,900
então, se existe código JS lá,
você pode acessá-lo
195
00:27:45,900 --> 00:27:48,500
e qualquer tipo de código nativo,
você pode acessar também
195
00:27:48,500 --> 00:27:53,500
o que leva a um monte de plataformas que
você pode se comunicar
195
00:27:53,500 --> 00:27:58,500
é qualquer coisa Java, é o navegador,
é NodeJS, é Android, claro
195
00:27:58,500 --> 00:28:00,500
e todas as plataformas nativas como
195
00:28:00,500 --> 00:28:04,900
Windows, Linux, Mac,
microcontroladores, você é quem sabe
195
00:28:05,500 --> 00:28:08,500
é essa a tecnologia que
estamos fazendo
195
00:28:08,500 --> 00:28:12,500
e algumas notícias interessantes
sobre ela
195
00:28:14,900 --> 00:28:17,500
primeiro, estamos expandindo o
conjunto de bibliotecas core
195
00:28:19,100 --> 00:28:22,900
existe, claro, a biblioteca padrão
comum para todas as plataformas
195
00:28:22,900 --> 00:28:27,900
temos strings, coleções, todo o
essencial está lá
195
00:28:27,900 --> 00:28:29,500
ah, e agora temos durações também
195
00:28:29,500 --> 00:28:33,500
e coroutines, coroutines
são sensacionais
195
00:28:33,500 --> 00:28:35,500
também funcionam em qualquer
plataforma
195
00:28:35,500 --> 00:28:39,500
serialization é algo que esperamos
estabilizar no Kotlin 1.4
195
00:28:39,500 --> 00:28:44,500
I/O e clientes HTTP também estão
ali para todas as plataformas
195
00:28:44,500 --> 00:28:48,500
e definitivamente estamos adicionado
DateTime, porque todo mundo precisa
195
00:28:48,500 --> 00:28:51,500
e falando em bibliotecas
195
00:28:51,500 --> 00:28:55,500
vão haver duas palestras muito interessantes
dos meus colegas de equipe
195
00:28:55,500 --> 00:28:58,500
Leonid vai falar sobre o design
da Kotlin Serialization
195
00:28:58,500 --> 00:29:03,500
que é algo como uma linha tênue entre
uma biblioteca e uma feature da linguagem
195
00:29:03,500 --> 00:29:04,500
o que é muito legal
195
00:29:04,500 --> 00:29:08,500
e Roman vai falar de algo chamado Flow
195
00:29:08,500 --> 00:29:12,500
que é a implementação do Kotlin
para os Reactive Streams
195
00:29:12,500 --> 00:29:17,500
que te ajuda a manipular fluxos
de dados usando Coroutines
195
00:29:17,500 --> 00:29:20,500
e é muito interessante,
195
00:29:20,500 --> 00:29:22,500
porque se você olhar em
alguns benchmarks,
195
00:29:22,500 --> 00:29:25,500
Kotlin Flow é não só mais conveniente
195
00:29:25,500 --> 00:29:27,300
como também muito mais rápido
195
00:29:27,300 --> 00:29:31,500
que algumas das implentações existentes
dos Reactive Streams
195
00:29:31,500 --> 00:29:35,500
então você acaba não só
com código mais idiomático
195
00:29:35,500 --> 00:29:37,500
mas também mais velocidade
ao adotar o Flow
195
00:29:37,500 --> 00:29:38,500
Espero que gostem
195
00:29:40,300 --> 00:29:43,500
E então, bibliotecas
195
00:29:43,500 --> 00:29:46,900
Bibliotecas talvez sejam a fonte de
energia do ecossistema Kotlin
195
00:29:49,100 --> 00:29:52,500
então nos preocupamos com as
pessoas escrevendo as bibliotecas
195
00:29:52,500 --> 00:29:56,900
por isso estamos adicionando
algumas ferramentas pra ajudá-las
195
00:29:56,900 --> 00:30:00,500
Vai haver um modo para autores
de bibliotecas
195
00:30:00,500 --> 00:30:03,700
que vai auxiliar com algumas checagens,
195
00:30:03,700 --> 00:30:08,500
para fazer suas APIs realmente
robustas e estáveis ao longo do tempo
195
00:30:08,500 --> 00:30:12,500
vendo onde é necessária uma visitiblidade explícita,
ou tipos públicos são requeridos
195
00:30:12,500 --> 00:30:17,500
também estamos trabalhando no Dokka,
a ferramenta de geração de documentação
195
00:30:17,500 --> 00:30:23,500
isso é um esboço de como o design
de documentação vai ser
195
00:30:23,500 --> 00:30:27,500
e notem no canto superior direito,
195
00:30:27,500 --> 00:30:29,500
tem várias plataformas
195
00:30:29,500 --> 00:30:32,500
Dokka funciona em bibliotecas multiplataforma e
também pra uma plataformas somente.
195
00:30:34,100 --> 00:30:37,500
Falando de multiplaforma
195
00:30:37,500 --> 00:30:40,500
estamos investindo no caso do mobile
195
00:30:40,500 --> 00:30:43,500
Tenho falado sobre isso, iOS e Android
195
00:30:43,500 --> 00:30:47,500
e vai haver uma palestra sobre
como as coisas funcionam ali
195
00:30:47,500 --> 00:30:49,500
e tem havido melhorias
muito interessantes
195
00:30:49,500 --> 00:30:53,500
é uma pena que não posso
falar delas aqui no keynote
195
00:30:53,500 --> 00:30:54,500
porque é muito empolgante
195
00:30:54,500 --> 00:30:59,500
mas Dmitry e Lilia vão falar
delas na sua palestra.
195
00:30:59,500 --> 00:31:02,500
Um anúncio que gostaria de fazer
sobre multiplaforma para mobile
195
00:31:02,500 --> 00:31:08,500
é que vamos lhes fornecer a possibilidade
de rodar, debugar
195
00:31:08,500 --> 00:31:12,500
e testar seus apps Kotlin iOS
no Android Studio
195
00:31:12,500 --> 00:31:15,500
vai ser feito através de um
plugin em separado
195
00:31:15,500 --> 00:31:21,500
um plugin de código fechado, porque usa partes
proprietárias do IntelliJ
195
00:31:21,500 --> 00:31:28,500
mas você poderá abrir seu código Kotlin
escrito para iOS no Android Studio
195
00:31:28,500 --> 00:31:33,500
e rodar num device, em um simulador,
debugar, testar, etc.
195
00:31:33,500 --> 00:31:34,500
vai sair no próximo ano
195
00:31:34,500 --> 00:31:37,500
e, apenas para alinhas as expectativas,
195
00:31:37,500 --> 00:31:39,500
isso não vai substituir o Xcode
195
00:31:39,500 --> 00:31:43,500
para algumas coisas você ainda
vai precisar entrar no Xcode
195
00:31:43,500 --> 00:31:47,500
mas para o ciclo normal de desenvolvimento,
será apenas uma IDE.
195
00:31:47,500 --> 00:31:52,500
Além disso, não estamos tentando adicionar
todas as linguagens a uma IDE
195
00:31:52,500 --> 00:31:54,500
mas é um projeto interessante,
é um projeto separado
195
00:31:54,500 --> 00:31:58,500
e aqui estou falando somente de Kotlin
195
00:31:58,500 --> 00:32:00,500
não haverá suporte para linguagens
como Objective-C ou Swift
195
00:32:00,500 --> 00:32:04,500
mas você ainda pode fazer
tudo em Kotlin, certo?
195
00:32:05,500 --> 00:32:10,500
então espero que gostem e
acompanhem esse projeto
195
00:32:10,500 --> 00:32:14,500
Estamos, claro, trabalhando
no runtime do Kotlin Native
195
00:32:14,500 --> 00:32:17,500
que é o que possibilita
Kotlin de rodar no iOS
195
00:32:17,500 --> 00:32:20,500
a performance em runtime
vem sendo melhorada gradualmente
195
00:32:20,500 --> 00:32:22,500
e este é o resultado atual
195
00:32:22,500 --> 00:32:26,500
na verdade, apps em Kotlin já
são rápidos o suficiente no iOS
195
00:32:26,500 --> 00:32:28,500
mas estamos melhorando ao
longo do tempo
195
00:32:30,900 --> 00:32:35,500
outra novidade é que agora
não é somente iOS
195
00:32:35,500 --> 00:32:38,500
é TV OS e também watch OS
195
00:32:38,500 --> 00:32:43,500
Você pode escrever seu app e
empacotá-lo em todos os tipos de device
195
00:32:44,200 --> 00:32:47,500
para fins de demonstrar isso
195
00:32:47,500 --> 00:32:51,500
aqui temos um app que você
pode experimentar na KotlinConf
195
00:32:51,500 --> 00:32:57,500
é chamado de Kotlin Locator, procure
por ele no Android ou App Store
195
00:32:57,500 --> 00:33:04,500
ou caso queira, visite o estande da
JetBrains aqui na sala de exibições
195
00:33:04,500 --> 00:33:08,500
Com esse app você pode
jogar um jogo interessante
195
00:33:08,500 --> 00:33:10,500
chamado de Kotlin Locator
195
00:33:10,500 --> 00:33:13,500
é uma caça ao tesouro ao
redor aqui do espaço
195
00:33:13,500 --> 00:33:18,500
você vai ver que roda inclusive no relógio
195
00:33:18,500 --> 00:33:27,500
é feito todo em Kotlin, então dá pra ver quantas
coisas dá pra se fazer com Kotlin hoje
195
00:33:27,500 --> 00:33:35,500
e, claro, trabalhar em algo tão grande é
entrar na nova era do desenvolvimento mobile
195
00:33:35,500 --> 00:33:39,500
nós não conseguiríamos sem a
ajuda de uma comunidade maior
195
00:33:39,500 --> 00:33:4 1,500
então vou destacar duas palestras
195
00:33:41,500 --> 00:33:46,500
existem muitas outras palestras sobre
multiplaforma aqui na KotlinConf
195
00:33:46,500 --> 00:33:48,700
mas essas duas eu queria
realmente detacar aqui
195
00:33:50,500 --> 00:33:54,100
Alexandr vai falar sobre Kotlin
Multiplatforma em Ação
195
00:33:54,100 --> 00:33:57,500
e vai mostrar o preview de uma
biblioteca muito interessante
195
00:33:57,500 --> 00:34:00,500
que permite compartilhar UI
entre Android e iOS
195
00:34:00,500 --> 00:34:06,500
e também o Kevin vai dar insights sobre modelos
de concorrência para Kotlin no iOS
195
00:34:06,500 --> 00:34:11,500
o que é um tópico muito bom se você mexe
com algo relevante a nível de hardware
195
00:34:13,500 --> 00:34:17,900
mas multiplaforma não é só mobile, certo?
195
00:34:17,900 --> 00:34:19,500
multiplaforma está em todo canto,
195
00:34:19,500 --> 00:34:24,500
e claro, a web é um dos maiores casos de uso,
o mundo roda em cima da web
195
00:34:24,900 --> 00:34:30,500
e vou mostrar um pouco do que estamos
adicionando ao Kotlin JS no navegador
195
00:34:30,500 --> 00:34:32,500
nós agora temos a experiência
de quick reload,
195
00:34:32,500 --> 00:34:36,500
que você provavelmente já viu
no mundo JavaScript
195
00:34:36,500 --> 00:34:39,300
então você pode só mudar o código
195
00:34:39,300 --> 00:34:41,500
e o navegador vai recarregar
quase instantaneamente
195
00:34:41,500 --> 00:34:47,500
vamos melhorar essa experiência,
mas espero que seja divertido,
195
00:34:47,500 --> 00:34:53,500
você pode mudar de "hey Kotlin" para
"hey KotlinConf", "hey World", etc.
195
00:34:53,500 --> 00:34:55,500
e a aplicação recarrega... é muito legal
195
00:34:56,900 --> 00:35:00,900
estamos também melhorando o compilador JS,
195
00:35:00,900 --> 00:35:05,500
que com o novo backend pode
gerar binários muito menores
195
00:35:05,500 --> 00:35:14,500
então agora vamos de 700k para
400k o que faz ficar muito menor
195
00:35:14,500 --> 00:35:16,900
e o app otimizado pode ser
realmente muito pequeno
195
00:35:16,900 --> 00:35:21,500
esse é o benchmark do Kotlinx.Coroutines,
que é uma biblioteca substancial
195
00:35:21,500 --> 00:35:24,800
é bastante código e pode ser
comprimido para até 45kb
195
00:35:26,500 --> 00:35:28,500
além disso, estamos trabalhando na
interoperabilidade com JavaScript
195
00:35:28,500 --> 00:35:31,500
e sabemos que o mundo de
JavaScript é gigantesco
195
00:35:31,500 --> 00:35:35,300
estamos adicionando coisas, uma a uma,
195
00:35:35,300 --> 00:35:40,500
o novo ecossistema JS vai
suportar módulos ES
195
00:35:40,500 --> 00:35:42,500
que é o novo padrão
195
00:35:42,500 --> 00:35:44,500
e também estamos introduzindo o Dukat,
195
00:35:44,500 --> 00:35:48,500
que conecta os tipos do Kotlin
com os tipos do Typescript
195
00:35:48,500 --> 00:35:51,500
então, usando o Dukat, você
pode simplesmente
195
00:35:51,500 --> 00:35:54,500
adicionar uma dependência NPM ao
seu código JS atual
195
00:35:54,500 --> 00:36:00,500
e ele vai pegar os arquivos DTS
e converter para Kotlin
195
00:36:00,500 --> 00:36:05,500
então você tem acesso transparente aos tipos
do Typescript através dos tipos do Kotlin
195
00:36:06,500 --> 00:36:10,500
Sebastian vai dar mais detalhes
sobre isso aqui na KotlinConf
195
00:36:10,500 --> 00:36:15,500
outra coisa que gostaria de falar
relacionado a web,
195
00:36:16,800 --> 00:36:19,500
quem conhece WebAssembly?
195
00:36:20,100 --> 00:36:22,500
ok pessoal, vocês devem se informar!
195
00:36:22,500 --> 00:36:25,500
quem aqui já roda código
em WebAssembly?
195
00:36:28,500 --> 00:36:31,400
Posso dizer que talvez isso seja o futuro
195
00:36:31,400 --> 00:36:35,500
na verdade, WebAssembly
195
00:36:35,500 --> 00:36:40,500
é um novo padrão web suportado por
todos os principais navegadores
195
00:36:40,500 --> 00:36:44,500
onde eles basicamente expõem uma
máquina virtual aos usuários do navegador
195