{"id":3754,"date":"2019-04-04T10:10:41","date_gmt":"2019-04-04T10:10:41","guid":{"rendered":"https:\/\/voxxeddays.com\/minsk\/?p=3754"},"modified":"2019-04-04T10:10:41","modified_gmt":"2019-04-04T10:10:41","slug":"the-good-the-bad-and-the-ugly-of-java-api-design","status":"publish","type":"post","link":"https:\/\/voxxeddays.com\/minsk\/the-good-the-bad-and-the-ugly-of-java-api-design.html","title":{"rendered":"The Good, the Bad and the Ugly of Java API design"},"content":{"rendered":"<p><a><\/a>[vc_row][vc_column][vc_empty_space height=&#8221;70px&#8221;]<div class=\"speakers  \" >\n  \t\t\t<div class=\"\">\n                <div class=\"first_line \" ><\/div>\n    \t\t\t            <div class=\"first_title \" >\n                                <p>\n                                The Good, the Bad and the Ugly of Java API design\n                                <\/p>\n    \t\t\t            <\/div>\n   \t\t\t\t            <div class=\"first_description\">\n                                <p>\n                                \nWith Java being a technology that\u2019s over 20 years old, its strict requirements on backward compatibility, and thus the difficulty of removing functionality, modern JDKs inevitably contain APIs that did not withstand the test of time, and for various reasons are now hard to use, or exhibit other signs of poor design. As a result, in the last 2 years, we\u2019ve seen several attempts at modernizing Java, and quite a few new APIs that provide nice and clean alternatives to their older counterparts.<\/p>\n<p>In this live-coding session, we explore a series of commonly used Java APIs which cause troubles for developers. Learning from their mistakes, we draw principles for clean API design, and see how these were applied to the new features in JDK 9, 10, 11, and 12. As part of this exploration, we focus on Collections, CompletableFuture, StackWalker, ProcessHandle, HTTP\/2 client APIs, and more.<\/p>\n<p>Come and find out how to make your code cleaner with the help of new features of modern JDKs, and figure out how to make your own APIs clean and pleasant to use by learning from Java\u2019s mistakes!<\/p>\n<table class=\"custom-info\">\n<tr>\n<td>Main language<\/td>\n<td>English Proposal<\/td>\n<\/tr>\n<tr>\n<td>Audience level<\/td>\n<td>Intermediate<\/td>\n<\/tr>\n<tr>\n<td>Type of presentation<\/td>\n<td>Slides and code<\/td>\n<\/tr>\n<\/table>\n\n                                <\/p>\n                            <\/div>\n                            <div class=\"mini_gap\"><\/div>\n                <div class=\"speakers_row\">\n                    <div class=\"speakers_image\" style=\" background-image: url(https:\/\/voxxeddays.com\/minsk\/wp-content\/uploads\/sites\/42\/2019\/04\/Miro-Cupak.jpg)\">\n                    <\/div>\n                    <div class=\"centred\">\n                        <div class=\"speakers_description \">\n                            <h3>Miro Cupak<\/h3>\n                            <small><\/small>\n                            <br>\n\t\t\t\t\t        <p>\n\t\t\t\t\t        <a><\/a>Miro is a Co-founder and VP Engineering at DNAstack, where he builds a leading genomics cloud platform. He is a Java enthusiast with expertise in distributed systems and middleware, passionate about genetics and making meaningful software. Miro is the creator of the largest search and discovery engine of human genetic data, and the author of a book on parallelization of genomic queries. In his spare time, he blogs and contributes to several open-source projects.<br>\r\n<table class=\"custom-info\">\r\n  <tr>\r\n    <td><i class=\"fa fa-rss twitter-link\"><\/i> Blog<\/td>\r\n    <td><a href=\"https:\/\/mirocupak.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/mirocupak.com\/<\/a><\/td> \r\n  <\/tr>\r\n  <tr>\r\n    <td><i class=\"fa fa-building twitter-link\"><\/i> Company<\/td>\r\n    <td>DNAstack<\/td> \r\n  <\/tr>\r\n  <tr>\r\n    <td><i class=\"fa fa-twitter twitter-link\"><\/i> Twitter<\/td>\r\n    <td><a class=\"twitter-link\" href=\"https:\/\/www.twitter.com\/@mirocupak\" target=\"_blank\" rel=\"noopener\">@mirocupak<\/a><\/td> \r\n  <\/tr>\r\n<\/table>\n\t\t\t\t\t        <\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\t\t\t\t\n\t\t\t    <div class=\"clear\">\n\t\t\t    <\/div>\n            <\/div>\n\t\t<\/div>[\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"<p>[vc_row][vc_column][vc_empty_space height=&#8221;70px&#8221;][\/vc_column][\/vc_row]<\/p>\n","protected":false},"author":7942,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[46],"tags":[117,48,100,99,116],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The Good, the Bad and the Ugly of Java API design<\/title>\n<meta name=\"description\" content=\"Voxxed Days Minsk is a biggest Java Conference in Belarus and first Voxxed Days conference at the CIS region. Voxxed Days Minsk \u2013 is a hot combination of Java world known rock stars and jaw-dropping content for those truly inspired by the technology.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/voxxeddays.com\/minsk\/the-good-the-bad-and-the-ugly-of-java-api-design.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Good, the Bad and the Ugly of Java API design\" \/>\n<meta property=\"og:description\" content=\"Voxxed Days Minsk is a biggest Java Conference in Belarus and first Voxxed Days conference at the CIS region. Voxxed Days Minsk \u2013 is a hot combination of Java world known rock stars and jaw-dropping content for those truly inspired by the technology.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/voxxeddays.com\/minsk\/the-good-the-bad-and-the-ugly-of-java-api-design.html\" \/>\n<meta property=\"og:site_name\" content=\"Voxxed Days Minsk Developers Conference\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-04T10:10:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/voxxeddays.com\/minsk\/wp-content\/uploads\/sites\/42\/2020\/03\/Vox-oct-nov-20-cover1500x500.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\">\n\t<meta name=\"twitter:data1\" content=\"aliaksandrkazhukhouski\">\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data2\" content=\"1 minute\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/voxxeddays.com\/minsk\/#website\",\"url\":\"https:\/\/voxxeddays.com\/minsk\/\",\"name\":\"Voxxed Days Minsk Developers Conference\",\"description\":\"Welcome to Voxxed Days Minsk\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/voxxeddays.com\/minsk\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/voxxeddays.com\/minsk\/the-good-the-bad-and-the-ugly-of-java-api-design.html#webpage\",\"url\":\"https:\/\/voxxeddays.com\/minsk\/the-good-the-bad-and-the-ugly-of-java-api-design.html\",\"name\":\"The Good, the Bad and the Ugly of Java API design\",\"isPartOf\":{\"@id\":\"https:\/\/voxxeddays.com\/minsk\/#website\"},\"datePublished\":\"2019-04-04T10:10:41+00:00\",\"dateModified\":\"2019-04-04T10:10:41+00:00\",\"author\":{\"@id\":\"https:\/\/voxxeddays.com\/minsk\/#\/schema\/person\/3c270bcaedccad1522ffd757b93ad87f\"},\"description\":\"Voxxed Days Minsk is a biggest Java Conference in Belarus and first Voxxed Days conference at the CIS region. Voxxed Days Minsk \\u2013 is a hot combination of Java world known rock stars and jaw-dropping content for those truly inspired by the technology.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/voxxeddays.com\/minsk\/the-good-the-bad-and-the-ugly-of-java-api-design.html\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/voxxeddays.com\/minsk\/#\/schema\/person\/3c270bcaedccad1522ffd757b93ad87f\",\"name\":\"aliaksandrkazhukhouski\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/voxxeddays.com\/minsk\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/823e2bec3b8033f074da9766158032f1?s=96&d=mm&r=g\",\"caption\":\"aliaksandrkazhukhouski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/posts\/3754"}],"collection":[{"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/users\/7942"}],"replies":[{"embeddable":true,"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/comments?post=3754"}],"version-history":[{"count":0,"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/posts\/3754\/revisions"}],"wp:attachment":[{"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/media?parent=3754"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/categories?post=3754"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/voxxeddays.com\/minsk\/wp-json\/wp\/v2\/tags?post=3754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}