{"id":2893,"date":"2019-11-17T20:56:27","date_gmt":"2019-11-17T23:56:27","guid":{"rendered":"https:\/\/www.itexto.com.br\/devkico\/?p=2893"},"modified":"2019-11-17T20:56:36","modified_gmt":"2019-11-17T23:56:36","slug":"do-java-ao-net-parte-1-a-plataforma","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=2893","title":{"rendered":"Do Java ao .NET &#8211; Parte 1: Qual vers\u00e3o do .NET?"},"content":{"rendered":"\n<p>Desde 1996 Java tem sido minha plataforma favorita de desenvolvimento, mas em 2019 precisei aprender .net <font color=\"#191e23\"><span style=\"background-color: rgb(232, 234, 235);\"><b>a fundo<\/b><\/span><\/font>. Sendo assim iniciei um projeto de aprendizado que gerou esta s\u00e9rie de posts que tem como objetivo principal ajudar outros desenvolvedores Java que de repente precisem atuar na plataforma .net e n\u00e3o saibam por onde come\u00e7ar.<\/p>\n\n\n\n<p>Voc\u00ea pensa em Java mas precisa lidar com c\u00f3digo .net legado ou criar uma nova solu\u00e7\u00e3o nesta plataforma? Esta s\u00e9rie de posts foi escrita para voc\u00ea.<\/p>\n\n\n\n<p><strong>Nota importante:<\/strong> sou iniciante em .net, sendo assim posso cometer algum erro nesta s\u00e9rie de posts, por favor me ajude me enviando as corre\u00e7\u00f5es caso as encontre, ok? Toda ajuda \u00e9 bem vinda. Publico aqui apenas as impress\u00f5es que estou obtendo nesta experi\u00eancia de aprendizado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eu, o .net e a Microsoft<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">O primeiro contato com .net 1.0<\/h3>\n\n\n\n<p>Meu background nos \u00faltimos dez anos (pelo menos) tem sido essencialmente Java, Linux e diversas tecnologias open source nos projetos em que atuo. Com o passar do tempo o Windows foi se mostrando uma plataforma praticamente irrelevante para mim, at\u00e9 por que pouqu\u00edssimos dos clientes da itexto <strong>at\u00e9 ent\u00e3o<\/strong> tem sistemas executados nesta plataforma. Mas nem sempre foi assim&#8230;<\/p>\n\n\n\n<p>Antes do Java se tornar a minha expertise fui um desenvolvedor Microsoft. Visual Basic 6 (comecei no 3), VBA e Delphi eram minhas principais ferramentas (lembro que na \u00e9poca meu sonho era viver de Java, paix\u00e3o bem antiga). Eram arquiteturas muito mais simples: desktop essencialmente, usando bases de dados como Access (sim, acredite), MySQL (3) e Interbase\/Firebird quando o projeto era Delphi. Se algum desenvolvimento web era feito, usava PHP ou HTML\/CSS\/JavaScript e n\u00e3o mais do que isto.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"226\" height=\"223\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/vb6.jpg\" alt=\"\" class=\"wp-image-2896\"\/><\/figure><\/div>\n\n\n\n<p>Mas nesta \u00e9poca senti na pele o que \u00e9 ver sua plataforma de trabalho ser morta. A Microsoft havia lan\u00e7ado o VB.net que tornava o Visual Basic uma plataforma absolutamente obsoleta por ser incompat\u00edvel com a nova vers\u00e3o da linguagem. J\u00e1 o VBA, coitado: se mostrava cada dia mais apagado. <\/p>\n\n\n\n<p>Me lembro que no VB.net inclusive vinha um assistente de migra\u00e7\u00e3o de c\u00f3digo VB 6 pro VB.net que n\u00e3o ajudava muita coisa: apenas te dizia educadamente que voc\u00ea teria de reescrever todo o seu sistema. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"199\" height=\"271\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/delphi8.jpeg\" alt=\"\" class=\"wp-image-2897\"\/><\/figure><\/div>\n\n\n\n<p>A coisa tamb\u00e9m n\u00e3o ia bem na ponta Delphi. A Borland lan\u00e7ou o Delphi 8 (Octane) que gerava c\u00f3digo apenas para  a plataforma .net, e esta vers\u00e3o simplesmente n\u00e3o deu certo. Ali\u00e1s, deu muito errado: deu t\u00e3o errado que at\u00e9 hoje, mesmo com o Delphi 10 Rio, que parece ser uma linda ferramenta, a esmagadora maioria dos projetos que encontramos no mercado baseados em Delphi ainda usam a vers\u00e3o&#8230; 7.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"464\" height=\"355\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/dotnet_1.0.jpg\" alt=\"\" class=\"wp-image-2898\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/dotnet_1.0.jpg 464w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/dotnet_1.0-300x230.jpg 300w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/><\/figure><\/div>\n\n\n\n<p>Ent\u00e3o resolvi dar meus primeiros passos no C# e aprender a primeira vers\u00e3o do .net, a vers\u00e3o que tinha na \u00e9poca, a 1.0. Meu foco eram aplica\u00e7\u00f5es desktop, sendo assim aprendi logo de cara a usar com a mesma interface do tipo arrastar e soltar que estava acostumado no Delphi e VB. Lembro que n\u00e3o achei t\u00e3o legal quanto estes, mas parecia promissor, bastante promissor inclusive. Cheguei a me empolgar e muito com o .net, aquele parecia ser o caminho e pela primeira vez o Java come\u00e7ava a perder o sentido pra mim, at\u00e9 que&#8230;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"459\" height=\"167\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/dotnet11-7vista1.jpg\" alt=\"\" class=\"wp-image-2899\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/dotnet11-7vista1.jpg 459w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/dotnet11-7vista1-300x109.jpg 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><\/figure><\/div>\n\n\n\n<p>Veio o .net 1.1 que tinha uma s\u00e9rie de incompatibilidades com a vers\u00e3o anterior (foi uma das raz\u00f5es pelas quais n\u00e3o houve mais vers\u00f5es do Delphi focadas em .net). Novamente eu teria todo um esfor\u00e7o de reescrita pela frente. Cansei: foi o momento no qual decidi focar meus esfor\u00e7os em tecnologias open source e nunca mais depender de plataformas propriet\u00e1rias. Se fosse pra escrever algo, que fosse em algo que n\u00e3o fosse ser desligado em apenas alguns anos. Abracei Java com todas as minhas for\u00e7as e o resto \u00e9 hist\u00f3ria (at\u00e9 agora).<\/p>\n\n\n\n<p>Escrevi algo a respeito na \u00e9poca que ainda faz sentido hoje, caso se interesse: <a href=\"https:\/\/www.itexto.com.br\/devkico\/?p=145\">Por que sabendo hist\u00f3ria Microsoft \u00e9 carta fora do baralho.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O segundo contato<\/h3>\n\n\n\n<p>Meu segundo contato foi alguns anos atr\u00e1s em um projeto da itexto que foi desenvolvido em .net Core, mas minha participa\u00e7\u00e3o como desenvolvedor neste caso foi inexistente: atuei mais como arquiteto e gestor. Mas recentemente surgiu um projeto legado que precisava ser evolu\u00eddo com urg\u00eancia, escrito em Web Forms, Web API, C# e baseado na vers\u00e3o 4.6 do .NET Framework.<\/p>\n\n\n\n<p>Era um projeto que tinha tantos problemas, tantos erros da equipe anterior, tanta porcaria escrita que n\u00e3o resisti. Quanto mais problem\u00e1tico o projeto mais atra\u00eddo me sinto por ele. Al\u00e9m disto era a oportunidade de ouro para finalmente dominar o .net.<\/p>\n\n\n\n<p>A\u00ed come\u00e7ou minha imers\u00e3o na plataforma cujas descobertas (pra mim) come\u00e7o a descrever agora.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Entendendo as diferentes vers\u00f5es do .net<\/h2>\n\n\n\n<p>Como programador Java minha primeira dificuldade com .net foi entender como a plataforma est\u00e1 organizada. O que posso dizer&#8230; comparada ao Java \u00e9 muito mais complicada.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do lado Java&#8230;<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2009\/10\/java_logo_2.png\" alt=\"\" class=\"wp-image-512\" width=\"91\" height=\"121\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/10\/java_logo_2.png 250w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2009\/10\/java_logo_2-225x300.png 225w\" sizes=\"(max-width: 91px) 100vw, 91px\" \/><\/figure><\/div>\n\n\n\n<p>Na plataforma Java, se voc\u00ea ignorar o desenvolvimento Android e Java ME (que quase ningu\u00e9m usa hoje) h\u00e1 essencialmente uma plataforma base que \u00e9 o Java SE (Standard Edition) que \u00e9 a base sobre a qual construiu-se a plataforma Java EE (Enterprise Edition), que \u00e9 o que usamos at\u00e9 agora para criar aplica\u00e7\u00f5es web e corporativas. Java SE e EE, simples assim. <\/p>\n\n\n\n<p>Atualmente estamos na vers\u00e3o 13 do Java SE, mas temos completa compatibilidade com as vers\u00f5es anteriores. Dado que ainda hoje a maior parte das pessoas ainda usa o Java 8, podemos inclusive dizer que este \u00e9 o &#8220;Delphi 7&#8221; da JVM.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"718\" height=\"317\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/o_java.png\" alt=\"\" class=\"wp-image-2901\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/o_java.png 718w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/o_java-300x132.png 300w\" sizes=\"(max-width: 718px) 100vw, 718px\" \/><\/figure><\/div>\n\n\n\n<p>Ent\u00e3o do lado Java temos essencialmente o Java SE que usamos pra aplica\u00e7\u00f5es desktop, linha de comando, bibliotecas e Java EE pra aplica\u00e7\u00f5es web: simples e direto. N\u00e3o h\u00e1 muito como errar, certo? Errado: voc\u00ea pode se perder entre os in\u00fameros frameworks dispon\u00edveis pra plataforma, mas esta \u00e9 a hist\u00f3ria para outro post.<\/p>\n\n\n\n<p>E na base, claro, voc\u00ea tem a JVM, que \u00e9 a respons\u00e1vel por interpretar o bytecode Java, que \u00e9 essencialmente a mesma tanto para aplica\u00e7\u00f5es Java SE quanto EE. Tr\u00eas atores apenas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do lado .net&#8230;<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/dotnetlogo.png\" alt=\"\" class=\"wp-image-2903\" width=\"106\" height=\"106\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/dotnetlogo.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/dotnetlogo-150x150.png 150w\" sizes=\"(max-width: 106px) 100vw, 106px\" \/><\/figure><\/div>\n\n\n\n<p>A coisa come\u00e7a a se mostrar um pouco mais complicada. Pra come\u00e7ar, voc\u00ea agora tem duas vers\u00f5es do .net que s\u00e3o oficialmente suportadas pela Microsoft: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>.net Framework<\/li><li>.net Core<\/li><li>(outros que citarei mais a frente, mas os que mais recebem publicidade s\u00e3o estes dois)<\/li><\/ul>\n\n\n\n<p>O primeiro (.net Framework) \u00e9 o original, aquele que nasce na vers\u00e3o 1.0 que me afastou da plataforma. Atualmente est\u00e1 na sua vers\u00e3o 4.8 e, ao que tudo indica, ser\u00e1 sua \u00faltima vers\u00e3o. \u00c9 feito para executar <strong>apenas no Windows<\/strong>. <\/p>\n\n\n\n<p>O segundo (.net Core) apareceu em 2016 (trabalhamos com a primeira vers\u00e3o dele), e tem como principal diferen\u00e7a o fato de ser realmente multi plataforma: seu c\u00f3digo pode ser executado no Windows, Linux e macOS.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">.net Framework<\/h4>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/net_framwork_400.jpg\" alt=\"\" class=\"wp-image-2906\" width=\"125\" height=\"125\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/net_framwork_400.jpg 400w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/net_framwork_400-150x150.jpg 150w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/net_framwork_400-300x300.jpg 300w\" sizes=\"(max-width: 125px) 100vw, 125px\" \/><\/figure><\/div>\n\n\n\n<p>Mas espera que a coisa fica ainda mais complicada quando pegamos para analisar o <strong>.net Framework<\/strong>. Isto por que com o tempo a Microsoft foi criando diferentes vers\u00f5es deste:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>.net para Windows Desktop &#8211; usado para aplica\u00e7\u00f5es desktop no Windows.<\/li><li>.net para Windows Store &#8211; para que voc\u00ea escreva aplica\u00e7\u00f5es que v\u00e3o para Windows Store (plataforma <a href=\"https:\/\/docs.microsoft.com\/pt-br\/windows\/uwp\/get-started\/universal-application-platform-guide\">UWP<\/a>).<\/li><li>.net pra Windows Phone &#8211; que morreu :(<\/li><li>ASP.net 4 &#8211; pra desenvolvimento web<\/li><li>ASP.net 5 &#8211; que apesar do nome \u00e9 OUTRA plataforma e acabou se tornando o <a href=\"https:\/\/www.hanselman.com\/blog\/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx\">ASP.net Core 1.0<\/a><\/li><li>Silverlight &#8211; que era uma alternativa aos antigos applets e Flash, que tamb\u00e9m morreu<\/li><li>.net Micro framework<\/li><\/ul>\n\n\n\n<p>E cada uma destas implementa\u00e7\u00f5es do .net tem tr\u00eas componentes: o runtime de execu\u00e7\u00e3o (equivalente \u00e0 JVM), um modelo de aplica\u00e7\u00e3o a ser desenvolvido e o framework que cont\u00e9m as APIs essenciais. Na pr\u00e1tica voc\u00ea tem uma situa\u00e7\u00e3o similar \u00e0 apresentada no diagrama a seguir, extra\u00eddo deste <a href=\"https:\/\/www.instinctools.com\/blog\/net-core-framework-complete-review\">excelente post<\/a> que me ajudou muito:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"353\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/NET-verticals.png\" alt=\"\" class=\"wp-image-2902\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/NET-verticals.png 800w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/NET-verticals-300x132.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/NET-verticals-768x339.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p>O que vemos s\u00e3o na pr\u00e1tica diferentes verticais do <strong>.net Framework<\/strong>, uma para cada tipo de aplica\u00e7\u00e3o que voc\u00ea deseje criar. A coisa fica ainda mais complicada pra n\u00f3s, desenvolvedores Java, quando eu for falar sobre ASP.net (que tamb\u00e9m tem duas vers\u00f5es, o Core e o original (os nomes s\u00e3o p\u00e9ssimos!), mas isto em um post futuro).<\/p>\n\n\n\n<p>Importante: <strong>.net Framework est\u00e1 com seus dias contados<\/strong>. Isto ficou n\u00edtido no projeto legado em que estou atuando: se voc\u00ea acessar o<a href=\"https:\/\/dotnet.microsoft.com\/\"> site oficial da plataforma<\/a> .net ver\u00e1 que todo o foco hoje est\u00e1 voltado ao .net Core. Repare no que marquei no print a seguir, extra\u00eddo deste site:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1019\" height=\"521\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/site_oficial.png\" alt=\"\" class=\"wp-image-2904\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/site_oficial.png 1019w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/site_oficial-300x153.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/site_oficial-768x393.png 768w\" sizes=\"(max-width: 1019px) 100vw, 1019px\" \/><\/figure>\n\n\n\n<p>O .net Framework n\u00e3o \u00e9 open source e \u00e9 apenas Windows. Ao navegar pela documenta\u00e7\u00e3o oficial voc\u00ea enfrentar\u00e1 as mesmas dificuldades que eu: atualmente todo o foco est\u00e1 voltado apenas para a vers\u00e3o Core da plataforma.<\/p>\n\n\n\n<p>Como mencionei anteriormente, o \u00faltimo release do .net Framework ser\u00e1 o 4.8. Ap\u00f3s esta vers\u00e3o este lado do desenvolvimento ser\u00e1 considerado como uma plataforma legada, que continuar\u00e1 recebendo atualiza\u00e7\u00f5es no decorrer dos anos (eles ainda mant\u00e9m o runtime do VB6, sabia?), mas n\u00e3o deve receber novos desenvolvimentos.<\/p>\n\n\n\n<p>Em paralelo est\u00e3o lan\u00e7ando o .net Core 3.0, que receber\u00e1 novos recursos e tudo mais, mas a\u00ed n\u00e3o ter\u00e1 o .net Core 4.0, ter\u00e1 o .net Core 5, que finalmente unificar\u00e1 as plataformas, o que \u00e9 \u00f3timo. Este <a href=\"https:\/\/www.iowacomputergurus.com\/insights\/article\/microsoft-announces-end-of-net-framework-net-core-meet-net-5\">excelente post<\/a> detalha a &#8220;morte&#8221; do .net Framework muito melhor que eu, recomendo sua leitura.<\/p>\n\n\n\n<p><strong>Qual ferramenta usar:<\/strong> n\u00e3o h\u00e1 muito pra onde correr, voc\u00ea precisar\u00e1 usar o Visual Studio tradicional para programar nesta plataforma e no Windows apenas. As tentativas que fiz com outras alternativas, como o Visual Studio Code se mostraram no m\u00ednimo &#8220;infrut\u00edferas&#8221;. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">.net Core<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/dotnetcorelogo.png\" alt=\"\" class=\"wp-image-2907\" width=\"145\" height=\"129\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/dotnetcorelogo.png 313w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/dotnetcorelogo-300x266.png 300w\" sizes=\"(max-width: 145px) 100vw, 145px\" \/><\/figure><\/div>\n\n\n\n<p>Se voc\u00ea vai come\u00e7ar um novo projeto este \u00e9 sem sombra de d\u00favidas o caminho a ser trilhado: seus projetos poder\u00e3o executar no Linux (o que lhe economizar\u00e1 uma fortuna) e \u00e9 nitidamente aonde a Microsoft ir\u00e1 investir no m\u00e9dio e longo prazo quando o assunto for plataforma .net.<\/p>\n\n\n\n<p>Minha experi\u00eancia com .net Core at\u00e9 este momento \u00e9 bastante limitada, mas pelo que pude acompanhar, acaba de ser lan\u00e7ada a vers\u00e3o 3.0 e n\u00e3o est\u00e3o ocorrendo problemas de compatibilidade tal como o que enfrentei com a vers\u00e3o 1.0 do <strong>.net Framework<\/strong>.<\/p>\n\n\n\n<p>\u00c9 importante que voc\u00ea tenha em mente os objetivos da Microsoft aqui:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Acabar com a zona que \u00e9 esta quantidade exagerada de vers\u00f5es da plataforma: o objetivo \u00e9 termos apenas uma daqui pra frente.<\/li><li>Termos um ambiente realmente multi plataforma: bem na dire\u00e7\u00e3o do Java e, na minha opini\u00e3o, at\u00e9 mais simples de ser entendido pelo usu\u00e1rio final, por que gera execut\u00e1veis e DLLs ao inv\u00e9s de arquivos JAR que nem sempre s\u00e3o de f\u00e1cil compreens\u00e3o por este p\u00fablico (ali\u00e1s, faz alguma diferen\u00e7a isto hoje em um mundo que \u00e9 essencialmente web? Algo a se pensar)<\/li><li>Ser uma plataforma realmente open source, ao contr\u00e1rio do que temos at\u00e9 ent\u00e3o.<\/li><\/ul>\n\n\n\n<p>Se a comunidade for t\u00e3o boa quanto \u00e0 que temos no Java, vejo um longo futuro para esta plataforma sem sombra de d\u00favidas, por que pelo pouco que estou vendo at\u00e9 agora \u00e9 realmente muito produtiva: d\u00e1 claramente a impress\u00e3o de que quem a projetou gosta de programadores.<\/p>\n\n\n\n<p>Aqui h\u00e1 uma quantidade maior de ferramentas para se trabalhar: o .net Core v\u00eam com uma ferramenta de linha de comando que gera nossos projetos bem no formato scaffolding, e tamb\u00e9m j\u00e1 cuida de todo o processo de compila\u00e7\u00e3o, execu\u00e7\u00e3o e depura\u00e7\u00e3o. Ent\u00e3o voc\u00ea pode usar seu editor favorito se quiser: no .net core tenho usado o VS Code por que estou essencialmente no Linux.<\/p>\n\n\n\n<p>\u00c9 muito interessante voc\u00ea observar o suporte ao .net Core no Visual Studio 2019: claramente este \u00e9 o cidad\u00e3o de primeira classe e o .net Framework j\u00e1 se mostra em segundo, terceiro, quarto plano. Os templates apresentados por padr\u00e3o s\u00e3o quase que todos essencialmente .net Core.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Resumo de uso: .net Framework ou .net Core<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Seu projeto \u00e9 legado e feito em .net Framework? Comece a pensar em estrat\u00e9gias para migrar para o .net Core (n\u00e3o \u00e9 algo t\u00e3o f\u00e1cil assim, escrevo mais sobre isto no futuro).<\/li><li>\u00c9 um projeto novo? Vai de .net Core que o futuro est\u00e1 garantido (ao menos por agora, sempre tenho uns dois p\u00e9s atr\u00e1s quando o assunto \u00e9 Microsoft. De novo <a href=\"https:\/\/www.itexto.com.br\/devkico\/?p=145\">aquele meu post <\/a>antigo).<\/li><li>Sua equipe sabe ASP.net (o do .net Framework) apenas? Vai ser .net Framework.<\/li><li>Sua equipe quer atuar com ASP.net Core? .net Core (l\u00f3gico)<\/li><li>Seu projeto \u00e9 s\u00f3 Windows e \u00e9 novo? Pra que pensar em .net Framework se ele vai pro saco?<\/li><li><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Mono<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"256\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/mono-framework.png\" alt=\"\" class=\"wp-image-2908\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/mono-framework.png 256w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/mono-framework-150x150.png 150w\" sizes=\"(max-width: 256px) 100vw, 256px\" \/><\/figure><\/div>\n\n\n\n<p>Al\u00e9m do .net Framework e do .net Core existe uma outra implementa\u00e7\u00e3o da plataforma .net que \u00e9 o projeto <a href=\"https:\/\/www.mono-project.com\/\">Mono<\/a>, criado por <a href=\"https:\/\/pt.wikipedia.org\/wiki\/Miguel_de_Icaza\">Miguel de Icaza<\/a> que depois juntou-se \u00e0 Microsoft quando esta comprou sua empresa, a Xamarin.<\/p>\n\n\n\n<p>Quando o .net Framework foi lan\u00e7ado, junto a este foi tamb\u00e9m publicado um padr\u00e3o ECMA que definia como a linguagem C# deveria ser implementada, assim como a plataforma como um todo. O mono foi um projeto iniciado por Miguel de Icaza com o aux\u00edlio da comunidade que criou uma implementa\u00e7\u00e3o totalmente aberta e livre da plataforma .net focando inicialmente o Linux.<\/p>\n\n\n\n<p>Voc\u00ea tem inclusive uma IDE bastante competente pra poder trabalhar com esta plataforma que \u00e9 o <a href=\"https:\/\/www.monodevelop.com\/\">MonoDevelop.<\/a><\/p>\n\n\n\n<p>A quest\u00e3o que ainda n\u00e3o sei responder hoje \u00e9 se o Mono, com o lan\u00e7amento do .net Core ainda \u00e9 relevante. Creio que n\u00e3o, por que faz muito mais sentido do ponto de vista de investimento focar na vers\u00e3o mantida pela m\u00e3e da plataforma, que \u00e9 a Microsoft.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Xamarin<\/h3>\n\n\n\n<p>Lembra da empresa do Miguel de Icaza? Pois \u00e9: ela desenvolvia um produto chamado Xamarin, usado para o desenvolvimento de aplica\u00e7\u00f5es mobile para Windows Phone (ainda sinto saudades), iOS e Android. Existe hoje uma <strong>quarta<\/strong> vers\u00e3o do .net que tem justamente este nome \u00e9 desenvolvimento de aplica\u00e7\u00f5es m\u00f3veis para iOS e Android (at\u00e9 a Microsoft desistiu do Windows Phone).<\/p>\n\n\n\n<p>O <a href=\"https:\/\/dotnet.microsoft.com\/learn\/xamarin\/what-is-xamarin\">Xamarin<\/a> \u00e9 uma extens\u00e3o do .net na realidade, e infelizmente, hoje, s\u00f3 pode ser executado no Windows e macOS. Tamb\u00e9m \u00e9 open source e, pelo que pude entender at\u00e9 agora, meio que baseado no Mono, raz\u00e3o pela qual no site da Microsoft, no link &#8220;<a href=\"https:\/\/dotnet.microsoft.com\/learn\/dotnet\/what-is-dotnet\">What is .net<\/a>&#8221; este \u00e9 apresentado como tal.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"776\" height=\"399\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2019\/11\/what-is-dotnet.png\" alt=\"\" class=\"wp-image-2910\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/what-is-dotnet.png 776w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/what-is-dotnet-300x154.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/what-is-dotnet-768x395.png 768w\" sizes=\"(max-width: 776px) 100vw, 776px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">.net Standard: o &#8220;Java SE&#8221; da Microsoft?<\/h2>\n\n\n\n<p>Pense no <strong>.net Standard<\/strong> como a tentativa da Microsoft em criar seu pr\u00f3prio &#8220;Java SE&#8221; que seria a implementa\u00e7\u00e3o das APIs essenciais compartilhadas pelo<strong> .net Framework, .net Core, Xamarin, Mono e outras implemetna\u00e7\u00f5es<\/strong>.<\/p>\n\n\n\n<p>\u00c9 a especifica\u00e7\u00e3o formal de APIs .NET que deve estar presente em todas as implementa\u00e7\u00f5es da plataforma .NET. Sendo assim, se futuramente surgir algo como um segundo projeto Mono este, para ser compat\u00edvel (e ser chamado de plataforma .NET) deve possuir estas APIs implementadas de alguma forma.<\/p>\n\n\n\n<p>Atualmente o .net Standard est\u00e1 na vers\u00e3o 2.1, mas desde o lan\u00e7amento da vers\u00e3o 4.5 do .net Framework, da vers\u00e3o 1.0 do .net Core e 4.6 do Mono \u00e9 usado como base. Essencialmente, se sua aplica\u00e7\u00e3o usa as APIs presentes no .net Standard, \u00e9 alt\u00edssima a possibilidade de que voc\u00ea consiga porta-lo para diferentes implementa\u00e7\u00f5es do .net sem grandes problemas.<\/p>\n\n\n\n<p>Na <a href=\"https:\/\/docs.microsoft.com\/pt-br\/dotnet\/standard\/net-standard\">documenta\u00e7\u00e3o oficial do .net Standard<\/a> voc\u00ea consegue ver as diferentes implementa\u00e7\u00f5es do .net (mais men\u00e7\u00f5es honrosas: Unity, Xamarin.IOS, Xamarin.Android, Plataforma Universal do Windows).<\/p>\n\n\n\n<p>Fica a cargo do desenvolvedor escolher qual vers\u00e3o do .net Standard focar: lembre-se que quanto menos recente for a vers\u00e3o, maior ser\u00e1 o n\u00famero de plataformas que estar\u00e3o dispon\u00edveis, enquanto que os novos recursos estar\u00e3o sempre nos \u00faltimos releases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Concluindo, recursos e posts futuros<\/h2>\n\n\n\n<p>Resumi aqui as principais implementa\u00e7\u00f5es do .net. Para um javeiro como eu minha primeira dificuldade foi entender estas diferentes vers\u00f5es para que pudesse focar o meu estudo. Mesmo assim meu foco \u00e9 um pouco difuso:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>.net Framework<\/strong> para lidar com projetos legados.<\/li><li><strong>.net Core<\/strong> para novos projetos (foco em APIs e micro servi\u00e7os) e migra\u00e7\u00e3o de projetos baseados em .net Framework.<\/li><li><\/li><\/ul>\n\n\n\n<p>Nos dois casos meu foco \u00e9 o desenvolvimento de aplica\u00e7\u00f5es web, ou seja, v\u00e3o vir posts aqui sobre ASP.net e ASP.net Core. Se voc\u00ea achou confusa a situa\u00e7\u00e3o do .NET no que diz respeito \u00e0s suas diferentes vers\u00f5es, aguarde o que vou te contar sobre o ASP.net e ASP.net Core!<\/p>\n\n\n\n<p>Os nomes n\u00e3o ajudam: geram muita confus\u00e3o para quem est\u00e1 chegando. A pr\u00f3pria documenta\u00e7\u00e3o se voc\u00ea n\u00e3o ficar muito atento pode te confundir. N\u00e3o raro me vi lendo sobre .net Core quando meu objetivo era o .net Framework e vice-versa, e esta foi uma das motiva\u00e7\u00f5es que me levou a iniciar esta s\u00e9rie de posts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Alguns links para aprofundamento<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>.net Core Complete Overview &#8211; Foi o primeiro post que me ajudou a entender as diferentes vers\u00f5es do .net &#8211; <a href=\"https:\/\/www.instinctools.com\/blog\/net-core-framework-complete-review\">https:\/\/www.instinctools.com\/blog\/net-core-framework-complete-review<\/a> <\/li><li>Gloss\u00e1rio .NET &#8211; fundamental para entender os termos usados na documenta\u00e7\u00e3o da Microsoft &#8211;  <br><a href=\"https:\/\/docs.microsoft.com\/pt-br\/dotnet\/standard\/glossary\">https:\/\/docs.microsoft.com\/pt-br\/dotnet\/standard\/glossary<\/a>  <\/li><li>Vis\u00e3o Geral do .NET Framework &#8211; fornece uma vis\u00e3o arquitetural macro inicial que me ajudou bastante a entender a plataforma &#8211;  <br><a href=\"https:\/\/docs.microsoft.com\/pt-br\/dotnet\/framework\/get-started\/overview\">https:\/\/docs.microsoft.com\/pt-br\/dotnet\/framework\/get-started\/overview<\/a>  <\/li><li>Application Essentials &#8211; leia todos os links, eles te fornecer\u00e3o a base para entender diversos conceitos que me ajudaram MUITO a entender a linguagem C# &#8211;  <br><a href=\"https:\/\/docs.microsoft.com\/pt-br\/dotnet\/standard\/application-essentials\">https:\/\/docs.microsoft.com\/pt-br\/dotnet\/standard\/application-essentials<\/a>  <\/li><li>Sobre o fim do .NET framework, dois posts que me ajudaram a entender a situa\u00e7\u00e3o e evitar o FUD: Este aqui da Telerik &#8211;  <br><a href=\"https:\/\/www.telerik.com\/blogs\/dotnet-is-dead-long-live-dotnet\">https:\/\/www.telerik.com\/blogs\/dotnet-is-dead-long-live-dotnet<\/a>  e este aqui  <br><a href=\"https:\/\/www.iowacomputergurus.com\/insights\/article\/microsoft-announces-end-of-net-framework-net-core-meet-net-5\">https:\/\/www.iowacomputergurus.com\/insights\/article\/microsoft-announces-end-of-net-framework-net-core-meet-net-5<\/a>  <\/li><\/ul>\n\n\n\n<p>No geral me maravilhou como s\u00e3o bem escritos os textos presentes no site da Microsoft. Passei e passo horas lendo cada um dos links como se fosse um romance do qual tiro minhas notas: foram uma grata surpresa. Recomendo que voc\u00ea leia os textos em ingl\u00eas, por que as tradu\u00e7\u00f5es nem sempre s\u00e3o muito boas, a impress\u00e3o que tenho \u00e9 que s\u00e3o geradas automaticamente em alguns pontos.<\/p>\n\n\n\n<p>Sobre cursos online: quase n\u00e3o encontrei cursos sobre o .net Framework online, idem no que diz respeito a livros. \u00c9 como se a partir de 2016 as pessoas s\u00f3 escrevessem sobre .net Core. A situa\u00e7\u00e3o fica ainda mais tensa quando o assunto \u00e9 ASP.net: mas n\u00e3o fique triste, j\u00e1 trilhei este caminho e vou te mostrar no futuro estes links que ir\u00e3o lhe ajudar muito.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pr\u00f3ximos posts<\/h3>\n\n\n\n<p>Acredito que pra entender BEM mesmo o desenvolvimento de aplica\u00e7\u00f5es web primeiro preciso conhecer a plataforma na qual estas s\u00e3o executadas. Sendo assim meus pr\u00f3ximos posts v\u00e3o cobrir os seguintes t\u00f3picos:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Minhas impress\u00f5es sobre como \u00e9 desenvolver em .NET sendo um desenvolvedor Java (muitos preconceitos est\u00e3o sendo desfeitos nesta experi\u00eancia).<\/li><li>A arquitetura da plataforma .NET (aqui s\u00f3 vimos as diferentes implementa\u00e7\u00f5es apenas)<\/li><li>Os conceitos que mais me impressionaram (at\u00e9 agora o que mais me impressionou foi o de assembly, devo escrever muito a respeito).<\/li><li>Como \u00e9 organizado tanto o ASP.net (.net Framework) quanto o Asp.net Core (.net Core) &#8211; uma zona o neg\u00f3cio<\/li><li>Estrat\u00e9gias de migra\u00e7\u00e3o.<\/li><li>Um ou outro detalhe que tenha me impressionado.<\/li><\/ul>\n\n\n\n<p>Espero que tenham gostado deste post: lembrem que sou um iniciante ainda (e com uma vis\u00e3o muito enviesada pelo Java), sendo assim erros podem ser cometidos. Caso os encontre, por favor, inclua-os nos coment\u00e1rios pra que eu possa realizar as corre\u00e7\u00f5es, ok? Valeu!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ent\u00e3o voc\u00ea desenvolve em Java mas precisa entender a plataforma .net? Esta sequ\u00eancia de posts \u00e9 para voc\u00ea! Come\u00e7aremos entendendo as diferentes vers\u00f5es do .net. <\/p>\n","protected":false},"author":1,"featured_media":2894,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[56,86,6],"tags":[],"class_list":["post-2893","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-do-java-ao-net","category-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Do Java ao .NET - Parte 1: Qual vers\u00e3o do .NET? - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=2893\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Do Java ao .NET - Parte 1: Qual vers\u00e3o do .NET? - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Ent\u00e3o voc\u00ea desenvolve em Java mas precisa entender a plataforma .net? Esta sequ\u00eancia de posts \u00e9 para voc\u00ea! Come\u00e7aremos entendendo as diferentes vers\u00f5es do .net.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=2893\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-17T23:56:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-17T23:56:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"480\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2893\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=2893\",\"name\":\"Do Java ao .NET - Parte 1: Qual vers\u00e3o do .NET? - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2893#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2893#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png\",\"datePublished\":\"2019-11-17T23:56:27+00:00\",\"dateModified\":\"2019-11-17T23:56:36+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2893#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=2893\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2893#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png\",\"width\":640,\"height\":480},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2893#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Do Java ao .NET &#8211; Parte 1: Qual vers\u00e3o do .NET?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Do Java ao .NET - Parte 1: Qual vers\u00e3o do .NET? - \/dev\/Kico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=2893","og_locale":"pt_BR","og_type":"article","og_title":"Do Java ao .NET - Parte 1: Qual vers\u00e3o do .NET? - \/dev\/Kico","og_description":"Ent\u00e3o voc\u00ea desenvolve em Java mas precisa entender a plataforma .net? Esta sequ\u00eancia de posts \u00e9 para voc\u00ea! Come\u00e7aremos entendendo as diferentes vers\u00f5es do .net.","og_url":"https:\/\/devkico.itexto.com.br\/?p=2893","og_site_name":"\/dev\/Kico","article_published_time":"2019-11-17T23:56:27+00:00","article_modified_time":"2019-11-17T23:56:36+00:00","og_image":[{"width":640,"height":480,"url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png","type":"image\/png"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=2893","url":"https:\/\/devkico.itexto.com.br\/?p=2893","name":"Do Java ao .NET - Parte 1: Qual vers\u00e3o do .NET? - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2893#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2893#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png","datePublished":"2019-11-17T23:56:27+00:00","dateModified":"2019-11-17T23:56:36+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2893#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=2893"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=2893#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png","width":640,"height":480},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=2893#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Do Java ao .NET &#8211; Parte 1: Qual vers\u00e3o do .NET?"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2019\/11\/java_net.png","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2893"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2893"}],"version-history":[{"count":6,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2893\/revisions"}],"predecessor-version":[{"id":2912,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2893\/revisions\/2912"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/2894"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}