Concrete Logo
Hamburger button

Um mundo Java sem XML

  • Blog
  • 13 de Março de 2013
Share

Motivação

Essa é uma longa e antiga discussão: externalize todas as configurações da sua aplicação para XML, Properties e etc para ter o poder de mudar uma configuração em runtime. No entanto, não é o que sempre acontece…

Outros defendem o XML para que pessoas de outras áreas como infraestrutura possam atualizar ou gerenciar as propriedades. No entanto, não é o que sempre acontece…

Mas então o que é? Muitas vezes as pessoas acabam empacotando tudo com a aplicação e mesmo que uma alteração de configuração seja apenas um parâmetro em um XML, acaba-se recompilando tudo (infelizmente já vi muito disso…).

Hoje em dia temos ferramentas muito mais avançadas para gerenciar propriedades de ambiente. Puppet, Juju e etc. Até mesmo ferramentas para virtualizar tudo e fazer com que todos usem essencialmente o mesmo ambiente (Vagrant, Virtual BOX no braço!!! e etc). Então, não quero me preocupar aqui com as configurações que são externas, mas sim com as que são internas.

Pense um pouco: eu preciso de um persistence.xml para dizer quais classes eu quero que ele configure como entidade? Que tal eu ter um ponto de inicialização da aplicação que eu possa, em Java, dizer qual o pacote com um código assim, por exemplo:

Quais as vantagens? Se em uma refatoração eu renomear o pacote que guarda os modelos, não preciso procurar em nenhum arquivo texto o nome do pacote. Ele será descoberto no momento em que a aplicação inicializar. Além disso, os parâmetros de configuração podem ser type-safe, podem incluir Javadoc, podem ser programaticamente alterados (posso checar se há determinados registros no banco e tomar uma decisão de configuração a partir disso) entre algumas outras vantagens.

Veja, se tivermos um código assim…

… alguém não bate bem da cabeça! Tudo que deve ser dinâmico e externo da configuração de uma aplicação deve ser, adivinha, externo ao código. Não quero que pensem o contrário! Mas a questão são os descritores de aplicação como:

  • web.xml – Será que eu vou mudar o contexto de um Servlet? Se mudar não terei que re-empacotar a aplicação?
  • persistence.xml – Preciso mesmo deixar dinâmico a declaração das entidades?
  • applicationContext.xml – Será que eu vou mudar a tag que habilita o uso de transações de forma declarativa?
  • faces-config, spring-security, etc, etc, etc, etc – Hmmm… preciso dizer alguma coisa?

Convention over Configuration e configuração programática

A plataforma Java já possui diversas ferramentas para diminuir a configuração por XML e, de uma forma geral, caminha nessa direção. Cada vez mais utilizamos CoC (Convention over Configuration), cada vez mais as especificações se adaptam para configuração programática e assim por diante.

Pretende-se mostrar aqui uma aplicação de exemplo de configuração programática.

Spring

Primeiro o Spring! Como ele será nosso container de objetos, ele será nosso ponto de partida para toda a configuração. Para isso, usamos a classe org.springframework.web.WebApplicationInitializer que nos dá o método “onStartup” onde iremos plugar nossas configurações como veremos abaixo:

O primeiro passo é gerar o ApplicationContext. Assim, nossa implementação do “bootstrapSpring” será:

Não há segredo aqui. Um programador iniciando em Java sabe dizer que foi criado um objeto, adicionado um estado nele (ServletContext) e chamado um método de registrar uma classe de configuração. Vejamos essa classe:

Está declarada como estática apenas porque optei por declará-la dentro de outra classe. Como não há nenhuma implementação nela, não achei necessário externalizar para outra classe. A única necessidade é anotá-la com @Configuration. A annotação “ComponentScan” define a partir de qual pacote o Spring irá procurar beans e a anotação “Import” diz outras classes de configuração que serão necessárias para a aplicação (Não entrarei em muitos detalhes, mas elas estão documentadas e são bastante diretas).

Pronto! Temos um container configurado.

Segurança

Configuramos um filtro dinamicamente, definimos um parâmetro de inicialização tipado e por último definimos o mapeamento de URLs que esse filtro irá interceptar. De novo, dessa maneira temos a vantagem de ver no Javadoc de cada método as finalidades que representam.

REST Servlet

Só falta o servlet de REST. A implementação é bem parecida com o filtro de segurança, então vou ressaltar um problema específico do Jersey. A integração do Jersey com o Spring procura o contexto de beans, porém não encontra pois não foi atualizada para usar as classes da versão 3.1 do Spring. Por isso, ao invés de usarmos o SpringServlet do Jersey, sobre escrevi o método que procura o container em uma classe interna como mostrado abaixo:

Pronto! Temos a configuração principal da aplicação toda feita programaticamente. O projeto possui ainda a configuração de um DataSource e dos filtros de segurança do Shiro e pode ser visto no github.

Dentro dele há a apresentação que fiz no iMasters em 27 Nov 2012.

\n

Quais as vantagens? Se em uma refatoração eu renomear o pacote que guarda os modelos, não preciso procurar em nenhum arquivo texto o nome do pacote. Ele será descoberto no momento em que a aplicação inicializar. Além disso, os parâmetros de configuração podem ser type-safe, podem incluir Javadoc, podem ser programaticamente alterados (posso checar se há determinados registros no banco e tomar uma decisão de configuração a partir disso) entre algumas outras vantagens.

\n

Veja, se tivermos um código assim…

\n

\n

… alguém não bate bem da cabeça! Tudo que deve ser dinâmico e externo da configuração de uma aplicação deve ser, adivinha, externo ao código. Não quero que pensem o contrário! Mas a questão são os descritores de aplicação como:

\n\n

Convention over Configuration e configuração programática

\n

A plataforma Java já possui diversas ferramentas para diminuir a configuração por XML e, de uma forma geral, caminha nessa direção. Cada vez mais utilizamos CoC (Convention over Configuration), cada vez mais as especificações se adaptam para configuração programática e assim por diante.

\n

Pretende-se mostrar aqui uma aplicação de exemplo de configuração programática.

\n

Spring

\n

Primeiro o Spring! Como ele será nosso container de objetos, ele será nosso ponto de partida para toda a configuração. Para isso, usamos a classe org.springframework.web.WebApplicationInitializer que nos dá o método “onStartup” onde iremos plugar nossas configurações como veremos abaixo:

\n

\n

O primeiro passo é gerar o ApplicationContext. Assim, nossa implementação do “bootstrapSpring” será:

\n

\n

Não há segredo aqui. Um programador iniciando em Java sabe dizer que foi criado um objeto, adicionado um estado nele (ServletContext) e chamado um método de registrar uma classe de configuração. Vejamos essa classe:

\n

\n

Está declarada como estática apenas porque optei por declará-la dentro de outra classe. Como não há nenhuma implementação nela, não achei necessário externalizar para outra classe. A única necessidade é anotá-la com @Configuration. A annotação “ComponentScan” define a partir de qual pacote o Spring irá procurar beans e a anotação “Import” diz outras classes de configuração que serão necessárias para a aplicação (Não entrarei em muitos detalhes, mas elas estão documentadas e são bastante diretas).

\n

Pronto! Temos um container configurado.

\n

Segurança

\n

\n

Configuramos um filtro dinamicamente, definimos um parâmetro de inicialização tipado e por último definimos o mapeamento de URLs que esse filtro irá interceptar. De novo, dessa maneira temos a vantagem de ver no Javadoc de cada método as finalidades que representam.

\n

REST Servlet

\n

Só falta o servlet de REST. A implementação é bem parecida com o filtro de segurança, então vou ressaltar um problema específico do Jersey. A integração do Jersey com o Spring procura o contexto de beans, porém não encontra pois não foi atualizada para usar as classes da versão 3.1 do Spring. Por isso, ao invés de usarmos o SpringServlet do Jersey, sobre escrevi o método que procura o container em uma classe interna como mostrado abaixo:

\n

\n

Pronto! Temos a configuração principal da aplicação toda feita programaticamente. O projeto possui ainda a configuração de um DataSource e dos filtros de segurança do Shiro e pode ser visto no github.

\n

Dentro dele há a apresentação que fiz no iMasters em 27 Nov 2012.

\n","protected":false},"excerpt":{"rendered":"

Motivação Essa é uma longa e antiga discussão: externalize todas as configurações da sua aplicação para XML, Properties e etc para ter o poder de mudar uma configuração em runtime. […]

\n","protected":false},"author":28,"featured_media":5498,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[17],"tags":[369,68,174,370,176,371],"custom_author":{"avatar":null,"name":null,"description":null},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts/5287"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/post"}],"author":[{"embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"replies":[{"embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=5287"}],"version-history":[{"count":0,"href":"https://www.concrete.com.br/wp-json/wp/v2/posts/5287/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/media/5498"}],"wp:attachment":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media?parent=5287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/categories?post=5287"},{"taxonomy":"post_tag","embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/tags?post=5287"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]},"_embedded":{"author":[{"id":28,"name":"Victor Nascimento","url":"http://olinasc.com","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","link":"https://www.concrete.com.br/author/victor-nascimento/","slug":"victor-nascimento","avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]}}],"wp:featuredmedia":[{"id":5498,"date":"2013-03-13T08:31:50","slug":"xml-logo","type":"attachment","link":"https://www.concrete.com.br/xml-logo/","title":{"rendered":"xml-logo"},"author":1,"caption":{"rendered":""},"alt_text":"","media_type":"image","mime_type":"image/jpeg","media_details":{"width":320,"height":240,"file":"2013/03/xml-logo.jpg","sizes":{"thumbnail":{"file":"xml-logo-150x150.jpg","width":150,"height":150,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-150x150.jpg"},"medium":{"file":"xml-logo-300x225.jpg","width":300,"height":225,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-300x225.jpg"},"autor-post":{"file":"xml-logo-140x140.jpg","width":140,"height":140,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-140x140.jpg"},"thumb-relacionado":{"file":"xml-logo-250x240.jpg","width":250,"height":240,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-250x240.jpg"},"box-grande":{"file":"xml-logo-264x240.jpg","width":264,"height":240,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-264x240.jpg"},"box-pequeno":{"file":"xml-logo-263x219.jpg","width":263,"height":219,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-263x219.jpg"},"box-pequeno-2":{"file":"xml-logo-264x224.jpg","width":264,"height":224,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-264x224.jpg"},"full":{"file":"xml-logo.jpg","width":320,"height":240,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo.jpg"}},"image_meta":{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0","keywords":[]}},"source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo.jpg","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/5498"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"author":[{"embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/users/1"}],"replies":[{"embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=5498"}]}}],"wp:term":[[{"id":17,"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","slug":"engenharia-de-software","taxonomy":"category","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}],[{"id":369,"link":"https://www.concrete.com.br/tag/convention-over-configuration/","name":"convention over configuration","slug":"convention-over-configuration","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/369"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=369"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":68,"link":"https://www.concrete.com.br/tag/java/","name":"java","slug":"java","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/68"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=68"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":174,"link":"https://www.concrete.com.br/tag/jersey/","name":"jersey","slug":"jersey","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/174"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=174"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":370,"link":"https://www.concrete.com.br/tag/shiro/","name":"shiro","slug":"shiro","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/370"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=370"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":176,"link":"https://www.concrete.com.br/tag/spring/","name":"spring","slug":"spring","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/176"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=176"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":371,"link":"https://www.concrete.com.br/tag/xml/","name":"xml","slug":"xml","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/371"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=371"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}]]},"embedded":{"author":[{"id":28,"name":"Victor Nascimento","url":"http://olinasc.com","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","link":"https://www.concrete.com.br/author/victor-nascimento/","slug":"victor-nascimento","avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]}}],"wp:featuredmedia":[{"id":5498,"date":"2013-03-13T08:31:50","slug":"xml-logo","type":"attachment","link":"https://www.concrete.com.br/xml-logo/","title":{"rendered":"xml-logo"},"author":1,"caption":{"rendered":""},"alt_text":"","media_type":"image","mime_type":"image/jpeg","media_details":{"width":320,"height":240,"file":"2013/03/xml-logo.jpg","sizes":{"thumbnail":{"file":"xml-logo-150x150.jpg","width":150,"height":150,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-150x150.jpg"},"medium":{"file":"xml-logo-300x225.jpg","width":300,"height":225,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-300x225.jpg"},"autor-post":{"file":"xml-logo-140x140.jpg","width":140,"height":140,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-140x140.jpg"},"thumb-relacionado":{"file":"xml-logo-250x240.jpg","width":250,"height":240,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-250x240.jpg"},"box-grande":{"file":"xml-logo-264x240.jpg","width":264,"height":240,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-264x240.jpg"},"box-pequeno":{"file":"xml-logo-263x219.jpg","width":263,"height":219,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-263x219.jpg"},"box-pequeno-2":{"file":"xml-logo-264x224.jpg","width":264,"height":224,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo-264x224.jpg"},"full":{"file":"xml-logo.jpg","width":320,"height":240,"mime_type":"image/jpeg","source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo.jpg"}},"image_meta":{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0","keywords":[]}},"source_url":"https://static.concrete.com.br/uploads/2013/03/xml-logo.jpg","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/5498"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"author":[{"embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/users/1"}],"replies":[{"embeddable":true,"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=5498"}]}}],"wp:term":[[{"id":17,"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","slug":"engenharia-de-software","taxonomy":"category","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}],[{"id":369,"link":"https://www.concrete.com.br/tag/convention-over-configuration/","name":"convention over configuration","slug":"convention-over-configuration","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/369"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=369"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":68,"link":"https://www.concrete.com.br/tag/java/","name":"java","slug":"java","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/68"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=68"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":174,"link":"https://www.concrete.com.br/tag/jersey/","name":"jersey","slug":"jersey","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/174"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=174"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":370,"link":"https://www.concrete.com.br/tag/shiro/","name":"shiro","slug":"shiro","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/370"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=370"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":176,"link":"https://www.concrete.com.br/tag/spring/","name":"spring","slug":"spring","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/176"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=176"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":371,"link":"https://www.concrete.com.br/tag/xml/","name":"xml","slug":"xml","taxonomy":"post_tag","_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/371"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=371"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}]]},"parsedDate":"13 de Março de 2013","getAuthor":"Victor Nascimento","getAuthorDescription":"

Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.

","getPostDescription":"\nMotivação\nEssa é uma longa e antiga discussão: externalize todas as configurações da sua aplicação para XML, Properties e etc para ter o poder de mudar uma configuração em runtime. No entanto, não é ...","getPostCategories":{"slug":["engenharia-de-software"],"id":[17],"name":["Desenvolvimento Web"]},"getPostTags":{"slug":["convention-over-configuration","java","jersey","shiro","spring","xml"],"id":[369,68,174,370,176,371],"name":["convention over configuration","java","jersey","shiro","spring","xml"]},"getPostLanguage":"pt"},"postTerm":17,"relatedPosts":[{"date":"2016-01-02T10:00:51","custom_author":{"name":null,"description":null,"avatar":null},"getAuthor":"Victor Nascimento","_embedded":{"author":[{"avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]},"name":"Victor Nascimento","link":"https://www.concrete.com.br/author/victor-nascimento/","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","id":28,"url":"http://olinasc.com","slug":"victor-nascimento"}],"wp:term":[[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","id":17,"taxonomy":"category","slug":"engenharia-de-software"}],[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=1030"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/1030"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/html/","name":"HTML","id":1030,"taxonomy":"post_tag","slug":"html"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=68"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/68"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/java/","name":"java","id":68,"taxonomy":"post_tag","slug":"java"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=42"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/42"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/rest/","name":"REST","id":42,"taxonomy":"post_tag","slug":"rest"}]],"wp:featuredmedia":[{"date":"2015-07-20T10:40:28","_links":{"replies":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=9683","embeddable":true}],"author":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/42","embeddable":true}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/9683"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}]},"author":42,"link":"https://www.concrete.com.br/desenvolvedor/","caption":{"rendered":"

Foto de www.shutterstock.com

\n"},"type":"attachment","title":{"rendered":"Desenvolvedor"},"media_details":{"file":"2015/07/Desenvolvedor.jpg","sizes":{"thumbnail":{"file":"Desenvolvedor-150x150.jpg","mime_type":"image/jpeg","width":150,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-150x150.jpg","height":150},"thumb-relacionado":{"file":"Desenvolvedor-250x250.jpg","mime_type":"image/jpeg","width":250,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-250x250.jpg","height":250},"large":{"file":"Desenvolvedor-1024x707.jpg","mime_type":"image/jpeg","width":1024,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-1024x707.jpg","height":707},"box-pequeno":{"file":"Desenvolvedor-263x219.jpg","mime_type":"image/jpeg","width":263,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-263x219.jpg","height":219},"autor-post":{"file":"Desenvolvedor-140x140.jpg","mime_type":"image/jpeg","width":140,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-140x140.jpg","height":140},"lista-eventos":{"file":"Desenvolvedor-477x247.jpg","mime_type":"image/jpeg","width":477,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-477x247.jpg","height":247},"medium":{"file":"Desenvolvedor-300x207.jpg","mime_type":"image/jpeg","width":300,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-300x207.jpg","height":207},"medium_large":{"file":"Desenvolvedor-768x531.jpg","mime_type":"image/jpeg","width":768,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-768x531.jpg","height":531},"box-grande":{"file":"Desenvolvedor-264x418.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-264x418.jpg","height":418},"box-pequeno-2":{"file":"Desenvolvedor-264x224.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-264x224.jpg","height":224},"full":{"file":"Desenvolvedor.jpg","mime_type":"image/jpeg","width":1200,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor.jpg","height":829}},"image_meta":{"aperture":"0","copyright":"","orientation":"0","focal_length":"0","iso":"0","keywords":[],"caption":"","created_timestamp":"0","credit":"","camera":"","title":"","shutter_speed":"0"},"width":1200,"height":829},"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor.jpg","alt_text":"","media_type":"image","mime_type":"image/jpeg","id":9683,"slug":"desenvolvedor"}]},"link":"https://www.concrete.com.br/2016/01/02/rest-em-java-com-html/","title":{"rendered":"REST em Java com HTML?"},"embedded":{"author":[{"avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]},"name":"Victor Nascimento","link":"https://www.concrete.com.br/author/victor-nascimento/","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","id":28,"url":"http://olinasc.com","slug":"victor-nascimento"}],"wp:term":[[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","id":17,"taxonomy":"category","slug":"engenharia-de-software"}],[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=1030"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/1030"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/html/","name":"HTML","id":1030,"taxonomy":"post_tag","slug":"html"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=68"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/68"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/java/","name":"java","id":68,"taxonomy":"post_tag","slug":"java"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=42"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/42"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/rest/","name":"REST","id":42,"taxonomy":"post_tag","slug":"rest"}]],"wp:featuredmedia":[{"date":"2015-07-20T10:40:28","_links":{"replies":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=9683","embeddable":true}],"author":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/42","embeddable":true}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/9683"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}]},"author":42,"link":"https://www.concrete.com.br/desenvolvedor/","caption":{"rendered":"

Foto de www.shutterstock.com

\n"},"type":"attachment","title":{"rendered":"Desenvolvedor"},"media_details":{"file":"2015/07/Desenvolvedor.jpg","sizes":{"thumbnail":{"file":"Desenvolvedor-150x150.jpg","mime_type":"image/jpeg","width":150,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-150x150.jpg","height":150},"thumb-relacionado":{"file":"Desenvolvedor-250x250.jpg","mime_type":"image/jpeg","width":250,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-250x250.jpg","height":250},"large":{"file":"Desenvolvedor-1024x707.jpg","mime_type":"image/jpeg","width":1024,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-1024x707.jpg","height":707},"box-pequeno":{"file":"Desenvolvedor-263x219.jpg","mime_type":"image/jpeg","width":263,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-263x219.jpg","height":219},"autor-post":{"file":"Desenvolvedor-140x140.jpg","mime_type":"image/jpeg","width":140,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-140x140.jpg","height":140},"lista-eventos":{"file":"Desenvolvedor-477x247.jpg","mime_type":"image/jpeg","width":477,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-477x247.jpg","height":247},"medium":{"file":"Desenvolvedor-300x207.jpg","mime_type":"image/jpeg","width":300,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-300x207.jpg","height":207},"medium_large":{"file":"Desenvolvedor-768x531.jpg","mime_type":"image/jpeg","width":768,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-768x531.jpg","height":531},"box-grande":{"file":"Desenvolvedor-264x418.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-264x418.jpg","height":418},"box-pequeno-2":{"file":"Desenvolvedor-264x224.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor-264x224.jpg","height":224},"full":{"file":"Desenvolvedor.jpg","mime_type":"image/jpeg","width":1200,"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor.jpg","height":829}},"image_meta":{"aperture":"0","copyright":"","orientation":"0","focal_length":"0","iso":"0","keywords":[],"caption":"","created_timestamp":"0","credit":"","camera":"","title":"","shutter_speed":"0"},"width":1200,"height":829},"source_url":"https://static.concrete.com.br/uploads/2015/07/Desenvolvedor.jpg","alt_text":"","media_type":"image","mime_type":"image/jpeg","id":9683,"slug":"desenvolvedor"}]},"parsedDate":"2 de Janeiro de 2016","getAuthorDescription":"

Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.

","getPostDescription":"","getPostCategories":{"slug":["engenharia-de-software"],"id":[17],"name":["Desenvolvimento Web"]},"getPostTags":{"slug":["html","java","rest"],"id":[1030,68,42],"name":["HTML","java","REST"]},"getPostLanguage":"pt"},{"date":"2015-07-16T14:44:46","custom_author":{"name":null,"description":null,"avatar":null},"getAuthor":"Victor Nascimento","_embedded":{"author":[{"avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]},"name":"Victor Nascimento","link":"https://www.concrete.com.br/author/victor-nascimento/","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","id":28,"url":"http://olinasc.com","slug":"victor-nascimento"}],"wp:term":[[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","id":17,"taxonomy":"category","slug":"engenharia-de-software"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=75"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/75"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/mobile/","name":"Mobile","id":75,"taxonomy":"category","slug":"mobile"}],[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=475"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/475"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/android-2/","name":"android","id":475,"taxonomy":"post_tag","slug":"android-2"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=82"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/82"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/desenvolvimento-mobile/","name":"desenvolvimento mobile","id":82,"taxonomy":"post_tag","slug":"desenvolvimento-mobile"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=477"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/477"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/desenvolvimento-web/","name":"desenvolvimento web","id":477,"taxonomy":"post_tag","slug":"desenvolvimento-web"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=68"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/68"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/java/","name":"java","id":68,"taxonomy":"post_tag","slug":"java"}],[]],"wp:featuredmedia":[{"date":"2015-07-16T14:42:21","_links":{"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"replies":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=9663","embeddable":true}],"author":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/42","embeddable":true}],"wp:term":[{"taxonomy":"language","href":"https://www.concrete.com.br/wp-json/wp/v2/language?post=9663","embeddable":true}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/9663"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}]},"author":42,"link":"https://www.concrete.com.br/android-google-java-oracle/","caption":{"rendered":""},"type":"attachment","title":{"rendered":"Android-Google-Java-Oracle"},"media_details":{"file":"2015/07/Android-Google-Java-Oracle.jpg","sizes":{"thumbnail":{"file":"Android-Google-Java-Oracle-150x150.jpg","mime_type":"image/jpeg","width":150,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-150x150.jpg","height":150},"thumb-relacionado":{"file":"Android-Google-Java-Oracle-250x250.jpg","mime_type":"image/jpeg","width":250,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-250x250.jpg","height":250},"box-pequeno":{"file":"Android-Google-Java-Oracle-263x219.jpg","mime_type":"image/jpeg","width":263,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-263x219.jpg","height":219},"autor-post":{"file":"Android-Google-Java-Oracle-140x140.jpg","mime_type":"image/jpeg","width":140,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-140x140.jpg","height":140},"lista-eventos":{"file":"Android-Google-Java-Oracle-477x247.jpg","mime_type":"image/jpeg","width":477,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-477x247.jpg","height":247},"medium":{"file":"Android-Google-Java-Oracle-300x171.jpg","mime_type":"image/jpeg","width":300,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-300x171.jpg","height":171},"box-grande":{"file":"Android-Google-Java-Oracle-264x350.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-264x350.jpg","height":350},"box-pequeno-2":{"file":"Android-Google-Java-Oracle-264x224.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-264x224.jpg","height":224},"full":{"file":"Android-Google-Java-Oracle.jpg","mime_type":"image/jpeg","width":614,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle.jpg","height":350}},"image_meta":{"aperture":"0","copyright":"","orientation":"0","focal_length":"0","iso":"0","keywords":[],"caption":"","created_timestamp":"0","credit":"","camera":"","title":"","shutter_speed":"0"},"width":614,"height":350},"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle.jpg","alt_text":"","media_type":"image","mime_type":"image/jpeg","id":9663,"slug":"android-google-java-oracle"}]},"link":"https://www.concrete.com.br/2015/07/16/java-para-androideiros/","title":{"rendered":"Java para Androideiros"},"embedded":{"author":[{"avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]},"name":"Victor Nascimento","link":"https://www.concrete.com.br/author/victor-nascimento/","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","id":28,"url":"http://olinasc.com","slug":"victor-nascimento"}],"wp:term":[[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","id":17,"taxonomy":"category","slug":"engenharia-de-software"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=75"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/75"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/mobile/","name":"Mobile","id":75,"taxonomy":"category","slug":"mobile"}],[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=475"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/475"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/android-2/","name":"android","id":475,"taxonomy":"post_tag","slug":"android-2"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=82"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/82"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/desenvolvimento-mobile/","name":"desenvolvimento mobile","id":82,"taxonomy":"post_tag","slug":"desenvolvimento-mobile"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=477"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/477"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/desenvolvimento-web/","name":"desenvolvimento web","id":477,"taxonomy":"post_tag","slug":"desenvolvimento-web"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=68"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/68"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/java/","name":"java","id":68,"taxonomy":"post_tag","slug":"java"}],[]],"wp:featuredmedia":[{"date":"2015-07-16T14:42:21","_links":{"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"replies":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=9663","embeddable":true}],"author":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/42","embeddable":true}],"wp:term":[{"taxonomy":"language","href":"https://www.concrete.com.br/wp-json/wp/v2/language?post=9663","embeddable":true}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/9663"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}]},"author":42,"link":"https://www.concrete.com.br/android-google-java-oracle/","caption":{"rendered":""},"type":"attachment","title":{"rendered":"Android-Google-Java-Oracle"},"media_details":{"file":"2015/07/Android-Google-Java-Oracle.jpg","sizes":{"thumbnail":{"file":"Android-Google-Java-Oracle-150x150.jpg","mime_type":"image/jpeg","width":150,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-150x150.jpg","height":150},"thumb-relacionado":{"file":"Android-Google-Java-Oracle-250x250.jpg","mime_type":"image/jpeg","width":250,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-250x250.jpg","height":250},"box-pequeno":{"file":"Android-Google-Java-Oracle-263x219.jpg","mime_type":"image/jpeg","width":263,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-263x219.jpg","height":219},"autor-post":{"file":"Android-Google-Java-Oracle-140x140.jpg","mime_type":"image/jpeg","width":140,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-140x140.jpg","height":140},"lista-eventos":{"file":"Android-Google-Java-Oracle-477x247.jpg","mime_type":"image/jpeg","width":477,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-477x247.jpg","height":247},"medium":{"file":"Android-Google-Java-Oracle-300x171.jpg","mime_type":"image/jpeg","width":300,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-300x171.jpg","height":171},"box-grande":{"file":"Android-Google-Java-Oracle-264x350.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-264x350.jpg","height":350},"box-pequeno-2":{"file":"Android-Google-Java-Oracle-264x224.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle-264x224.jpg","height":224},"full":{"file":"Android-Google-Java-Oracle.jpg","mime_type":"image/jpeg","width":614,"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle.jpg","height":350}},"image_meta":{"aperture":"0","copyright":"","orientation":"0","focal_length":"0","iso":"0","keywords":[],"caption":"","created_timestamp":"0","credit":"","camera":"","title":"","shutter_speed":"0"},"width":614,"height":350},"source_url":"https://static.concrete.com.br/uploads/2015/07/Android-Google-Java-Oracle.jpg","alt_text":"","media_type":"image","mime_type":"image/jpeg","id":9663,"slug":"android-google-java-oracle"}]},"parsedDate":"16 de Julho de 2015","getAuthorDescription":"

Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.

","getPostDescription":"","getPostCategories":{"slug":["engenharia-de-software","mobile"],"id":[17,75],"name":["Desenvolvimento Web","Mobile"]},"getPostTags":{"slug":["android-2","desenvolvimento-mobile","desenvolvimento-web","java"],"id":[475,82,477,68],"name":["android","desenvolvimento mobile","desenvolvimento web","java"]},"getPostLanguage":"pt"},{"date":"2015-11-13T10:00:10","custom_author":{"name":null,"description":null,"avatar":null},"getAuthor":"Victor Nascimento","_embedded":{"author":[{"avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]},"name":"Victor Nascimento","link":"https://www.concrete.com.br/author/victor-nascimento/","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","id":28,"url":"http://olinasc.com","slug":"victor-nascimento"}],"wp:term":[[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","id":17,"taxonomy":"category","slug":"engenharia-de-software"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=75"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/75"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/mobile/","name":"Mobile","id":75,"taxonomy":"category","slug":"mobile"}],[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=475"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/475"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/android-2/","name":"android","id":475,"taxonomy":"post_tag","slug":"android-2"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=68"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/68"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/java/","name":"java","id":68,"taxonomy":"post_tag","slug":"java"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=991"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/991"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/proxy/","name":"Proxy","id":991,"taxonomy":"post_tag","slug":"proxy"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=992"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/992"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/runtime/","name":"runtime","id":992,"taxonomy":"post_tag","slug":"runtime"}]],"wp:featuredmedia":[{"date":"2015-10-29T17:57:09","_links":{"replies":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=10364","embeddable":true}],"author":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28","embeddable":true}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/10364"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}]},"author":28,"link":"https://www.concrete.com.br/diagrama_proxy_java/","caption":{"rendered":"

Diagrama Proxy em Java

\n"},"type":"attachment","title":{"rendered":"Diagrama Proxy em Java"},"media_details":{"file":"2015/10/diagrama_proxy_java.png","sizes":{"thumbnail":{"file":"diagrama_proxy_java-150x150.png","mime_type":"image/png","width":150,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-150x150.png","height":150},"thumb-relacionado":{"file":"diagrama_proxy_java-250x250.png","mime_type":"image/png","width":250,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-250x250.png","height":250},"box-pequeno":{"file":"diagrama_proxy_java-263x219.png","mime_type":"image/png","width":263,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-263x219.png","height":219},"autor-post":{"file":"diagrama_proxy_java-140x140.png","mime_type":"image/png","width":140,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-140x140.png","height":140},"lista-eventos":{"file":"diagrama_proxy_java-477x247.png","mime_type":"image/png","width":477,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-477x247.png","height":247},"medium":{"file":"diagrama_proxy_java-300x175.png","mime_type":"image/png","width":300,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-300x175.png","height":175},"box-grande":{"file":"diagrama_proxy_java-264x336.png","mime_type":"image/png","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-264x336.png","height":336},"box-pequeno-2":{"file":"diagrama_proxy_java-264x224.png","mime_type":"image/png","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-264x224.png","height":224},"full":{"file":"diagrama_proxy_java.png","mime_type":"image/png","width":577,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java.png","height":336}},"image_meta":{"aperture":"0","copyright":"","orientation":"0","focal_length":"0","iso":"0","keywords":[],"caption":"","created_timestamp":"0","credit":"","camera":"","title":"","shutter_speed":"0"},"width":577,"height":336},"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java.png","alt_text":"Diagrama Proxy em Java","media_type":"image","mime_type":"image/png","id":10364,"slug":"diagrama_proxy_java"}]},"link":"https://www.concrete.com.br/2015/11/13/proxy-em-runtime-java-android/","title":{"rendered":"Criando um Proxy em Runtime no Java (e no Android)"},"embedded":{"author":[{"avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]},"name":"Victor Nascimento","link":"https://www.concrete.com.br/author/victor-nascimento/","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","id":28,"url":"http://olinasc.com","slug":"victor-nascimento"}],"wp:term":[[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","id":17,"taxonomy":"category","slug":"engenharia-de-software"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=75"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/75"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/mobile/","name":"Mobile","id":75,"taxonomy":"category","slug":"mobile"}],[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=475"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/475"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/android-2/","name":"android","id":475,"taxonomy":"post_tag","slug":"android-2"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=68"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/68"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/java/","name":"java","id":68,"taxonomy":"post_tag","slug":"java"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=991"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/991"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/proxy/","name":"Proxy","id":991,"taxonomy":"post_tag","slug":"proxy"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=992"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/992"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/runtime/","name":"runtime","id":992,"taxonomy":"post_tag","slug":"runtime"}]],"wp:featuredmedia":[{"date":"2015-10-29T17:57:09","_links":{"replies":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=10364","embeddable":true}],"author":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28","embeddable":true}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/10364"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}]},"author":28,"link":"https://www.concrete.com.br/diagrama_proxy_java/","caption":{"rendered":"

Diagrama Proxy em Java

\n"},"type":"attachment","title":{"rendered":"Diagrama Proxy em Java"},"media_details":{"file":"2015/10/diagrama_proxy_java.png","sizes":{"thumbnail":{"file":"diagrama_proxy_java-150x150.png","mime_type":"image/png","width":150,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-150x150.png","height":150},"thumb-relacionado":{"file":"diagrama_proxy_java-250x250.png","mime_type":"image/png","width":250,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-250x250.png","height":250},"box-pequeno":{"file":"diagrama_proxy_java-263x219.png","mime_type":"image/png","width":263,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-263x219.png","height":219},"autor-post":{"file":"diagrama_proxy_java-140x140.png","mime_type":"image/png","width":140,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-140x140.png","height":140},"lista-eventos":{"file":"diagrama_proxy_java-477x247.png","mime_type":"image/png","width":477,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-477x247.png","height":247},"medium":{"file":"diagrama_proxy_java-300x175.png","mime_type":"image/png","width":300,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-300x175.png","height":175},"box-grande":{"file":"diagrama_proxy_java-264x336.png","mime_type":"image/png","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-264x336.png","height":336},"box-pequeno-2":{"file":"diagrama_proxy_java-264x224.png","mime_type":"image/png","width":264,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java-264x224.png","height":224},"full":{"file":"diagrama_proxy_java.png","mime_type":"image/png","width":577,"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java.png","height":336}},"image_meta":{"aperture":"0","copyright":"","orientation":"0","focal_length":"0","iso":"0","keywords":[],"caption":"","created_timestamp":"0","credit":"","camera":"","title":"","shutter_speed":"0"},"width":577,"height":336},"source_url":"https://static.concrete.com.br/uploads/2015/10/diagrama_proxy_java.png","alt_text":"Diagrama Proxy em Java","media_type":"image","mime_type":"image/png","id":10364,"slug":"diagrama_proxy_java"}]},"parsedDate":"13 de Novembro de 2015","getAuthorDescription":"

Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.

","getPostDescription":"","getPostCategories":{"slug":["engenharia-de-software","mobile"],"id":[17,75],"name":["Desenvolvimento Web","Mobile"]},"getPostTags":{"slug":["android-2","java","proxy","runtime"],"id":[475,68,991,992],"name":["android","java","Proxy","runtime"]},"getPostLanguage":"pt"},{"date":"2012-09-28T13:02:05","custom_author":{"name":null,"description":null,"avatar":null},"getAuthor":"Victor Nascimento","_embedded":{"replies":[[{"author_name":"Leandro Silva","date":"2012-09-28T20:11:00","parent":0,"author_url":"","author_avatar_urls":{"24":"https://secure.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments/1169"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments"}],"up":[{"post_type":"post","href":"https://www.concrete.com.br/wp-json/wp/v2/posts/3392","embeddable":true}]},"author":0,"link":"https://www.concrete.com.br/2012/09/28/para-aprender-erlang/#comment-1169","id":1169,"type":"comment","content":{"rendered":"

Legal o post, hein?! Bem bacana mesmo.

\n

Ah! E valeu pela citação. 🙂

\n"}},{"author_name":"Anthony","date":"2012-09-28T18:17:00","parent":0,"author_url":"http://pulse.yahoo.com/_6WDSB7JJCZRSPN6HC5VHFBJ3DI","author_avatar_urls":{"24":"https://secure.gravatar.com/avatar/?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments/1168"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments"}],"up":[{"post_type":"post","href":"https://www.concrete.com.br/wp-json/wp/v2/posts/3392","embeddable":true}]},"author":0,"link":"https://www.concrete.com.br/2012/09/28/para-aprender-erlang/#comment-1168","id":1168,"type":"comment","content":{"rendered":"

Nice, comprehensive set of Erlang links Victor! Thanks for stopping by my blog.

\n"}}]],"author":[{"avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]},"name":"Victor Nascimento","link":"https://www.concrete.com.br/author/victor-nascimento/","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","id":28,"url":"http://olinasc.com","slug":"victor-nascimento"}],"wp:term":[[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","id":17,"taxonomy":"category","slug":"engenharia-de-software"}],[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=187"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/187"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/dicas/","name":"dicas","id":187,"taxonomy":"post_tag","slug":"dicas"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=288"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/288"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/erlang/","name":"erlang","id":288,"taxonomy":"post_tag","slug":"erlang"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=237"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/237"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/links/","name":"links","id":237,"taxonomy":"post_tag","slug":"links"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=170"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/170"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/livros/","name":"livros","id":170,"taxonomy":"post_tag","slug":"livros"}]],"wp:featuredmedia":[{"date":"2013-03-13T09:19:39","_links":{"replies":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=5506","embeddable":true}],"author":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/1","embeddable":true}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/5506"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}]},"author":1,"link":"https://www.concrete.com.br/erlang_logo-2/","caption":{"rendered":""},"type":"attachment","title":{"rendered":"erlang_logo"},"media_details":{"file":"2012/09/erlang_logo.jpg","sizes":{"thumbnail":{"file":"erlang_logo-150x135.jpg","mime_type":"image/jpeg","width":150,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-150x135.jpg","height":135},"thumb-relacionado":{"file":"erlang_logo-250x135.jpg","mime_type":"image/jpeg","width":250,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-250x135.jpg","height":135},"box-pequeno":{"file":"erlang_logo-263x135.jpg","mime_type":"image/jpeg","width":263,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-263x135.jpg","height":135},"autor-post":{"file":"erlang_logo-140x135.jpg","mime_type":"image/jpeg","width":140,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-140x135.jpg","height":135},"medium":{"file":"erlang_logo-300x135.jpg","mime_type":"image/jpeg","width":300,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-300x135.jpg","height":135},"box-grande":{"file":"erlang_logo-264x135.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-264x135.jpg","height":135},"box-pequeno-2":{"file":"erlang_logo-264x135.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-264x135.jpg","height":135},"full":{"file":"erlang_logo.jpg","mime_type":"image/jpeg","width":300,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo.jpg","height":135}},"image_meta":{"aperture":"0","copyright":"","orientation":"0","focal_length":"0","iso":"0","keywords":[],"caption":"","created_timestamp":"0","credit":"","camera":"","title":"","shutter_speed":"0"},"width":300,"height":135},"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo.jpg","alt_text":"","media_type":"image","mime_type":"image/jpeg","id":5506,"slug":"erlang_logo-2"}]},"link":"https://www.concrete.com.br/2012/09/28/para-aprender-erlang/","title":{"rendered":"Para aprender Erlang"},"embedded":{"replies":[[{"author_name":"Leandro Silva","date":"2012-09-28T20:11:00","parent":0,"author_url":"","author_avatar_urls":{"24":"https://secure.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/594c3226fba09eb232dc16cddaa1077b?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments/1169"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments"}],"up":[{"post_type":"post","href":"https://www.concrete.com.br/wp-json/wp/v2/posts/3392","embeddable":true}]},"author":0,"link":"https://www.concrete.com.br/2012/09/28/para-aprender-erlang/#comment-1169","id":1169,"type":"comment","content":{"rendered":"

Legal o post, hein?! Bem bacana mesmo.

\n

Ah! E valeu pela citação. 🙂

\n"}},{"author_name":"Anthony","date":"2012-09-28T18:17:00","parent":0,"author_url":"http://pulse.yahoo.com/_6WDSB7JJCZRSPN6HC5VHFBJ3DI","author_avatar_urls":{"24":"https://secure.gravatar.com/avatar/?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments/1168"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments"}],"up":[{"post_type":"post","href":"https://www.concrete.com.br/wp-json/wp/v2/posts/3392","embeddable":true}]},"author":0,"link":"https://www.concrete.com.br/2012/09/28/para-aprender-erlang/#comment-1168","id":1168,"type":"comment","content":{"rendered":"

Nice, comprehensive set of Erlang links Victor! Thanks for stopping by my blog.

\n"}}]],"author":[{"avatar_urls":{"24":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=24&d=mm&r=g","48":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=48&d=mm&r=g","96":"https://secure.gravatar.com/avatar/7e91a769959ce0ec53d69e57f0d101b3?s=96&d=mm&r=g"},"_links":{"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/28"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users"}]},"name":"Victor Nascimento","link":"https://www.concrete.com.br/author/victor-nascimento/","description":"Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.","id":28,"url":"http://olinasc.com","slug":"victor-nascimento"}],"wp:term":[[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?categories=17"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/category"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories/17"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/categories"}]},"link":"https://www.concrete.com.br/category/engenharia-de-software/","name":"Desenvolvimento Web","id":17,"taxonomy":"category","slug":"engenharia-de-software"}],[{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=187"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/187"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/dicas/","name":"dicas","id":187,"taxonomy":"post_tag","slug":"dicas"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=288"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/288"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/erlang/","name":"erlang","id":288,"taxonomy":"post_tag","slug":"erlang"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=237"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/237"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/links/","name":"links","id":237,"taxonomy":"post_tag","slug":"links"},{"_links":{"wp:post_type":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/posts?tags=170"}],"curies":[{"templated":true,"name":"wp","href":"https://api.w.org/{rel}"}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/taxonomies/post_tag"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags/170"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/tags"}]},"link":"https://www.concrete.com.br/tag/livros/","name":"livros","id":170,"taxonomy":"post_tag","slug":"livros"}]],"wp:featuredmedia":[{"date":"2013-03-13T09:19:39","_links":{"replies":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/comments?post=5506","embeddable":true}],"author":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/users/1","embeddable":true}],"about":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/types/attachment"}],"self":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media/5506"}],"collection":[{"href":"https://www.concrete.com.br/wp-json/wp/v2/media"}]},"author":1,"link":"https://www.concrete.com.br/erlang_logo-2/","caption":{"rendered":""},"type":"attachment","title":{"rendered":"erlang_logo"},"media_details":{"file":"2012/09/erlang_logo.jpg","sizes":{"thumbnail":{"file":"erlang_logo-150x135.jpg","mime_type":"image/jpeg","width":150,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-150x135.jpg","height":135},"thumb-relacionado":{"file":"erlang_logo-250x135.jpg","mime_type":"image/jpeg","width":250,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-250x135.jpg","height":135},"box-pequeno":{"file":"erlang_logo-263x135.jpg","mime_type":"image/jpeg","width":263,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-263x135.jpg","height":135},"autor-post":{"file":"erlang_logo-140x135.jpg","mime_type":"image/jpeg","width":140,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-140x135.jpg","height":135},"medium":{"file":"erlang_logo-300x135.jpg","mime_type":"image/jpeg","width":300,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-300x135.jpg","height":135},"box-grande":{"file":"erlang_logo-264x135.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-264x135.jpg","height":135},"box-pequeno-2":{"file":"erlang_logo-264x135.jpg","mime_type":"image/jpeg","width":264,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo-264x135.jpg","height":135},"full":{"file":"erlang_logo.jpg","mime_type":"image/jpeg","width":300,"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo.jpg","height":135}},"image_meta":{"aperture":"0","copyright":"","orientation":"0","focal_length":"0","iso":"0","keywords":[],"caption":"","created_timestamp":"0","credit":"","camera":"","title":"","shutter_speed":"0"},"width":300,"height":135},"source_url":"https://static.concrete.com.br/uploads/2012/09/erlang_logo.jpg","alt_text":"","media_type":"image","mime_type":"image/jpeg","id":5506,"slug":"erlang_logo-2"}]},"parsedDate":"28 de Setembro de 2012","getAuthorDescription":"

Desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado \"linguagem\" e se focando muito em \"programação\". Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.

","getPostDescription":"","getPostCategories":{"slug":["engenharia-de-software"],"id":[17],"name":["Desenvolvimento Web"]},"getPostTags":{"slug":["dicas","erlang","links","livros"],"id":[187,288,237,170],"name":["dicas","erlang","links","livros"]},"getPostLanguage":"pt"}],"relatedPostsFrom":5,"relatedPostSize":4},"posts":{"pageNumber":0,"pageSize":4,"offset":0,"pagination":9,"app":{"ssrLocation":"/2013/03/13/um-mundo-java-sem-xml/","title":"Concrete Um mundo Java sem XML","currentLang":{"intro":{"title":"Nós
Movemos
O Mundo.","subtitle":"Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial. Acreditamos que as transformações que mantêm o mundo em constante movimento passam por nossas mãos - e gostamos disso."},"jobs":{"more":"Mais informações","apply":"Quero me candidatar","other":"Outras vagas","moreInformation":"Mais informações"},"posts":{"loadmore":"Carregar mais posts"},"search":{"placeholder":"Faça sua busca..."},"shared":{"begin":"Início","blog":"Blog","jobs":"Vagas","contact":"Contato","back":"Voltar","share":"Compartilhar","press":"Comunicação
e imprensa","commercial":"Comercial","hr":"Recursos
Humanos"}},"language":"pt"}}}