{"id":2851,"date":"2014-10-03T10:41:44","date_gmt":"2014-10-03T13:41:44","guid":{"rendered":"http:\/\/blog.dialhost.com.br\/?p=2851"},"modified":"2014-10-03T10:41:44","modified_gmt":"2014-10-03T13:41:44","slug":"e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8","status":"publish","type":"post","link":"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/","title":{"rendered":"\u00c9 imprescind\u00edvel que voc\u00ea aprenda programa\u00e7\u00e3o funcional com Java 8?"},"content":{"rendered":"<p>\t\t\t\t&nbsp;<\/p>\n<figure id=\"attachment_2853\" aria-describedby=\"caption-attachment-2853\" style=\"width: 700px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.dialhost.com.br\/wp-content\/uploads\/2014\/10\/java.jpg\"><img loading=\"lazy\" class=\"size-full wp-image-2853\" src=\"http:\/\/blog.dialhost.com.br\/wp-content\/uploads\/2014\/10\/java.jpg\" alt=\"Java\" width=\"700\" height=\"260\" \/><\/a><figcaption id=\"caption-attachment-2853\" class=\"wp-caption-text\">Java 8<\/figcaption><\/figure>\n<p>Outro dia resolvi dar uma olhada no Java 8 e, de cara, me deparei com \u201c<a href=\"http:\/\/www.manning.com\/urma\/\" target=\"_blank\" rel=\"noopener noreferrer\">Java 8 In Action<\/a>\u201c, publicado por Manning. A primeira coisa que me surpreendeu \u00e9 como uma das proposi\u00e7\u00f5es de venda exclusivas do Java 8 \u00e9 a programa\u00e7\u00e3o funcional; as fun\u00e7\u00f5es s\u00e3o, agora, vari\u00e1veis de primeira classe, voc\u00ea pode pass\u00e1-las pelo seu c\u00f3digo como se fosse um int ou uma String. Essa \u00e9 uma grande mudan\u00e7a.<\/p>\n<p>Parece que as linguagens funcionais se tornaram mais populares nos \u00faltimos anos e h\u00e1 in\u00fameras para se escolher. <a href=\"http:\/\/en.wikipedia.org\/wiki\/List_of_programming_languages_by_type#Functional_languages\" target=\"_blank\" rel=\"noopener noreferrer\">Exemplos de linguagens de programa\u00e7\u00e3o modernas<\/a> incluem Clojure, JavaScript, Scala, e at\u00e9 mesmo Erlang, inventada na d\u00e9cada de 1980, dando um ar retr\u00f4 na nossa lista.<\/p>\n<p>Ent\u00e3o, por que existe essa mudan\u00e7a de dire\u00e7\u00e3o? Voc\u00ea pode at\u00e9 achar v\u00e1rias raz\u00f5es, mas vamos come\u00e7ar com a premissa de que a ind\u00fastria de melhores pr\u00e1ticas muda ao longo do tempo e at\u00e9 mesmo as linguagens mais populares um dia v\u00e3o cair em desuso. Imagino que se voc\u00ea ainda \u00e9 jovem o suficiente, um dia vai olhar para tr\u00e1s e falar: \u201cLembra quando costum\u00e1vamos usar o Java?\u201d Antes de verificar o porqu\u00ea da exist\u00eancia dessa mudan\u00e7a, vamos refletir sobre como chegamos aqui dando uma volta na d\u00e9cada de 1980\u2026<\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/IBM_Personal_Computer\" target=\"_blank\" rel=\"noopener noreferrer\">Segundo a Wikipedia<\/a>, o PC da IBM foi lan\u00e7ado em 12 de agosto de 1981. Os primeiros PCs foram entregues com BASIC (1), apesar de os \u201ccaras legais\u201d logo terem se cansado disso e mudaram para Turbo Pascal da Borland. A novidade do Turbo Pascal n\u00e3o durou muito tempo, porque a Microsoft comprou a Microsoft C (ou MSC), que logo se tornou, de fato, o padr\u00e3o. Foi legal porque se voc\u00ea fosse inteligente poderia acessar o hardware diretamente, usando int 21H, int 10H e int 14h e outros, e se me lembro qual interrup\u00e7\u00e3o fez o qu\u00ea, ent\u00e3o voc\u00ea \u00e9 velho como eu (2)\u2026<\/p>\n<p>Existiram outros computadores antes do PC da IBM, incluindo Apple II, Commodore Pet etc., mas o PC da IBM era um PC \u201cadulto\u201d para aplica\u00e7\u00f5es voltadas para neg\u00f3cios. Eu me lembro de tentar comprar um para um projeto que fiz em 1985, que custou milhares de libras e voc\u00ea n\u00e3o conseguia um nem por amor nem por dinheiro, todo mundo queria um; no entanto, eu discordo.<\/p>\n<p>No final de 1980, veio o Microsoft Windows SDK, baseado em C, que est\u00e1 por a\u00ed desde Windows 1 foi constru\u00eddo (aparentemente a Microsoft n\u00e3o usou janelas sobrepostas no Windows 1, porque copiou a Macintosh da Apple e provavelmente violou suas patentes \u2013 mesmo que a Apple tenha, supostamente, roubado a ideia para o Mac da Xerox Parc; se isso \u00e9 verdade, eu n\u00e3o eu n\u00e3o tenho como confirmar). O SDK realmente decolou no Windows 2, apresentando ao mundo o callback, programa\u00e7\u00e3o baseada em mensagens; uma ideia que eles supostamente roubaram do X-Windows e Motif no Unix.<\/p>\n<p>L\u00e1 pelos meados dos anos 90, linguagens se tornaram orientadas a objeto; classes foram inventadas para unir m\u00e9todos e dados, introduzindo os conceitos de oculta\u00e7\u00e3o de dados e encapsulamento. \u2018C\u2019 se tornou \u2018C++\u2019 e se voc\u00ea usava o Windows SDK nessa \u00e9poca, ent\u00e3o voc\u00ea migrou para Microsoft Foundation Classes; um wrapper OO ao redor do SDK. Essa mudan\u00e7a foi vista como uma coisa boa. Um grande problema com as antigas fun\u00e7\u00f5es baseadas em linguagens era que voc\u00ea poderia alocar vari\u00e1veis globais em qualquer lugar em sua base de c\u00f3digo e alter\u00e1-las usando qualquer fun\u00e7\u00e3o a qualquer momento. Isso, obviamente, causou grandes estragos em v\u00e1rios sistemas, j\u00e1 que voc\u00ea n\u00e3o podia ter certeza de que mudando o estado de uma vari\u00e1vel global n\u00e3o introduziria um bug num cantinho escondidinho do seu aplicativo. O outro grande problema com a linguagem C era que voc\u00ea era respons\u00e1vel pela aloca\u00e7\u00e3o e desaloca\u00e7\u00e3o de mem\u00f3ria e se os ponteiros de mem\u00f3ria eram globais, ent\u00e3o, quando voc\u00ea os acessava, poderia n\u00e3o ter 100% de certeza que o ponteiro ainda era v\u00e1lido e, se n\u00e3o fosse, voc\u00ea estava perdido.<\/p>\n<p>Junto com as linguagens orientadas a objeto surgiram as metodologias orientadas a objeto, culminando no final de 1990 com o <a href=\"http:\/\/en.wikipedia.org\/wiki\/Unified_Modeling_Language\" target=\"_blank\" rel=\"noopener noreferrer\">UML<\/a>. Isso foi uma fus\u00e3o do <a href=\"http:\/\/en.wikipedia.org\/wiki\/Grady_Booch\" target=\"_blank\" rel=\"noopener noreferrer\">M\u00e9todo Booch<\/a>, OMT de <a href=\"http:\/\/en.wikipedia.org\/wiki\/James_Rumbaugh\" target=\"_blank\" rel=\"noopener noreferrer\">James Rumbaugh<\/a> e OOSE de <a href=\"http:\/\/http:\/\/en.wikipedia.org\/wiki\/Ivar_Jacobson\" target=\"_blank\" rel=\"noopener noreferrer\">Ivor Jacobsen<\/a>, e eram rigorosas quando se tratava de projetar o software. Todos os tipos de ferramentas estavam dispon\u00edveis para o trabalho de documentar e comunicar os seus projetos e, por experi\u00eancia pr\u00f3pria, alguns deles eram de qualidade bem duvidosa, o que acaba levantando a quest\u00e3o: os desenvolvedores realmente estavam usando UML para escrever seus programas UML? Se sim, ent\u00e3o esses produtos n\u00e3o eram realmente uma boa propaganda para UML.<\/p>\n<p>Atualmente, voc\u00ea n\u00e3o v\u00ea muitas organiza\u00e7\u00f5es por a\u00ed usando UML, embora eu ainda o fa\u00e7a quando preciso de um design direto na minha cabe\u00e7a. Minha primeira escolha da ferramenta UML \u00e9, e sempre ser\u00e1, l\u00e1pis e papel. \u00c9 simples e funciona.<\/p>\n<p>Finalmente, em minha breve hist\u00f3ria da programa\u00e7\u00e3o, temos o Java. Inicialmente lan\u00e7ado em 1995 e se tornando popular alguns anos depois, o Java foi baseado na ideia de melhoria do C++. Isso, principalmente, porque ele \u00e9 executado em sua pr\u00f3pria m\u00e1quina virtual, que cuida da aloca\u00e7\u00e3o e desaloca\u00e7\u00e3o de mem\u00f3ria para voc\u00ea. Tornou-se um verdadeiro padr\u00e3o das linguagens orientada a objeto.<\/p>\n<p>O detalhe desse cronograma amplamente constitu\u00eddo \u00e9 o conceito sob pinning de programa\u00e7\u00e3o imperativa. Em resumo, a linguagem Assembly deu origem a C, C para C++ e OO, e C++ e OO levando para Java \u2013 todas as imperativas. A Wikipedia oferece uma boa vis\u00e3o geral de programa\u00e7\u00e3o imperativa, ent\u00e3o eu n\u00e3o vou entrar em detalhes, mas vou resumir a programa\u00e7\u00e3o imperativa aquela com fun\u00e7\u00f5es e estado mut\u00e1vel, o que significa que voc\u00ea pode ter vari\u00e1veis globais e de inst\u00e2ncia.<\/p>\n<p><a href=\"http:\/\/msdn.microsoft.com\/en-gb\/library\/bb669144.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Como a programa\u00e7\u00e3o funcional <\/a>difere de programa\u00e7\u00e3o imperativa? A ideia principal \u00e9 que as fun\u00e7\u00f5es s\u00e3o dados, assim como inteiros e strings; algoritmos s\u00e3o implementados em termos de chamadas de fun\u00e7\u00e3o (loops while e for n\u00e3o existem, voc\u00ea usa recurs\u00e3o) e as vari\u00e1veis s\u00e3o sempre locais.<\/p>\n<p>Voc\u00ea poderia ser for\u00e7ado, de forma enganosa, a pensar que, por ter o conceito de uma fun\u00e7\u00e3o e n\u00e3o de classes, linguagens como C e Turbo Pascal s\u00e3o linguagens de programa\u00e7\u00e3o funcional. Elas n\u00e3o s\u00e3o. S\u00e3o linguagens de programa\u00e7\u00e3o imperativas, porque t\u00eam os dados de estado.<\/p>\n<p>Ent\u00e3o, o que mudou? A resposta que foi dada pelos desenvolvedores Erlang, e que voc\u00ea vai encontrar no livro de Manning Java 8, \u00e9 que foi o hardware que mudou. \u201cComputadores\u201d, pelo menos os que que voc\u00ea encontrar\u00e1 em uma sala de servidor, s\u00e3o agora multiprocessadores sofisticados, coisas multi-core com terabytes de mem\u00f3ria. Tomemos, por exemplo, o servidor <a href=\"http:\/\/www8.hp.com\/uk\/en\/products\/proliant-servers\/product-detail.html?oid=6636692#!tab=specs\" target=\"_blank\" rel=\"noopener noreferrer\">HP Proliant DL580 G8<\/a>; ele tem at\u00e9 quatro processadores, e cada um pode ter at\u00e9 15 n\u00facleos de 64 bits. Isso \u00e9 muita coisa, especialmente quando comparado com o Intel 8086 16bit, o PC original da IBM. Supondo que voc\u00ea esteja rodando Unix e que executou o comando top, ent\u00e3o o uso m\u00e1ximo do processador seria dado como 6000%. Dado esse aumento consider\u00e1vel no poder das m\u00e1quinas, os desenvolvedores de software precisam de linguagens que as suportem, permitindo que eles usem com facilidade todo esse poder de processamento, e \u00e9 a\u00ed que entra a programa\u00e7\u00e3o funcional.<\/p>\n<p>Na programa\u00e7\u00e3o imperativa, voc\u00ea pode ter vari\u00e1veis de inst\u00e2ncia, vari\u00e1veis globais e estado mut\u00e1vel. Eles podem ser compartilhados entre threads, embora compartilhar esses recursos seja dispendioso e ineficiente em termos de sincroniza\u00e7\u00e3o e bloqueio. \u00c9 tamb\u00e9m bem lento e dif\u00edcil de fazer, pois voc\u00ea precisa evitar conflitos e outros problemas parecidos. A programa\u00e7\u00e3o funcional elimina todos esses problemas, porque acaba com toda a tediosa perda de tempo com vari\u00e1veis de inst\u00e2ncia e estado. Isso significa que voc\u00ea n\u00e3o tem que se preocupar com, bloqueio, sincroniza\u00e7\u00e3o, thread ou processos (chame-os como quiser) pois eles podem ser independentes uns dos outros.<\/p>\n<p>Essa \u00e9 a teoria, mas isso aguenta exames mais aprofundados? N\u00e3o nos esque\u00e7amos de que \u00e9 poss\u00edvel escrever bons programas multi-threaded que usam de forma eficaz os v\u00e1rios n\u00facleos de um multi-core e multi-processador de uma m\u00e1quina com Java 6 ou 7 imperativo. Assim como linguagens de programa\u00e7\u00e3o funcional, voc\u00ea tem que pensar sobre o que voc\u00ea est\u00e1 fazendo, planejar um projeto apropriado e execut\u00e1-lo usando as \u201cmelhores pr\u00e1ticas\u201d de neg\u00f3cios. S\u00f3 porque o Java 6 ou 7 \u00e9 uma linguagem imperativa, voc\u00ea n\u00e3o tem que compartilhar dados entre threads\/processos e utilizar sincroniza\u00e7\u00e3o e bloqueio. Isso \u00e9 s\u00f3 uma quest\u00e3o de design. A conclus\u00e3o l\u00f3gica \u00e9 que voc\u00ea pode fazer issosem programa\u00e7\u00e3o funcional, que leva, possivelmente, \u00e0 verdadeira raz\u00e3o por tr\u00e1s da popularidade de linguagens de programa\u00e7\u00e3o funcional: as pessoas gostam de us\u00e1-las!<\/p>\n<p>Voc\u00ea poderia dizer, portanto, que as linguagens funcionais s\u00e3o a \u201c\u00faltima moda\u201d, mania, tend\u00eancia moda. Eu tenho que enfatizar que \u201cmoda\u201d no desenvolvimento de software n\u00e3o \u00e9 necessariamente uma coisa ruim e n\u00e3o \u00e9 nada novo. Se voc\u00ea voltar para a minha hist\u00f3ria acima, ver\u00e1 que a linha do tempo est\u00e1 cheia de tend\u00eancias e manias: a ado\u00e7\u00e3o de C sobre Turbo Pascal e BASIC, a mudan\u00e7a de paradigma de Orienta\u00e7\u00e3o a Objeto e at\u00e9 mesmo a mudan\u00e7a para Java com suas promessas de compile once e run anywhere.<\/p>\n<p>\u00c9 imprescind\u00edvel que voc\u00ea aprenda programa\u00e7\u00e3o funcional com Java 8? Pergunte-me daqui a alguns anos\u2026<\/p>\n<p>1 \u2013 Todos os Fatos hist\u00f3ricos neste artigo s\u00e3o garantidos pela minha mem\u00f3ria falha e imprecisa.<\/p>\n<p>2 \u2013 Me corrija se eu estiver errado, mas int 21H = Fun\u00e7\u00f5es MSDOS, int 10H = acesso direto \u00e0 tela, int 14H = serial I\/O.<\/p>\n<p>&#8212;&#8212;-<\/p>\n<p>Artigo de Roger Hughes, publicado originalmente no <a href=\"http:\/\/imasters.com.br\/linguagens\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/\" target=\"_blank\" rel=\"noopener noreferrer\">iMasters<\/a>.\t\t\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\t\t\t\tAssim como linguagens de programa\u00e7\u00e3o funcional, voc\u00ea tem que pensar sobre o que voc\u00ea est\u00e1 fazendo, planejar um projeto apropriado e execut\u00e1-lo usando as \u201cmelhores pr\u00e1ticas\u201d de neg\u00f3cios.\t\t\t\t<\/p>\n","protected":false},"author":1,"featured_media":2852,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[99,132,158],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u00c9 imprescind\u00edvel que voc\u00ea aprenda programa\u00e7\u00e3o funcional com Java 8? - Blog DialHost<\/title>\n<meta name=\"description\" content=\"\u201cModa\u201d no desenvolvimento de software n\u00e3o \u00e9 necessariamente uma coisa ruim e n\u00e3o \u00e9 nada novo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00c9 imprescind\u00edvel que voc\u00ea aprenda programa\u00e7\u00e3o funcional com Java 8? - Blog DialHost\" \/>\n<meta property=\"og:description\" content=\"\u201cModa\u201d no desenvolvimento de software n\u00e3o \u00e9 necessariamente uma coisa ruim e n\u00e3o \u00e9 nada novo.\" \/>\n<meta property=\"og:url\" content=\"\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog DialHost\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:published_time\" content=\"2014-10-03T13:41:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2019\/04\/og-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialhost\" \/>\n<meta name=\"twitter:site\" content=\"@dialhost\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\",\"name\":\"DialHost Internet\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\",\"https:\/\/twitter.com\/dialhost\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2019\/03\/marca-dialhost.png\",\"width\":81,\"height\":81,\"caption\":\"DialHost Internet\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"name\":\"Blog DialHost\",\"description\":\"Os melhores conte\\u00fados sobre Desenvolvimento Web, Marketing e Neg\\u00f3cios\",\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.dialhost.com.br\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#webpage\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/\",\"name\":\"\\u00c9 imprescind\\u00edvel que voc\\u00ea aprenda programa\\u00e7\\u00e3o funcional com Java 8? - Blog DialHost\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#primaryimage\"},\"datePublished\":\"2014-10-03T13:41:44+00:00\",\"dateModified\":\"2014-10-03T13:41:44+00:00\",\"description\":\"\\u201cModa\\u201d no desenvolvimento de software n\\u00e3o \\u00e9 necessariamente uma coisa ruim e n\\u00e3o \\u00e9 nada novo.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/\",\"url\":\"\/blog\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/\",\"url\":\"\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/\",\"name\":\"\\u00c9 imprescind\\u00edvel que voc\\u00ea aprenda programa\\u00e7\\u00e3o funcional com Java 8?\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\"},\"headline\":\"\\u00c9 imprescind\\u00edvel que voc\\u00ea aprenda programa\\u00e7\\u00e3o funcional com Java 8?\",\"datePublished\":\"2014-10-03T13:41:44+00:00\",\"dateModified\":\"2014-10-03T13:41:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/e-imprescindivel-que-voce-aprenda-programacao-funcional-com-java-8\/#primaryimage\"},\"keywords\":\"feed de parceiros,java,noticias\",\"articleSection\":\"Dicas e Not\\u00edcias\",\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\",\"name\":\"DialHost Internet\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/05feec2f99aef1c42b09aeaa637ee66f?s=96&r=g\",\"caption\":\"DialHost Internet\"},\"description\":\"H\\u00e1 mais de 18 anos proporcionando um servi\\u00e7o de hospedagem de sites voltado 100% na Experi\\u00eancia e Sucesso do Cliente, prezando a qualidade, transpar\\u00eancia e seguran\\u00e7a.\",\"sameAs\":[\"https:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/twitter.com\/dialhost\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/2851"}],"collection":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2851"}],"version-history":[{"count":0,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/2851\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media\/2852"}],"wp:attachment":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}