{"id":23106,"date":"2014-03-19T13:00:21","date_gmt":"2014-03-19T11:00:21","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=23106"},"modified":"2014-03-27T21:35:18","modified_gmt":"2014-03-27T19:35:18","slug":"5-features-in-java-8-that-will-change-how-you-code","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html","title":{"rendered":"5 Features In Java 8 That WILL Change How You Code"},"content":{"rendered":"<p>Java 8 is packed full of some really exciting features at both the JVM and language level. While some of the features initially envisioned for this release got scoped out or pushed out to release 9, there are literally dozens of new features. Many of the new additions are under-the-hood improvements either at the compiler, JVM or help-system level. As such, while we may benefit from them, there\u2019s nothing we need to actively do (other than install Java 8 of course) to enjoy them.<a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2014\/03\/Duke_8-copy.png\"><img decoding=\"async\" class=\"alignright size-medium wp-image-23118\" alt=\"Duke_8-copy\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2014\/03\/Duke_8-copy-300x196.png\" width=\"300\" height=\"196\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2014\/03\/Duke_8-copy-300x196.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2014\/03\/Duke_8-copy.png 588w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Having said that, let\u2019s look at 5 features that we feel are an absolute must for you to know about:<\/p>\n<h2>1. Lambda expressions<\/h2>\n<p>Even if we really didn\u2019t want to go mainstream here, there\u2019s little doubt that from a developer\u2019s perspective, the most dominant feature of Java 8 is the new support for Lambda expressions. This addition to the language brings Java to the forefront of functional programming, right there with other functional JVM-based languages such as Scala and Clojure.<\/p>\n<p>We\u2019ve previously looked into how <a href=\"http:\/\/www.javacodegeeks.com\/2014\/01\/compiling-lambda-expressions-scala-vs-java-8.html\" target=\"_blank\">Java implemented Lambda expressions<\/a>, and how it compared to the approach taken by Scala. From Java\u2019s perspective this is by far one of the biggest additions to the language in the past decade.<\/p>\n<p>At minimum, it\u2019s recommended you become familiar with the Lambda syntax, especially as it relates to array and collection operations, where Lambdas have been tightly integrated into the core language libraries. It is highly likely that you\u2019ll start seeing more and more code like the snippet below in both 3rd party and within your organization\u2019s code.<\/p>\n<pre class=\" brush:java\">Map&lt;Person.Sex, List&lt;Person&gt;&gt; byGender =\r\n    roster.stream().collect(Collectors.groupingBy(Person::getGender));<\/pre>\n<p>* A pretty efficient way of grouping a collection by the value of a specific class field.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<h2>2. Parallel operations<\/h2>\n<p>With the addition of Lambda expressions to arrays operations, Java introduced a key concept into the language of internal iteration. Essentially as developers we\u2019re used to use loop operations as one of the most basic programming idioms, right up there with if and else.<\/p>\n<p>The introduction of Lambda expressions turned that paradigm around, with the actual iteration over a collection on which a Lambda function is applied now carried out by the core library itself (i.e. internal iteration).<\/p>\n<p>You can think of this as an extension of iterators where the actual operation of extracting the next item from a collection on which to operate is carried out by an iterator. An exciting possibility opened by this design pattern is to enable operations carried out on long arrays such as sorting, filtering and mapping to be carried out in parallel by the framework. When dealing with server code that\u2019s processing lengthy collections on a continuous basis, this can lead to major throughput improvements with relatively little work from your end.<\/p>\n<p>Here\u2019s the same snippet as above, but using the <a href=\"http:\/\/docs.oracle.com\/javase\/tutorial\/collections\/streams\/parallelism.html\" target=\"_blank\">framework\u2019s<\/a> new parallel processing capabilities &#8211;<\/p>\n<pre class=\" brush:java\">ConcurrentMap&lt;Person.Sex, List&lt;Person&gt;&gt; byGender =\r\n    roster.parallelStream().collect(\r\n        Collectors.groupingByConcurrent(Person::getGender));<\/pre>\n<p>* It\u2019s a fairly small change that\u2019s required to make this algorithm run on multiple threads.<\/p>\n<h2>3. Java + JavaScript = \u2764<\/h2>\n<p>Java 8 is looking to right one of its biggest historical wrongs \u2013 the ever growing distance between Java and JavaScript, one that has only increased in the past few years. With this new release, Java 8 is introducing a completely new JVM JavaScript engine \u2013 Nashorn. This engine makes unique use of some of the <a href=\"http:\/\/www.takipiblog.com\/2014\/02\/10\/java-8-compiling-lambda-expressions-in-the-new-nashorn-js-engine\/\" target=\"_blank\">new features introduced in Java 7<\/a> such as invokeDynamic to provide JVM-level speed to JavaScript execution right there with the likes of V8 and SpiderMonkey.<\/p>\n<p>This means that the next time you\u2019re looking to integrate JS into your backend, instead of setting up a node.js instance, you can simply use the JVM to execute the code. The added bonus here is the ability to have seamless interoperability between your Java and JavaScript code in-process, without having to use various IPC\/RPC methods to bridge the gap.<\/p>\n<h2>4. New date \/ time APIs<\/h2>\n<p>The complexity of the current native Java library API has been a cause of pain for Java developers for many years. Joda time has been filling this vacuum for years now, and with Java 8. An immediate <a href=\"http:\/\/blog.joda.org\/2009\/11\/why-jsr-310-isn-joda-time_4941.html\" target=\"_blank\">question that arose<\/a> early on was why didn\u2019t Java 8 adopt Joda as its native time framework. Due to what was perceived as a design flaw in Joda, Java 8 implemented its own new date \/ time API from scratch. The good news is that unlike Calendar.getInstance(), the <a href=\"http:\/\/java.dzone.com\/articles\/introducing-new-date-and-time\" target=\"_blank\">new API<\/a>s were designed with simplicity in mind, and clear operations to operate on manipulated values in both human readable and machine time formats.<\/p>\n<h2>5. Concurrent accumulators<\/h2>\n<p>One of the most common scenarios in concurrent programming is updating of numeric counters accessed by multiple threads. There have been many idioms to do this over the years, starting from synchronized blocks (which introduce a high level of contention), to read\/write locks to AtomicInteger(s). While the last ones are more efficient, as they rely directly on processor CAS instructions, they require a higher degree of familiarity to implement the required semantics correctly.<\/p>\n<p>With Java 8 this problem is solved at the framework level with new concurrent <a href=\"http:\/\/download.java.net\/jdk8\/docs\/api\/java\/util\/concurrent\/atomic\/LongAccumulator.html\" target=\"_blank\">accumulator classes<\/a> that enable you to very efficiently increase \/ decrease the value of a counter in a thread safe manner. This is really a case where it\u2019s not a question of taste, or preference \u2013 using these new classes in your code is really a no-brainer.<\/p>\n<p>Are there any other language features you think every developers should know about? Add them in the comments section.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/www.takipiblog.com\/2014\/03\/18\/5-features-in-java-8-that-will-change-how-you-code\/\">5 Features In Java 8 That WILL Change How You Code<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\">JCG partner<\/a> Tal Weiss at the <a href=\"http:\/\/www.takipiblog.com\/\">Takipi <\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Java 8 is packed full of some really exciting features at both the JVM and language level. While some of the features initially envisioned for this release got scoped out or pushed out to release 9, there are literally dozens of new features. Many of the new additions are under-the-hood improvements either at the compiler, &hellip;<\/p>\n","protected":false},"author":529,"featured_media":148,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[196],"class_list":["post-23106","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-core-java","tag-java-8"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>5 Features In Java 8 That WILL Change How You Code<\/title>\n<meta name=\"description\" content=\"Java 8 is packed full of some really exciting features at both the JVM and language level. While some of the features initially envisioned for this\" \/>\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.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"5 Features In Java 8 That WILL Change How You Code\" \/>\n<meta property=\"og:description\" content=\"Java 8 is packed full of some really exciting features at both the JVM and language level. While some of the features initially envisioned for this\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2014-03-19T11:00:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-03-27T19:35:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tal Weiss\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tal Weiss\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html\"},\"author\":{\"name\":\"Tal Weiss\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2dc6b8e5a433ff29fcdf2167aedc3d57\"},\"headline\":\"5 Features In Java 8 That WILL Change How You Code\",\"datePublished\":\"2014-03-19T11:00:21+00:00\",\"dateModified\":\"2014-03-27T19:35:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html\"},\"wordCount\":922,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"keywords\":[\"Java 8\"],\"articleSection\":[\"Core Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html\",\"name\":\"5 Features In Java 8 That WILL Change How You Code\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"datePublished\":\"2014-03-19T11:00:21+00:00\",\"dateModified\":\"2014-03-27T19:35:18+00:00\",\"description\":\"Java 8 is packed full of some really exciting features at both the JVM and language level. While some of the features initially envisioned for this\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/5-features-in-java-8-that-will-change-how-you-code.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Core Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/core-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"5 Features In Java 8 That WILL Change How You Code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2dc6b8e5a433ff29fcdf2167aedc3d57\",\"name\":\"Tal Weiss\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e70d5bd7ae7a7a580e9fc6ee8f21e204f382b27e2e9eb52338e644f1704429b1?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e70d5bd7ae7a7a580e9fc6ee8f21e204f382b27e2e9eb52338e644f1704429b1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e70d5bd7ae7a7a580e9fc6ee8f21e204f382b27e2e9eb52338e644f1704429b1?s=96&d=mm&r=g\",\"caption\":\"Tal Weiss\"},\"description\":\"Tal is co-founder and CEO at Takipi where he leads a team of hackers that build tools that help fix Java and Scala code in production. His main interests are tools for developers, solving nasty bugs (preferably multi-threaded) and Jazz drumming.\",\"sameAs\":[\"http:\\\/\\\/www.takipi.com\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/tal-weiss\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"5 Features In Java 8 That WILL Change How You Code","description":"Java 8 is packed full of some really exciting features at both the JVM and language level. While some of the features initially envisioned for this","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.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html","og_locale":"en_US","og_type":"article","og_title":"5 Features In Java 8 That WILL Change How You Code","og_description":"Java 8 is packed full of some really exciting features at both the JVM and language level. While some of the features initially envisioned for this","og_url":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2014-03-19T11:00:21+00:00","article_modified_time":"2014-03-27T19:35:18+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","type":"image\/jpeg"}],"author":"Tal Weiss","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Tal Weiss","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html"},"author":{"name":"Tal Weiss","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2dc6b8e5a433ff29fcdf2167aedc3d57"},"headline":"5 Features In Java 8 That WILL Change How You Code","datePublished":"2014-03-19T11:00:21+00:00","dateModified":"2014-03-27T19:35:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html"},"wordCount":922,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","keywords":["Java 8"],"articleSection":["Core Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html","url":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html","name":"5 Features In Java 8 That WILL Change How You Code","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","datePublished":"2014-03-19T11:00:21+00:00","dateModified":"2014-03-27T19:35:18+00:00","description":"Java 8 is packed full of some really exciting features at both the JVM and language level. While some of the features initially envisioned for this","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/5-features-in-java-8-that-will-change-how-you-code.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Core Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/core-java"},{"@type":"ListItem","position":4,"name":"5 Features In Java 8 That WILL Change How You Code"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2dc6b8e5a433ff29fcdf2167aedc3d57","name":"Tal Weiss","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e70d5bd7ae7a7a580e9fc6ee8f21e204f382b27e2e9eb52338e644f1704429b1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e70d5bd7ae7a7a580e9fc6ee8f21e204f382b27e2e9eb52338e644f1704429b1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e70d5bd7ae7a7a580e9fc6ee8f21e204f382b27e2e9eb52338e644f1704429b1?s=96&d=mm&r=g","caption":"Tal Weiss"},"description":"Tal is co-founder and CEO at Takipi where he leads a team of hackers that build tools that help fix Java and Scala code in production. His main interests are tools for developers, solving nasty bugs (preferably multi-threaded) and Jazz drumming.","sameAs":["http:\/\/www.takipi.com\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/tal-weiss"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/23106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/529"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=23106"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/23106\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/148"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=23106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=23106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=23106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}