oi pessoal o que a gente vai fazer aqui a gente vai descobrir se esse java e lento porque com essa dúvida do java ser lento não é óptima ideia é mais ou menos essa a gente tem cada um desses romã dinho's que representam o comando do tal do byte code que jvm sabe de que a virtual machine esse computador de mentiras entender ele sabe nem mas como ele vai mandar o windows ou linux ea máquina um computador que está embaixo dele rodar aquela instrução ele vai ver que mil é um comando daquela máquina virtual que
a loja memória mas há pouca memória no windows no link de uma casa se a arquitetura de computadores diferentes são feitas de forma diferente então será que ele vai pegar cada um desses command ninhos e traduzir certo se ele ficar fazendo isso estou bastante trabalho na porque olha só imagina se eu tenho aqui um fórum escrevendo aqui uma linguagem parece ser mais um pouco importa a linguagem se eu tenho um forcing do que vai de 0 a 100 no nosso código e eu compilou e vai bem rápido porque ele faz uma série de otimizações mas
imagina que ele transformar isso num assembléia não sei qual assim o acm do paulo inventei uma assembléia só o milan desse código imagine que ele faz isso aqui incrementar x pula por outra função de elite e executa aí depois compara x em 1907 é continuar forte senão continua o restante do programa também então há a ideia é será que dá para a gente fazer melhor do que isso né será que dá pra gente ir além e fazer um código mais inteligente porque só imagine toda hora eu fico pra esse fora que vai de 0 a
100 quanto os chamados vinhos para o sistema ele vai fazer ele parece que vai fazer uma incrementada ou sem o número vai deletar uma chance como essa a função considera que ela só uma tacada só faz comparar com 100 e depois fazer um golzinho na memória naquele shopping country lá pra saber para onde vai executar e isso acaba laço então para cada um desses sem ele faz executa 4 instruções o que vai dar mas menos 400 operações no seu corpo duro então esse seria a seguinte compilasse esse código e executasse dessa maneira inocente ou se
a gente deixasse a jbm fazer aquela troca que eu falei pra vocês lá como eu faço para incrementar os x é assim agora como é mais perceptível delete baiano de led agora como eu comparo x 1 100 mas assim eu vou executar 400 operações a minha pergunta é tem como fazer melhor que isso e tem né eu já deixei aqui ó imagine vc toda a gente faz um incremento chama de led com pára e volta incremento acima da de combate e volta olha lá a idéia é essa incrementada chama de elite incremento a chamada elite
incrementa chama de elite incrementação da elite pois isso várias vezes por exemplo de 10 em 10 a imagem faz o chinelo que sem a ainda que sem então agora volta para o começo desse monte de incremento eletricamente eletricamente eletricamente dessa forma a gente economizou muitos compara-se o x é menor do que 100 pula para o foco está certo em vez de a gente fazer aquelas 400 operações agora vou fazer mais ou menos 200 mais poucas nessa compadre pula mais 11 às 21 10 10 10 e 11 221 operações se cada operação tiver o mesmo custo
esse meu código vai ser quase o dobro da performance está certo é que a gente deu uma melhorada na senda do código como eu teria feito isso no código incêndios e teria feito ou um código na sua linguagem preferida se quiser se inscrever se encontre já escolhe não é sempre alguma coisa assim né já imaginou fazer isso vai de 0 a 100 mas por onde desce desce pai dela é o x 1 x + 16 + hoje 23 em idéias é bom escrever código assim cuidado esse código aqui da justa causa da sua empresa dá
certo a gente não vai escrever o código assim para tentar otimizar o que a gente não conhece o que é justo interessante aqui ó até deixei o que seu chefe e vai fazer o quê é impossível descrever um código dessa forma que é isso aqui é um código que a gente se inscreve na vida real dá certo esse código que vai ser gerado ou por um compilador corinthians hoje sem uma linguagem tradicional que compila como a gente discutiu naquelas lojas mais tradicionais ou então o próprio java vai fazer isso aqui ó transformar esse fórum na
hora que cumpri la lá na hora que estiver executando na jvm ele vai estar fazendo o quê em vídeo que fazer essa essa interpretação pura que é por isso algumas pessoas chamavam o japão 10 de interpretada existem algumas linguagens são puramente interpretadas ele vai fazer algo mais bonitinho e vai fazer como se fosse esse código aqui também como ele faz isso ele tem dentro da jvm ele tem um compilador a pau mas eu já sei não o jovem foi o que transformou nosso código java para que ele assine vizinho lá que a gente olha debate
code mas esse bytecode bonitinho aqui que é uma linguagem de máquina do jvm por sua vez quando você roda chama java no seu código quando a gente vem aqui no nosso código fonte e a gente chama java também quem está rodando jvm ele também tem embutido dentro dele um cara que chama compilador que roda bem na hora bem na hora em dois dias em time é o tal do xixi também é o tal do git como a gente chama isso não existe um comando git quando a gente executa que o nosso java ele já vai
estar executando nosso código também ele vai estar com pilão aquele código para o windows no linux ou mac sem que a gente veja melhor ainda ele vai fazer isso às vezes porque às vezes quebra só lembra que no nosso teste que tenha o código do ônibus é eu vou dar um kart aqui no teste ponto já só pra vocês verem um código simples está dentro do nosso que a ti está dentro do nosso ônibus quando java tema da nossa classe teste que fazia som código sempre fazendo mil quando ele compilou ele gerou esse teste ponto
clash tanto que a gente fez o jb - ser só para ver que código que ele teria gerado aqui nesse teste ou nesse ônibus e daqui o código mais ou menos o código de máquina jvm entende paulo esse código compilado pelo windows ou o mac não está única pessoa que sabe entender esse código java virtual machine tem uma especificação ali falando que ela deve ser feita quando faz um miúdo obstetra ou induzi no total eles não sabem de nada isso aqui também só que na hora que eu executo java teste ele vai lá e interpretado
como eu faço mil como eu faço dupla como faz esse tal de estoque e nem sei o que é e ele vai executando a questão é parece que você está lento é catarse no cada comando anterior e tantando cada um desses comandos então eu falei para vocês que dentro da virtual machine vem um compilador que você não precisa se preocupar ea gente também detalhes internos no youtube emissão transparentes para gente apesar de ser líderes internos a gente pode vir aqui usar opções avançadas do da jpm todas começa com menos xx e ela tem uma chama
print compilation eu estou pedindo pra ele imprime pra mim tudo o que for compilada duplo windows mac linux que ele está compilando que está querendo escutar mais rápido como aquele negócio do forte e mostrar pra vocês que é uma utilização muito básico chamando lo de fora desenrolar do fórum está certo será que ele tá fazendo isso no nosso código teste olha vamos rodar poder agora com esse - xx projeto complexo que também não é uma opção que a gente costuma usado é mais pra você está aprendendo aqui esses detalhes importantes porque o java não é
lento dá certo aqui ele está listando para a gente tudo método todo o código que libera para roupa esse método achei melhor compilam primeiro e olha que para ele está comprando um monte de metro interno da nossa ilha de java tá certo olha lá um monte nebo felippo 30 ea nossa classe teste à nossa casa ônibus e para aqui que não tem sabe por que não tem a nossa única nossa teste porque tem essas outras porque ele tem alguns números setúbal dentro da retoma china que que especificam quando é que eu devo compilar um método
para a linguagem nativa para a máquina verde do qual estou rodando o mac incluindo somos e que por que esse método foi executado muitas poucas vezes como foi nosso liu da classe ônibus não compensa o tempo dele pará e compilar quilo para o código nativo para depois aproveitar o tempo de compilar pra limpar a máquina por um nativo é considerável então isso só deve acontecer quando ele começar a ver que aquele gol esquentou que o suficiente bem com quem vai forçar para ver porque é tão forte assim você conquista de um fórum é você vai
ver que ele vai começar com um pilar que código símbolo executando muito e vou fazer um código mais bonitinho para vocês só eu deixei aqui no nosso nosso slide eu deixei o exemplo quem lembre se aqui ó vamos para vamos enxergar o mesmo elenco na série de fibonacci né e o 2 é igual mais 13 é dois mais 153 mais 2 e assim por diante se a gente implementar esse código da maneira mais bobinha mais ingênua é aquela forma recursiva não é o chamado de fibra oculto java que o hesf eu vou criar um método
estatístico que é o que calcula o fibo tá esthetic que devolve um link que é o fibo enézimo inteiro do fibonacci da seqüência de fibonacci você lembra da rega regra dele é mais ou menos assim né o embate da primeira e da segunda posição vale vale 1 é a primeira posição ea segunda vale 1 se for maior que isso então se o enem for um o wing for 2 a gente sabe que esse aqui é o retorno o ensaio com a resposta caso contrário qualquer definição da da série de filmes a gente retorna o fim
o nat do documento anterior não é bom é o bolatti do anterior lembra que essa sequência né o do 8815 que o figurante da posição anterior mais 13 que o tribunal de dois anteriores não faço fico de -1 mais o fibo dn - 2 essa aqui também eu preciso de um público que está é de que foi de man só para imprimir é o enésimo onézimo filmes trilhares e aqui eu vou escrever o nosso system out print alienem fibo o sexto elemento da sequência dificuldade também são código pretende testar e ver se esse ficou que
vai compilar se acredite acreditar em companhia da virtual machine vai falar o país executou muito bom com pilar é não salvei aqui joga-se vidotto java está tive não existe o certo é a palavra chave você deve ter visto enquanto estava digitando equipes até me avisar obrigado vamos compilar aqui agora vou executar o java fibo ele falou que a 8 agora se eu fizer java - xx dois pontos mais print compilation fibo olha lá opa não foi porque não foi porque o filhote de 6 se você conhecer um pouquinho da análise de seu novo ritmo e
trivial ele está fazendo recurso então os pais chamados ele chama de 5 do quadro chamado single chamado 43.4 chamado 32 né dá mais ou menos 2 elevado ainda em 2012 ainda não foi um número muito grande e não executou esse fibo tantas vezes que falou foi melhor com pilar mas sente aumentar esse número pouco pra falar não quero dar o da sexta eu quero o 30º elemento vai fazer algo em torno de 2 levada 30 que é o número já é um pouquinho mais considerável também se eu executar aqui ainda agora foi olhar lá eu
também não sei exatamente quando é esse momento a gente pode fazer até como exercício aí vai ser para você descobrir quando ele está fazendo isso quando ele passou a cumprir lá então repare que em algum momento ele chega para roubar não é melhor eu cumpri la em cimento do filme porque já chamaram tantas vezes eu acho que vai compensar ele uns heurísticas internas para dizer se ele deve ou não deve compilar e código por código nativo não repara como também disse que uma das principais coisas e que tem a ver com a china do java
e assim como eu disse para vocês ela foi a primeira linguagem que trouxe muitas novidades por uma stripper mercadão de linguagens de programação inclusive sigit que já existe em outras linguagens mais de pesquisa no meio acadêmico foi lá que trouxe disse time comparado à versão 1.1 para uma linguagem de mercado é em obras e mais modernas de hoje no dot.net patamar desde quando nasceu possuem essas características que é legal essa opção - xx que não usa essas avançadas se você abrir algum desses documentos do java ou java tm options e procurar tá já a vivência
do xx options você vai ver que existe uma quantidade de opções avançadas não só pra você divulgar como a gente fez mas com um pra você se topar e falar olha eu quero opções agressivas de otimização do virtual machine gun até mesmo em algumas vezes ou mais filhos pra você falar quando o método foi executado mais cem vezes com o piloto você vai ver que senti me muito esse número o sistema ficar lento porque vai começar a querer controlar tudo antes de executar então tem um monte de opções para quem é muito especialistas em arquitetura
já começa a conhecer porque sabe que um sistema muito grande distribuído essas opções especial de capa do colector de performance de compilação a gente vai aprender alguma dessas coisas elas são muito utilizadas também quando você tem um sistema muito crítico no dia a dia de uma aplicação mediano sistema web mesmo aqui como aluna normalmente não é necessário você também tendo em coisas tão profundas assim da virtual machine para falar mais um pouquinho aqui da importância da retomada chinin então são essas as características tornaram java uma ferramenta tão importante não por isso orienta o objeto que
hoje em dia toda a linguagem é mas é por ele aguentar aqui eu estou rodando no mac pode estar rodando linux ou windows seus resultados têm de ser o mesmo é a não ser essa essas opções específicas devem tomar chile podem sim variar por sistema operacional ou por versão da sua mão que eu acho que a gente vai falar que no próximo ano a higiene em cima memória ela tem segurança lá dentro de um sandbox então se o problema já se for inscrito dó a maneira natural ele não consegue essa coisa sistema operacional que você
não dele permissão ele tem essas otimizações que eu falei aí do uíge com palha neto um goleador e no git e algumas vezes essa combinação que eu mostrei pra vocês que às vezes ele compila as vezes não pode ser até mais gerar um código mais rápido do que a compilação tradicional do gc sido sei porquê que a combinação tradicionais diz que estática onde mas disse ser um arquivo e gera o seu e xz o seu executável e nunca mais mudas é com o escritório fica mudando na memória então quando ele faz aquelas utilizações de código
pode ser que ele não tenha tomado a melhor decisão de todas já o chute ele possui coisas tão avançadas dentro dele que às vezes ele compila e se algo não ficou tão rápido quanto ele imaginava ficar sabendo que ele faz ele compila de novo usando uma outra utilização aquele forte e desenrolou a nike e mostrou não ficou tão bom ele vai tentar um outro utilização mais maluca e aí cronômetro porque ele está executando aquele código certo a china executa e compila ao mesmo tempo é um ambiente único híbrido tanas pessoas vão chamar tudo isso de
computação híbrida então ele consegue tinha essa vantagem e às vezes ele pode ser mais rápido que a compilação de algumas linguagens tradicionais para alguns casos específicos claro um outro ponto importante é que jvm quando fala java virtual machine não há um software java virtual machine se você googla é uma especificação tanto que você pode procurar que o java virtual machine especifiquei junho é um pdf gigante super complicado que é um livro arquiteto java 7 e pode pegar do g8 é ele não especificado como funciona com cada casa aqueles com bandinhas debate code devem funcionar quais
são as opções né de cada com quem estranha estrutura interna deve funcionar de quantos bairros de 60 então todo mundo que quer ser uma vez soma chega precisa seguir essa explicação inclusive quem ao que você tem provavelmente instalado no seu computador a oracle java virtual machine e sabe o que é legal assim como slide mostrou existem outras também não existe só da hora existe bm pode existir ea sua a da sul e de várias outras empresas de qualquer maneira o resultado da sua obrigação tem que ser o mesmo porque elas têm que seguir a classificação
se eu fiz se eu fiz isso em ótimo chute lindo lá tem de sair lá mas o legal é que uma empresa grande isso pode pode aquilo lá parecia mais rápido gaste menos memória funciona melhor em várias sedes ea hora que eu cheguei para sua empresa e fala olha banco grande que você trabalha a minha nova versão xingasse um pouco menos de memória algumas coisas e sabe trabalhar melhor com performance nesse caso troca sua pena minha que custa 1 1 bilhão ou eu vou dar de graça porque você já é nosso cliente que ela vai
ser mais rápida e isso é legal se você trocar sendo mais rápida não você tem a garantia de que seu código vai funcionar exatamente igual porque é uma especificação tem que funcionar se é jovem ela recebeu um selo da oracle falando que não era respeitado do que eu falei tá certo então essa é uma vantagem muito grande que as empresas utilizavam para falar porque eu vou adotar hora jvm por causa disso quem chama de vendedor ou quem vem do login aquilo que ela não precisa usar o windows a microsoft não posso trocar públicos por que
não vai funcionar não o java você pode não só trocar o sistema operacional como você pode trocar mas eles um dia a sanfelice e foi o que aconteceu na ação foi comprada quem é que vai cuidar disso a ficar tranqüilo você vai ter uma outra opção cada hora ou o da ibm aí você substitui software a sua aplicação vai continuar funcionando então por empresa grande banco governo que a independência de vendedor não quer ficar amarrada vida inteira para uma empresa e isso de ser uma especificação isso é ser um pdf de ser uma organização que
organize definir o que é isso é muito interessante para as empresas porque isso garante a elas uma certa segurança ao futuro e ainda mais para você fazer software são grandes um último detalhe da jpm que eu queria mostrar então a idéia aqui é da plataforma são os detalhes ricos que realmente chama atenção puxava a plataforma a máquina virtual que tive alguns detalhes aqui que a gente vai conhecer alguns outros durante o curso as bibliotecas que tem muitas e eu queria dar um último detalhe as várias linguagens já que a gente tem estado batbold a gente
viu que a jvm entende esse bate code pouco importa se quem gerou esse pacote pelo código de um código oscar do código button eo código de cloud ou de qualquer outra linguagem o mesmo do android o android é um caso um pouco diferente não vou entrar nos detalhes e eu deixei está também o ruby que é uma dessas linguagens né famosas e populares existe uma implementação do rubi que se chama de ruby que a rodada na virtual machine java então isso é muito legal porque se você compilar o seu código hub eu até deixei aqui
um código você deve escrever não sou bom derrubar um teste contra o rb eu vou fazer aqui putz olá mundo né então pegar esse código e eu instalei se derrube se pode instalar na sua na sua máquina também ele vem aí com um de pis e cofins em teste ele carrega e demora um pouco mais no computador tradicional porque ele é muito mais complicado ele tem outra língua ele passa por dois momentos e eu posso chamá-lo de ruby aqui nesse nosso teste teste com flores também usou lado ele esses dez pontos ganhos ele jogou em
cima daquele que tinha então utiliza esse derrube se for ver o script dele ele está chamando a java virtual machine e chamando a implementação do clube dele existem outras línguas que vão fazer isso de uma forma mais seca ainda vai fazer como esse desenho que eu fiz aqui pra vocês ela vai pegar sua linguagem e traduzir diretamente para baixo de java onde quase bati com djavan nisso importância enxergar essas grandes vantagens que eram também os estuques que ele tem por trás está acontecendo o tempo todo que a gente não vê que são por esses motivos
que você provavelmente aprendeu já vem trabalhando com o jogo até hoje ou quer trabalhar como java toque [Música] [Aplausos]