{"id":1965,"date":"2015-10-19T07:33:06","date_gmt":"2015-10-19T07:33:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1965"},"modified":"2024-09-12T01:02:46","modified_gmt":"2024-09-12T08:02:46","slug":"javasdk-2-2-ga","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/javasdk-2-2-ga\/","title":{"rendered":"Anunciando a disponibilidade geral do Java SDK 2.2"},"content":{"rendered":"<p>Em nome da equipe do SDK, \u00e9 com grande prazer que anuncio que a vers\u00e3o do Java SDK <code>2.2<\/code> agora \u00e9 GA!<\/p>\n<p>Esta vers\u00e3o est\u00e1 repleta de aprimoramentos e corre\u00e7\u00f5es de bugs. Antes de mais nada, ela oferece compatibilidade com todas as novidades do nosso novo <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/t\/couchbase-server-4-0-is-now-ga\/5374\/\"><code>Servidor Couchbase 4.0<\/code><\/a> traz para a mesa.<\/p>\n<p>Gra\u00e7as ao feedback e ap\u00f3s algumas itera\u00e7\u00f5es (n\u00e3o houve <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/javasdk-2.2-dp\/\">um<\/a> mas <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/java-sdk-2.2.0-developer-preview-refresh\/\">dois<\/a> Developer Previews para esta vers\u00e3o!), agora temos um rico conjunto de melhorias que podem ser aproveitadas ao migrar do <code>2.0<\/code>\/<code>2.1<\/code> para <code>2.2<\/code>.<\/p>\n<p>Veja o <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/sdks\/java-2.2\/release-notes.html\">Notas de vers\u00e3o<\/a> para obter uma lista completa das altera\u00e7\u00f5es, mas aqui est\u00e1 uma recapitula\u00e7\u00e3o:<\/p>\n<ul>\n<li>Mudou de observ\u00e1veis quentes para <a href=\"#cold\">frios<\/a><\/li>\n<li>Suporte estendido para <a href=\"#mds\">N1QL e escalonamento multidimensional<\/a> (MDS)<\/li>\n<li><a href=\"#durability\">Durabilidade aprimorada<\/a> suporte<\/li>\n<li>Aprimoramentos de suporte com <a href=\"#metrics\">m\u00e9tricas<\/a><\/li>\n<li>Simples <a href=\"#odm\">ODM<\/a><\/li>\n<li>Sincroniza\u00e7\u00e3o e assincroniza\u00e7\u00e3o <a href=\"#api\">Aprimoramentos da API<\/a><\/li>\n<li><a href=\"#misc\">Diversos<\/a> (altera\u00e7\u00f5es de nomes, atualiza\u00e7\u00f5es de depend\u00eancias)<\/li>\n<\/ul>\n<p>Para ter acesso a essa vers\u00e3o, basta atualizar seu <code>pom.xml<\/code> (ou fa\u00e7a o download do <a href=\"https:\/\/packages.couchbase.com\/clients\/java\/2.2.0\/Couchbase-Java-Client-2.2.0.zip\" target=\"_blank\" rel=\"noopener noreferrer\">arquivo<\/a>):<\/p>\n<pre><code>\r\n    \r\n        com.couchbase.client\r\n        java-client\r\n        2.2.0\r\n    \r\n\r\n<\/code><\/pre>\n<p>Voc\u00ea tamb\u00e9m pode consultar o <a href=\"https:\/\/docs.couchbase.com\/sdk-api\/couchbase-java-client-2.2.0\/\">javadocs<\/a> e <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/sdks\/java-2.2\/java-intro.html\">Documenta\u00e7\u00e3o do SDK<\/a> para esta vers\u00e3o.<\/p>\n<h2>Novos recursos<\/h2>\n<h3><a id=\"mds\" name=\"mds\"><\/a>Suporte a N1QL e MDS<\/h3>\n<p>O SDK foi ajustado para funcionar perfeitamente com <code>Servidor Couchbase 4.0<\/code>:<\/p>\n<ul>\n<li>Explore uma DSL completa para trabalhar com N1QL e executar SELECT, al\u00e9m de trabalhar com \u00edndices.<\/li>\n<li>Permita que o SDK e o servi\u00e7o de consulta otimizem as consultas que voc\u00ea executa com frequ\u00eancia usando a op\u00e7\u00e3o <code>adhoc(false)<\/code> ajuste de <code>N1qlParams<\/code> em voc\u00ea <code>N1qlQuery<\/code>.<\/li>\n<li>Confie no SDK para estar ciente de sua <code>MDS<\/code> grupo (<code>Dimensionamento multidimensional<\/code>A possibilidade de os n\u00f3s terem diferentes servi\u00e7os ativados, permitindo que voc\u00ea dimensione os n\u00f3s de acordo com a necessidade deles (por exemplo, mais RAM para n\u00f3s de dados, mais CPU para n\u00f3s de consulta).<\/li>\n<\/ul>\n<p><strong>Sobre a otimiza\u00e7\u00e3o de consultas<\/strong>: \u00e9 uma substitui\u00e7\u00e3o do <code>preparar<\/code> API em visualiza\u00e7\u00f5es para desenvolvedores. N\u00e3o h\u00e1 necessidade de manter uma <code>PreparedPayload<\/code> ou <code>Plano de consulta<\/code>. Marca\u00e7\u00e3o de uma consulta para otimiza\u00e7\u00e3o usando <code>N1qlParams<\/code>'s <code>adhoc(false)<\/code>\u00a0usar\u00e1 internamente o recurso de instru\u00e7\u00e3o preparada do mecanismo de consulta, armazenando em cache at\u00e9 5.000 planos de execu\u00e7\u00e3o para uma execu\u00e7\u00e3o mais r\u00e1pida.<\/p>\n<h3><a id=\"durability\" name=\"durability\"><\/a>Durabilidade aprimorada<\/h3>\n<p>Outra possibilidade introduzida em <code>Servidor Couchbase 4.0<\/code> \u00e9 a durabilidade aprimorada. A ideia \u00e9 que, em vez de usar o CAS para verificar a persist\u00eancia e a replica\u00e7\u00e3o corretas dos seus dados, uma solu\u00e7\u00e3o mais refinada e mais eficiente seja usada. <code>Muta\u00e7\u00e3oToken<\/code> pode ser emitida pelo servidor a cada muta\u00e7\u00e3o e usada para observa\u00e7\u00e3o da durabilidade.<\/p>\n<p>Ele permite garantir que uma muta\u00e7\u00e3o espec\u00edfica tenha sido vista em uma r\u00e9plica, mesmo que uma muta\u00e7\u00e3o mais recente seja feita nesse meio tempo (alterando mais uma vez o CAS no mestre e na r\u00e9plica). Ele tamb\u00e9m permite uma detec\u00e7\u00e3o mais correta do estado se um failover r\u00edgido tiver sido acionado no cluster.<\/p>\n<p>Para ativar esse recurso no <code>CouchbaseEnvironment<\/code> usar o <code>mutationTokensEnabled(true)<\/code> m\u00e9todo.<\/p>\n<p><strong>Observa\u00e7\u00e3o<\/strong> Isso implica que bytes adicionais s\u00e3o enviados pelo servidor em cada resposta de muta\u00e7\u00e3o, o que acarreta uma pequena sobrecarga e, portanto, \u00e9 desativado por padr\u00e3o.<\/p>\n<h3><a id=\"metrics\" name=\"metrics\"><\/a>M\u00e9tricas<\/h3>\n<p>O que est\u00e1 acontecendo dentro do SDK? Qual \u00e9 a integridade da minha JVM? Essas lat\u00eancias s\u00e3o devidas \u00e0s viagens de ida e volta da rede ou est\u00e3o ocorrendo no SDK?<\/p>\n<p>Todas essas perguntas e outras encontram respostas no novo recurso Metrics!<\/p>\n<p><code>Tempo de execu\u00e7\u00e3o<\/code> e <code>Lat\u00eancia<\/code> As m\u00e9tricas s\u00e3o coletadas o tempo todo e s\u00e3o despejadas regularmente no <code>EventBus<\/code> (um <code>Observ\u00e1vel<\/code> por padr\u00e3o, a cada hora. Al\u00e9m de alterar o intervalo do despejo, \u00e9 poss\u00edvel configurar facilmente um consumidor para esses eventos de m\u00e9trica que os registram.<\/p>\n<p>D\u00ea uma olhada na documenta\u00e7\u00e3o para descobrir todos os detalhes essenciais :)<\/p>\n<h3><a id=\"odm\" name=\"odm\"><\/a>ODM simples com API de reposit\u00f3rio<\/h3>\n<p>Estamos explorando o ODM (<code>Mapeamento de objeto-documento<\/code>) na forma de um <code>Reposit\u00f3rio<\/code> que permite armazenar classes de Entidade diretamente, desde que sejam suficientemente simples (por exemplo, por enquanto ele precisa de um construtor vazio) e anotadas com <code>@Documento<\/code>, <code>@Id<\/code> e <code>@Campo<\/code>.<\/p>\n<h2><a id=\"cold\" name=\"cold\"><\/a>De observ\u00e1veis quentes a observ\u00e1veis frios<\/h2>\n<p>Essa \u00e9 uma grande mudan\u00e7a no comportamento do <code>ass\u00edncrono<\/code> API. Em <code>RxJava<\/code>, a <strong>quente<\/strong> <code>Observ\u00e1vel<\/code> emitir\u00e1 dados independentemente de algu\u00e9m estar ou n\u00e3o ouvindo\/assinando e sempre fornecer\u00e1 os mesmos dados a novos assinantes.<\/p>\n<p>Esse era o comportamento dos Observ\u00e1veis do SDK do Couchbase anteriormente. Isso significava que, se voc\u00ea <strong>necess\u00e1rio<\/strong> novas assinaturas para acionar uma nova opera\u00e7\u00e3o no banco de dados (<em>por exemplo, no contexto de <code>tentar novamente<\/code><\/em>), voc\u00ea tinha que envolver sua chamada em um <code>Observ\u00e1vel.defer()<\/code>.<\/p>\n<p>Caso contr\u00e1rio, todas as novas tentativas teriam o mesmo primeiro resultado, por exemplo, um <code>TemporaryFailureException<\/code>.<\/p>\n<p>De <code>2.2<\/code> em diante, o comportamento padr\u00e3o \u00e9 ter <strong>frio<\/strong> <code>Observ\u00e1vel<\/code>s, o que significa que o encapsulamento em <code>adiar<\/code> agora \u00e9 redundante. Todas as chamadas do SDK funcionar\u00e3o perfeitamente com <code>RxJava<\/code>'s <code>tentar novamente<\/code> sem\u00e2ntica.<\/p>\n<p>A menos que voc\u00ea explicitamente <code>subscribe()<\/code> para um <code>Observ\u00e1vel<\/code> retornado pelo SDK, nenhuma intera\u00e7\u00e3o com o banco de dados \u00e9 acionada. Essa \u00e9 uma abordagem mais pregui\u00e7osa de \"n\u00e3o fazer nada at\u00e9 que seja necess\u00e1rio\" que tamb\u00e9m \u00e9 ben\u00e9fica ao declarar fluxos de fallback (como com <code>Observ\u00e1vel#onErrorResumeNext()<\/code>).<\/p>\n<h2><a id=\"api\" name=\"api\"><\/a>Aprimoramentos da API<\/h2>\n<h3><code>getFromReplica<\/code> itera\u00e7\u00e3o<\/h3>\n<p>Na API de sincroniza\u00e7\u00e3o, agora h\u00e1 uma sobrecarga de <code>getFromReplica<\/code> que retorna um <code>Iterador<\/code>permitindo o consumo f\u00e1cil de apenas parte das respostas (por exemplo, quando se est\u00e1 interessado apenas na resposta mais r\u00e1pida).<\/p>\n<h3><code>includeDocs<\/code> em <code>Consulta<\/code><\/h3>\n<p>Ainda na API de sincroniza\u00e7\u00e3o, se voc\u00ea quiser que seu <code>Consulta<\/code> para recuperar com efici\u00eancia todo o conte\u00fado dos documentos em segundo plano, agora voc\u00ea pode usar o <code>includeDocs<\/code> op\u00e7\u00e3o.<\/p>\n<h3>Sem\u00e2ntica de contador<\/h3>\n<p>Anteriormente, <code>contador<\/code> inicializaria o documento do contador com o valor padr\u00e3o de 0 se n\u00e3o houver <code>valor inicial<\/code> foi fornecido na sobrecarga.<\/p>\n<p>Isso foi alterado para que, em vez disso, um <code>DocumentDoesNotExistException<\/code> \u00e9 lan\u00e7ado com esse tipo de sobrecarga (como na gera\u00e7\u00e3o do SDK 1.4). Para inicializar com 0 em vez de gerar erro, basta usar uma das sobrecargas que aceitam um <code>valor inicial<\/code>.<\/p>\n<h3>Requisito de durabilidade Suporte para <code>contador<\/code>, <code>anexar<\/code> e <code>prefixar<\/code><\/h3>\n<p>Anteriormente, nenhuma sobrecarga permitia definir um <code>PersistTo<\/code> e\/ou <code>ReplicarPara<\/code> requisito de durabilidade. Isso j\u00e1 foi implementado.<\/p>\n<h3><code>CASMismatchException<\/code> em vez de <code>CouchbaseException<\/code> para <code>anexar<\/code> e <code>prefixar<\/code><\/h3>\n<p>Como o t\u00edtulo indica, onde ambos os m\u00e9todos retornariam apenas um <code>CouchbaseException<\/code><\/p>\n<h3>Op\u00e7\u00f5es do documento de design<\/h3>\n<p>Agora voc\u00ea pode especificar diferentes op\u00e7\u00f5es por documento de design ao criar ou substituir um.<\/p>\n<h3>CouchbaseEnvironment: Evitando confus\u00e3o<\/h3>\n<p>O <code>CouchbaseEnvironment.Builder<\/code> n\u00e3o implementa mais a interface, for\u00e7ando voc\u00ea a chamar <code>construir()<\/code> para obter o ambiente real (e, assim, evitar confundir <code>NullPointerException<\/code> durante o uso).<\/p>\n<h2><a id=\"misc\" name=\"misc\"><\/a>Diversos<\/h2>\n<h3>Mudan\u00e7as de nome<\/h3>\n<p>Algumas classes relacionadas a <code>N1QL<\/code> foram renomeadas para evitar confus\u00e3o e se alinhar melhor com outras classes semelhantes e\/ou outros SDKs:<\/p>\n<ul>\n<li>A maioria <code>Consulta<\/code> as classes relacionadas foram prefixadas com <code>N1QL<\/code> (por exemplo. <code>Resultado de consulta ass\u00edncrona<\/code> torna-se <code>AsyncN1qlQueryResult<\/code>). Isso \u00e9 mais consistente com a nomea\u00e7\u00e3o, por exemplo, de visualiza\u00e7\u00f5es (<code>Consulta<\/code>, <code>N1qlQuery<\/code>).<\/li>\n<li><code>QueryParams<\/code> torna-se <code>N1qlParams<\/code> e <code>M\u00e9tricas de consulta<\/code> torna-se <code>N1qlMetrics<\/code>.<\/li>\n<li>As v\u00e1rias inst\u00e2ncias da palavra <code>parametrizado<\/code> foram substitu\u00eddos por <code>parametrizado<\/code> na documenta\u00e7\u00e3o e nos SDKs. Por exemplo, em <code>N1qlQuery.parameterized(Statement st, JsonObject paramValues)<\/code> m\u00e9todo de f\u00e1brica...<\/li>\n<\/ul>\n<h3>Atualiza\u00e7\u00f5es de depend\u00eancias<\/h3>\n<p>A seguinte depend\u00eancia externa foi atualizada:<\/p>\n<ul>\n<li><code>RxJava<\/code> de <code>1.0.4<\/code> para <strong><code>1.0.14<\/code><\/strong><\/li>\n<\/ul>\n<p>Al\u00e9m disso, as depend\u00eancias internas tamb\u00e9m foram atualizadas:<\/p>\n<ul>\n<li><code>Netty<\/code> de <code>4.0.25.Final<\/code> para <strong><code>4.0.30.Final<\/code><\/strong><\/li>\n<li><code>LMAX Disruptor<\/code> <code>3.3.0<\/code> para <strong><code>3.3.2<\/code><\/strong><\/li>\n<li><code>Jackson<\/code> de <code>2.4.2<\/code> para <strong><code>2.6.1<\/code><\/strong><\/li>\n<li><code>LatencyUtils<\/code> Novo na vers\u00e3o <strong><code>2.0.2<\/code><\/strong><\/li>\n<\/ul>\n<h2>Esperamos que voc\u00ea goste desse lan\u00e7amento. Boa programa\u00e7\u00e3o!<\/h2>","protected":false},"excerpt":{"rendered":"<p>On behalf of the SDK Team, it is my great pleasure to announce that the Java SDK version 2.2 is now GA! This version is packed with enhancements and bugfixes. First and foremost it offers compatibility with all the new [&hellip;]<\/p>\n","protected":false},"author":48,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[9022],"class_list":["post-1965","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Announcing Java SDK 2.2 General Availability - The Couchbase Blog<\/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:\/\/www.couchbase.com\/blog\/pt\/javasdk-2-2-ga\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing Java SDK 2.2 General Availability\" \/>\n<meta property=\"og:description\" content=\"On behalf of the SDK Team, it is my great pleasure to announce that the Java SDK version 2.2 is now GA! This version is packed with enhancements and bugfixes. First and foremost it offers compatibility with all the new [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/javasdk-2-2-ga\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-19T07:33:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-12T08:02:46+00:00\" \/>\n<meta name=\"author\" content=\"Simon Basle, Software Engineer, Pivotal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon Basle, Software Engineer, Pivotal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/\"},\"author\":{\"name\":\"Simon Basle, Software Engineer, Pivotal\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/a4086d75b59570cc2e5ff66d98c5d1a1\"},\"headline\":\"Announcing Java SDK 2.2 General Availability\",\"datePublished\":\"2015-10-19T07:33:06+00:00\",\"dateModified\":\"2024-09-12T08:02:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/\"},\"wordCount\":1025,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/\",\"name\":\"Announcing Java SDK 2.2 General Availability - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-10-19T07:33:06+00:00\",\"dateModified\":\"2024-09-12T08:02:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/javasdk-2-2-ga\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Announcing Java SDK 2.2 General Availability\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/a4086d75b59570cc2e5ff66d98c5d1a1\",\"name\":\"Simon Basle, Software Engineer, Pivotal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g4b2bcd169f85f21cee7b8a0e0c9e7854\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g\",\"caption\":\"Simon Basle, Software Engineer, Pivotal\"},\"description\":\"Simon Basl_ is a Paris-based Software Engineer working in the Spring team at Pivotal. Previously, he worked in the Couchbase Java SDK team. His interests span software design aspects (OOP, design patterns, software architecture), rich clients, what lies beyond code (continuous integration, (D)VCS, best practices), and reactive programming. He is also an editor for the French version of InfoQ.com.\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/author\\\/simon-basle\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Announcing Java SDK 2.2 General Availability - The Couchbase Blog","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:\/\/www.couchbase.com\/blog\/pt\/javasdk-2-2-ga\/","og_locale":"pt_BR","og_type":"article","og_title":"Announcing Java SDK 2.2 General Availability","og_description":"On behalf of the SDK Team, it is my great pleasure to announce that the Java SDK version 2.2 is now GA! This version is packed with enhancements and bugfixes. First and foremost it offers compatibility with all the new [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/javasdk-2-2-ga\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-10-19T07:33:06+00:00","article_modified_time":"2024-09-12T08:02:46+00:00","author":"Simon Basle, Software Engineer, Pivotal","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon Basle, Software Engineer, Pivotal","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/"},"author":{"name":"Simon Basle, Software Engineer, Pivotal","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/a4086d75b59570cc2e5ff66d98c5d1a1"},"headline":"Announcing Java SDK 2.2 General Availability","datePublished":"2015-10-19T07:33:06+00:00","dateModified":"2024-09-12T08:02:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/"},"wordCount":1025,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/","url":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/","name":"Announcing Java SDK 2.2 General Availability - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-10-19T07:33:06+00:00","dateModified":"2024-09-12T08:02:46+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/javasdk-2-2-ga\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Announcing Java SDK 2.2 General Availability"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/a4086d75b59570cc2e5ff66d98c5d1a1","name":"Simon Basle, engenheiro de software, Pivotal","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g4b2bcd169f85f21cee7b8a0e0c9e7854","url":"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g","caption":"Simon Basle, Software Engineer, Pivotal"},"description":"Simon Basl_ \u00e9 um engenheiro de software baseado em Paris que trabalha na equipe Spring da Pivotal. Anteriormente, ele trabalhou na equipe do Couchbase Java SDK. Seus interesses abrangem aspectos de design de software (OOP, padr\u00f5es de design, arquitetura de software), clientes avan\u00e7ados, o que est\u00e1 al\u00e9m do c\u00f3digo (integra\u00e7\u00e3o cont\u00ednua, (D)VCS, pr\u00e1ticas recomendadas) e programa\u00e7\u00e3o reativa. Ele tamb\u00e9m \u00e9 editor da vers\u00e3o francesa do InfoQ.com.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/simon-basle\/"}]}},"acf":[],"authors":[{"term_id":9022,"user_id":48,"is_guest":0,"slug":"simon-basle","display_name":"Simon Basle, Software Engineer, Pivotal","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3c3aec94782fea5f0a199368c15e836198faf05c1591e0ae0b91178a59457781?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1965"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1965\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1965"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}