{"id":2080,"date":"2015-07-27T08:17:42","date_gmt":"2015-07-27T08:17:41","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2080"},"modified":"2025-10-09T07:18:16","modified_gmt":"2025-10-09T14:18:16","slug":"java-sdk-2-2-0-developer-preview-refresh","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/java-sdk-2-2-0-developer-preview-refresh\/","title":{"rendered":"Actualizaci\u00f3n de Java SDK 2.2.0 Developer Preview"},"content":{"rendered":"<p>Nota de marzo de 2017: se puede encontrar informaci\u00f3n detallada sobre el bus de eventos y la recopilaci\u00f3n de m\u00e9tricas en el <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/sdk\/java\/collecting-information-and-logging.html\">documentaci\u00f3n oficial<\/a>. Parte de la informaci\u00f3n de este art\u00edculo puede estar obsoleta.<\/p>\n<p>Mientras Europa se derret\u00eda con el calor del verano, <a href=\"https:\/\/twitter.com\/simonbasle\">Simon<\/a> (desde Par\u00eds), <a href=\"https:\/\/twitter.com\/avsej\">Sergey<\/a> (de Minsk) y <a href=\"https:\/\/twitter.com\/daschl\">I<\/a> (de Viena) reutiliz\u00f3 el calor y prepar\u00f3 una nueva versi\u00f3n para ti. Se trata de la segunda versi\u00f3n preliminar para desarrolladores de la pr\u00f3xima versi\u00f3n 2.2.0. Aparte de las correcciones de errores (que tambi\u00e9n se incluyeron en la versi\u00f3n 2.1.4), trae las siguientes mejoras y nuevas caracter\u00edsticas<\/p>\n<ul>\n<li>Mayor compatibilidad con N1QL y el escalado multidimensional (MDS)<\/li>\n<li>Mejoras en las API Sync y Async<\/li>\n<li>Mejoras de la compatibilidad con m\u00e9tricas<\/li>\n<li>Varias actualizaciones de dependencias y cambios en el DCP<\/li>\n<\/ul>\n<p>Aqu\u00ed te explicamos c\u00f3mo conseguirlo ahora mismo:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/daschl\/5b32706a0a4fe50cfaa4.js\">https:\/\/gist.github.com\/daschl\/5b32706a0a4fe50cfaa4.js<\/a><\/p>\n<h2>Compatibilidad ampliada con N1QL y MDS<\/h2>\n<p>La funcionalidad N1QL DSL ha sido extendida para soportar una variedad de funciones N1QL, incluyendo (pero no limitadas a) agregaci\u00f3n, array, comparaci\u00f3n, fecha, meta, concordancia de patrones y funciones de cadena. Todas estas funciones se encuentran bajo el namespace \"com.couchbase.client.java.query.dsl.functions\" y deben ser importadas como m\u00e9todos est\u00e1ticos de ayuda por conveniencia.<\/p>\n<p>Dado que Multi-Dimensional Scaling tambi\u00e9n afecta a los buckets Memcached (no todos los nodos tienen que ser nodos de datos), el SDK ahora se asegura autom\u00e1ticamente de que s\u00f3lo esos nodos de datos se utilizan en el algoritmo de hashing ketama. Esto es completamente transparente para el usuario, pero es importante elegir 2.2.0 o posterior si quieres usar Couchbase Server 4.0 con MDS y cubos memcached. El SDK 1.4.x no se ve afectado y seguir\u00e1 funcionando sin problemas.<\/p>\n<p>Finalmente, para asegurarnos de que todas las APIs son consistentes, hemos optado por renombrar las consultas \"parametrizadas\" a \"parametrizadas\", que se considera la forma correcta en toda la documentaci\u00f3n de Couchbase y las APIs del SDK.<\/p>\n<h2>Mejoras en las API Sync y Async<\/h2>\n<p>Uno de los problemas comunes de la API as\u00edncrona es que los observables devueltos eran \"calientes\" en lugar de \"fr\u00edos\". Esto tiene sutiles implicaciones en la sem\u00e1ntica del reintento y la reutilizaci\u00f3n. Especialmente si se desea utilizar el operador de reintento, es necesario \"diferir\" el observable devuelto para que en cada resuscripci\u00f3n se genere un nuevo observable. En la versi\u00f3n 2.2.0 hemos decidido hacer que todas las llamadas a la API sean fr\u00edas, envolvi\u00e9ndolas desde el principio. El c\u00f3digo existente seguir\u00e1 funcionando, e incluso los aplazamientos dobles no causar\u00e1n ning\u00fan da\u00f1o.<\/p>\n<p>Compare este c\u00f3digo de reintento con el de 2.1.4:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/daschl\/0666841cb2bd69e53d17.js\">https:\/\/gist.github.com\/daschl\/0666841cb2bd69e53d17.js<\/a><\/p>\n<p>con la ligeramente m\u00e1s sencilla contra 2.2.0:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/daschl\/2b63c5193bac4dd11713.js\">https:\/\/gist.github.com\/daschl\/2b63c5193bac4dd11713.js<\/a><\/p>\n<p>Dado que las llamadas getFromReplica sirven para primar la disponibilidad sobre la consistencia, a menudo tiene sentido limitarse a tomar los N primeros documentos devueltos. Aunque esto es bastante f\u00e1cil de hacer en la API as\u00edncrona con el operador \"take()\", la API s\u00edncrona s\u00f3lo ofrec\u00eda una versi\u00f3n List. Para que sea m\u00e1s flexible para los usuarios que trabajan con la API de bloqueo, se han a\u00f1adido nuevas sobrecargas que ahora devuelven un Iterator en su lugar. Si s\u00f3lo te interesa el primer documento devuelto, puedes hacerlo de la siguiente manera:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/daschl\/0c7c92642d8c0af7dae3.js\">https:\/\/gist.github.com\/daschl\/0c7c92642d8c0af7dae3.js<\/a><\/p>\n<p>Anteriormente no era posible fallar en una operaci\u00f3n de contador si el documento no exist\u00eda - siempre se inicializaba con 0. Dado que esta caracter\u00edstica estaba disponible en la serie 1.x, hemos decidido traerla de vuelta en la sobrecarga del m\u00e9todo donde no se especifica ning\u00fan valor por defecto.<\/p>\n<p>As\u00ed que en 2.2.0, esta sobrecarga del m\u00e9todo \"Observable counter(String id, long delta)\" fallar\u00e1 con una \"DocumentDoesNotExistException\" si el documento no existe. Si quieres el comportamiento anterior, simplemente usa la sobrecarga con el valor inicial y ponlo a 0.<\/p>\n<p>Por \u00faltimo, el SDK soporta ahora m\u00e1s opciones de configuraci\u00f3n del entorno (incluyendo la posibilidad de configurar TCP_NODELAY) y los documentos de dise\u00f1o pueden configurarse ahora con opciones en el momento de su creaci\u00f3n. A continuaci\u00f3n se explica c\u00f3mo crear un documento de dise\u00f1o y cambiar el intervalo m\u00ednimo de actualizaci\u00f3n por defecto:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/daschl\/ddec1089eed01285d0c4.js\">https:\/\/gist.github.com\/daschl\/ddec1089eed01285d0c4.js<\/a><\/p>\n<h2>Mejoras de la compatibilidad con m\u00e9tricas<\/h2>\n<p>Una pregunta com\u00fan que se hacen los desarrolladores y los operadores es: \u00bfqu\u00e9 est\u00e1 pasando dentro de mi aplicaci\u00f3n? Y tambi\u00e9n muy a menudo relacionada: \u00bfpor qu\u00e9 obtengo una TimeoutException? Hemos estado depurando despliegues de producci\u00f3n durante algunos a\u00f1os y hemos aprendido un par de cosas mientras lo hac\u00edamos. Una de las cosas m\u00e1s importantes es la informaci\u00f3n. Cuanta m\u00e1s informaci\u00f3n puedas obtener de tu aplicaci\u00f3n, mejor podr\u00e1s entenderla.<\/p>\n<p>Precisamente por este motivo, hemos a\u00f1adido al SDK m\u00e9tricas de latencia y tiempo de ejecuci\u00f3n siempre activas que se publican a trav\u00e9s del bus de eventos y pueden consumirse como mensajes. Hay una gran diferencia entre limitarse a registrar datos y exponerlos a trav\u00e9s de un bus de eventos (aunque tambi\u00e9n se registren posteriormente). Te permite consumirlos y, lo que es m\u00e1s importante, reaccionar ante ellos al instante. Puede tomar los datos y enviarlos a su sistema de monitorizaci\u00f3n favorito como nagios, graphite o logstash. No hay necesidad de analizar archivos de registro en las secuelas de una interrupci\u00f3n del sistema que tiene personal para analizar.<\/p>\n<p>Por defecto, el SDK recopilar\u00e1 de forma transparente las latencias de las operaciones que se ejecuten a trav\u00e9s de \u00e9l y las escribir\u00e1 en el bus de eventos cada hora. El intervalo de emisi\u00f3n, as\u00ed como muchos otros ajustes, son totalmente personalizables a trav\u00e9s del entorno. Aqu\u00ed hay un ejemplo simple que escucha en el bus de eventos y s\u00f3lo imprime eventos m\u00e9tricos a stderr (estamos distribuyendo muchos m\u00e1s eventos que los del bus para proporcionar la m\u00e1xima flexibilidad):<\/p>\n<p><a href=\"https:\/\/gist.github.com\/daschl\/51e5193a57d909fd072b.js\">https:\/\/gist.github.com\/daschl\/51e5193a57d909fd072b.js<\/a><\/p>\n<p>Aqu\u00ed puedes ver dos eventos. El primero imprime informaci\u00f3n en tiempo de ejecuci\u00f3n como estad\u00edsticas de GC, memoria y uso de hilos. El otro es ligeramente m\u00e1s grande y contiene estad\u00edsticas de latencia (y rendimiento) recogidas en histogramas internos. La informaci\u00f3n impresa contiene latencias m\u00ednimas y m\u00e1ximas, el n\u00famero de operaciones, as\u00ed como percentiles. Bajo las cubiertas estamos utilizando el excelente <a href=\"https:\/\/hdrhistogram.github.io\/HdrHistogram\/\">HdrHistograma<\/a> y el paquete relacionado LatencyUtils.<\/p>\n<p>Observe que no s\u00f3lo lo imprime por operaci\u00f3n, sino que tambi\u00e9n puede identificar el nodo de destino y el c\u00f3digo de estado que devuelve. Esto le permite construir una forma de \u00e1rbol del estado del sistema y obtener informaci\u00f3n sobre c\u00f3mo est\u00e1n funcionando los nodos o servicios individuales (el nodo A es m\u00e1s lento que los dem\u00e1s, reemplazar es m\u00e1s r\u00e1pido que insertar, muchos errores contra el nodo B,...).<\/p>\n<p>Bas\u00e1ndonos en los comentarios de los usuarios, estamos considerando a\u00f1adir consumidores para registrar esas m\u00e9tricas y enviarlas a graphite o logstash. Adem\u00e1s, vamos a a\u00f1adir formatos de salida m\u00e1s sofisticados, incluyendo JSON con un formato agradable que es a la vez humano y m\u00e1quina parasable. Por favor, h\u00e1ganos saber qu\u00e9 formato de destino le gustar\u00eda ver incorporado en el controlador.<\/p>\n<h2>Actualizaciones de dependencias y cambios de DCP<\/h2>\n<p>Dado que estamos mejorando la versi\u00f3n menor, tambi\u00e9n estamos actualizando las dependencias a sus \u00faltimas versiones de correcci\u00f3n de errores. Aqu\u00ed est\u00e1 la lista completa de dependencias, pero tenga en cuenta que en realidad s\u00f3lo exponemos RxJava como una dependencia expl\u00edcita, todos los dem\u00e1s son reempaquetados para no causar problemas en su entorno si potencialmente tiene versiones en conflicto.<\/p>\n<p>Estos son los cambios de 2.2.0-dp2 sobre 2.1.4:<\/p>\n<ul>\n<li>RxJava de 1.0.4 a 1.0.13<\/li>\n<li>Netty de 4.0.25.Final a 4.0.29.Final<\/li>\n<li>Disruptor LMAX 3.3.0 a 3.3.2<\/li>\n<li>Jackson de 2.4.2 a 2.5.4<\/li>\n<li>LatencyUtils nuevo en la versi\u00f3n 2.0.2<\/li>\n<\/ul>\n<p>Adem\u00e1s, Sergey est\u00e1 ocupado trabajando en la ampliaci\u00f3n del conector Kafka, que tambi\u00e9n ha dado lugar a mejoras de DCP en la biblioteca core-io. Todav\u00eda es muy experimental, pero nos estamos acercando a un punto en el que puede ser consumido por un p\u00fablico m\u00e1s amplio.<\/p>\n<h2>El camino hacia la AG<\/h2>\n<p>Otra caracter\u00edstica de N1QL que todav\u00eda se est\u00e1 incubando son las sentencias preparadas (con nombre). El c\u00f3digo se ha actualizado en esta segunda vista previa para desarrolladores, pero a\u00fan est\u00e1 sujeto a cambios, por lo que hemos comentado esa API por ahora. Por favor, sea paciente hasta que nos acerquemos a GA para un soporte completo y una extensa documentaci\u00f3n.<\/p>\n<p>Aparte de eso, no hay grandes caracter\u00edsticas en la lista de tareas pendientes para 2.2.0, por lo que estamos cambiando de marcha hacia peque\u00f1as correcciones, mejoras de estabilidad y lo m\u00e1s importante la documentaci\u00f3n. Para que esta versi\u00f3n sea la mejor que hemos lanzado hasta ahora, \u00a1necesitamos tu opini\u00f3n! Por favor, pru\u00e9bala y danos tu opini\u00f3n, especialmente sobre las nuevas funciones y la compatibilidad con N1QL. \u00a1H\u00e1ganos saber lo que falta o roto ya sea a trav\u00e9s de un comentario aqu\u00ed, en los foros oa trav\u00e9s del rastreador de errores!<\/p>","protected":false},"excerpt":{"rendered":"<p>Note from March 2017: detailed information on the event bus and metrics collection can be found in the official documentation. Some information in this article may be outdated. While europe was melting away in the summer heat, Simon (from Paris), [&hellip;]<\/p>\n","protected":false},"author":19,"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":[8987],"class_list":["post-2080","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>Java SDK 2.2.0 Developer Preview Refresh - 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\/es\/java-sdk-2-2-0-developer-preview-refresh\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java SDK 2.2.0 Developer Preview Refresh\" \/>\n<meta property=\"og:description\" content=\"Note from March 2017: detailed information on the event bus and metrics collection can be found in the official documentation. Some information in this article may be outdated. While europe was melting away in the summer heat, Simon (from Paris), [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/java-sdk-2-2-0-developer-preview-refresh\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-07-27T08:17:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-09T14:18:16+00:00\" \/>\n<meta name=\"author\" content=\"Michael Nitschinger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@daschl\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Nitschinger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/\"},\"author\":{\"name\":\"Michael Nitschinger\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/e5d4d332756da6f361dd88c1576de61d\"},\"headline\":\"Java SDK 2.2.0 Developer Preview Refresh\",\"datePublished\":\"2015-07-27T08:17:41+00:00\",\"dateModified\":\"2025-10-09T14:18:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/\"},\"wordCount\":1380,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/\",\"name\":\"Java SDK 2.2.0 Developer Preview Refresh - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-07-27T08:17:41+00:00\",\"dateModified\":\"2025-10-09T14:18:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/java-sdk-2-2-0-developer-preview-refresh\\\/#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\\\/java-sdk-2-2-0-developer-preview-refresh\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java SDK 2.2.0 Developer Preview Refresh\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\\\/e5d4d332756da6f361dd88c1576de61d\",\"name\":\"Michael Nitschinger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g95e178617974d46e3b02dd1754a3f60b\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"caption\":\"Michael Nitschinger\"},\"description\":\"Michael Nitschinger works as a Principal Software Engineer at Couchbase. He is the architect and maintainer of the Couchbase Java SDK, one of the first completely reactive database drivers on the JVM. He also authored and maintains the Couchbase Spark Connector. Michael is active in the open source community, a contributor to various other projects like RxJava and Netty.\",\"sameAs\":[\"https:\\\/\\\/nitschinger.at\",\"https:\\\/\\\/x.com\\\/daschl\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/michael-nitschinger\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java SDK 2.2.0 Developer Preview Refresh - 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\/es\/java-sdk-2-2-0-developer-preview-refresh\/","og_locale":"es_MX","og_type":"article","og_title":"Java SDK 2.2.0 Developer Preview Refresh","og_description":"Note from March 2017: detailed information on the event bus and metrics collection can be found in the official documentation. Some information in this article may be outdated. While europe was melting away in the summer heat, Simon (from Paris), [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/java-sdk-2-2-0-developer-preview-refresh\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-07-27T08:17:41+00:00","article_modified_time":"2025-10-09T14:18:16+00:00","author":"Michael Nitschinger","twitter_card":"summary_large_image","twitter_creator":"@daschl","twitter_misc":{"Written by":"Michael Nitschinger","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/"},"author":{"name":"Michael Nitschinger","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d"},"headline":"Java SDK 2.2.0 Developer Preview Refresh","datePublished":"2015-07-27T08:17:41+00:00","dateModified":"2025-10-09T14:18:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/"},"wordCount":1380,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/","url":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/","name":"Java SDK 2.2.0 Developer Preview Refresh - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-07-27T08:17:41+00:00","dateModified":"2025-10-09T14:18:16+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/java-sdk-2-2-0-developer-preview-refresh\/#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\/java-sdk-2-2-0-developer-preview-refresh\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java SDK 2.2.0 Developer Preview Refresh"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos 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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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\/e5d4d332756da6f361dd88c1576de61d","name":"Michael Nitschinger","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g95e178617974d46e3b02dd1754a3f60b","url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","caption":"Michael Nitschinger"},"description":"Michael Nitschinger trabaja como Ingeniero de Software Principal en Couchbase. Es el arquitecto y mantenedor del SDK Java de Couchbase, uno de los primeros controladores de bases de datos completamente reactivos en la JVM. Tambi\u00e9n es autor y mantiene el conector Spark de Couchbase. Michael participa activamente en la comunidad de c\u00f3digo abierto, contribuyendo a otros proyectos como RxJava y Netty.","sameAs":["https:\/\/nitschinger.at","https:\/\/x.com\/daschl"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/michael-nitschinger\/"}]}},"acf":[],"authors":[{"term_id":8987,"user_id":19,"is_guest":0,"slug":"michael-nitschinger","display_name":"Michael Nitschinger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2080"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2080\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2080"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}