<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deepu K Sasidharan on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/deepu-sasidharan/</link><description>Articles written by Deepu K Sasidharan on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 15 Jan 2024 09:06:04 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/deepu-sasidharan/index.xml" rel="self" type="application/rss+xml"/><item><title>Foojay Podcast #40: Making Java Attractive for Beginners in Programming</title><link>https://foojayio.github.io/website/today/foojay-podcast-40/</link><pubDate>Mon, 15 Jan 2024 09:06:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-40/</guid><description>&lt;p&gt;&amp;ldquo;Public static void main string array&amp;rdquo; are the first words everyone sees when they start their first Java Hello World experiments.&lt;/p&gt;
&lt;p&gt;Some teachers explain them, while others say you will understand each word later.&lt;/p&gt;
&lt;p&gt;Is this a problem to attract more Java developers?&lt;/p&gt;
&lt;p&gt;And how can we make the Java language more attractive for newbies? Let&amp;rsquo;s ask some experts&amp;hellip;&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/XvUmhzoL_cY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Book Review: "OpenJDK Migration for Dummies"</title><link>https://foojayio.github.io/website/today/book-review-openjdk-migration-for-dummies-3/</link><pubDate>Mon, 18 Sep 2023 04:48:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-openjdk-migration-for-dummies-3/</guid><description>&lt;p&gt;I recently read the free book &lt;a href="https://www.azul.com/openjdk-migration-for-dummies/" target="_blank" rel="noopener noreferrer"&gt;OpenJDK Migration for Dummies&lt;/a&gt;
 by &lt;a href="https://www.linkedin.com/in/siritter/" target="_blank" rel="noopener noreferrer"&gt;Simon Ritter&lt;/a&gt;
. Simon is the Deputy CTO at Azul Systems.&lt;/p&gt;
&lt;p&gt;Azul has its own OpenJDK distribution which also has commercial flavors. So, obviously, my first thought was, &amp;ldquo;Well, of course, he&amp;rsquo;s going to say nice things about Azul&amp;rsquo;s JDK distribution and try to sell it everywhere&amp;rdquo;. But, to my surprise, that wasn&amp;rsquo;t entirely true. To be fair, he does sell Azul&amp;rsquo;s JDK a bit, and the goal of the book seems to include some marketing and advocacy for Azul. However, overall the book is what it promises in the title, a guide for migrating to an OpenJDK distribution, regardless of the vendor.&lt;/p&gt;</description></item><item><title>Foojay Podcast #20: Functional Programming: "The Good, the Bad, and the Ugly"</title><link>https://foojayio.github.io/website/today/foojay-podcast-20/</link><pubDate>Mon, 24 Apr 2023 11:30:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-20/</guid><description>&lt;p&gt;Functional programming&amp;hellip; it seems you either love it or you hate it.&lt;/p&gt;
&lt;p&gt;But, like everything in software engineering, it is a trade-off.&lt;/p&gt;
&lt;p&gt;So for today, let&amp;rsquo;s focus on the good, the bad, and the ugly parts of functional programming!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/AYZMzyKjtoM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1--odcast-pps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Foojay Podcast #5: OpenJDK Discussion Panel</title><link>https://foojayio.github.io/website/today/foojay-podcast-5/</link><pubDate>Tue, 20 Sep 2022 15:56:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-5/</guid><description>&lt;p&gt;It&amp;rsquo;s September 20th, OpenJDK 19 has been released. In this podcast, we discuss the new features and the changes that this release brings.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/71ZAYZWwpuI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1--odcast-pps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://open.spotify.com/show/6CpTfgn9LirzJGAtc4ICdQ" target="_blank" rel="noopener noreferrer"&gt;Spotify&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/be/podcast/foojay-io-the-friends-of-openjdk/id1652281304" target="_blank" rel="noopener noreferrer"&gt;Apple Podcasts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;And most others&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-1-guests"&gt;Guests&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://twitter.com/miragemiko" target="_blank" rel="noopener noreferrer"&gt;Miroslav Wengner&lt;/a&gt;
&lt;/strong&gt; (OpenValue)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://twitter.com/mgrygles" target="_blank" rel="noopener noreferrer"&gt;Mary Grygleski&lt;/a&gt;
&lt;/strong&gt; (CJUG, DataStax)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://twitter.com/deepu105" target="_blank" rel="noopener noreferrer"&gt;Deepu K Sasidharan&lt;/a&gt;
&lt;/strong&gt; (Okta, JHipster)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-2-podcast-host"&gt;Podcast host&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://twitter.com/costlow" target="_blank" rel="noopener noreferrer"&gt;Erik Costlow&lt;/a&gt;
&lt;/strong&gt; (Azul)&lt;/p&gt;</description></item><item><title>What the Heck Is Project Loom for Java?</title><link>https://foojayio.github.io/website/today/what-the-heck-is-project-loom-for-java/</link><pubDate>Tue, 30 Aug 2022 15:13:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/what-the-heck-is-project-loom-for-java/</guid><description>&lt;p&gt;Java has had good multi-threading and concurrency capabilities from early on in its evolution and can effectively utilize multi-threaded and multi-core CPUs.&lt;/p&gt;
&lt;p&gt;Java Development Kit (JDK) 1.1 had basic support for platform threads (or Operating System (OS) threads), and JDK 1.5 had more utilities and updates to improve concurrency and multi-threading.&lt;/p&gt;
&lt;p&gt;JDK 8 brought asynchronous programming support and more concurrency improvements.&lt;/p&gt;
&lt;p&gt;While things have continued to improve over multiple versions, there has been nothing groundbreaking in Java for the last three decades, apart from support for concurrency and multi-threading using OS threads.&lt;/p&gt;</description></item><item><title>Does Java 18 Finally Have A Better Alternative To JNI?</title><link>https://foojayio.github.io/website/today/does-java-18-finally-have-a-better-alternative-to-jni/</link><pubDate>Tue, 19 Apr 2022 21:01:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/does-java-18-finally-have-a-better-alternative-to-jni/</guid><description>&lt;p&gt;Java 18 was released last month (March 2022), and with it comes the second incubator of the Foreign Function &amp;amp; Memory API, so let us look at the state of Foreign Function Interface (FFI) in Java.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c1kwxzrhvt40nuulijge.png" alt="cover image" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;If you would prefer to follow along by watching a video, here&amp;rsquo;s the recording of my FOSDEM'22 talk on this topic, from the &lt;a href="https://youtu.be/lW69_AtAXzE" target="_blank" rel="noopener noreferrer"&gt;the OktaDev YouTube channel&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-a-foreign-function-interface"&gt;What is a Foreign Function Interface?&lt;/h2&gt;
&lt;p&gt;A foreign function interface is the ability to call functions or routines written in one programming language from another programming language.&lt;/p&gt;</description></item><item><title>The State of Pattern Matching in Java 17</title><link>https://foojayio.github.io/website/today/the-state-of-pattern-matching-in-java-17/</link><pubDate>Mon, 03 Jan 2022 10:35:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-state-of-pattern-matching-in-java-17/</guid><description>&lt;p&gt;So what exactly is pattern matching?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The act of checking a given sequence of tokens for the presence of the constituents of some pattern.&amp;rdquo; &amp;ndash; Wikipedia&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or simply put, pattern matching is a language feature where you can test for a specific pattern on a character sequence or a data structure.&lt;/p&gt;
&lt;p&gt;Pattern matching can be classified into two types.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sequence patterns&lt;/strong&gt;: pattern matching on character sequence or strings. Also known as our beloved Regular Expressions 😉 &amp;mdash; I still wish I could write RegEx without cursing and looking up the syntax.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tree patterns&lt;/strong&gt;: testing for patterns on a data structure. This is what we are going to talk about today.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/M6xKDas.jpeg" alt="regex meme" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Demystifying Memory Management in Modern Programming Languages</title><link>https://foojayio.github.io/website/today/demystifying-memory-management-in-modern-programming-languages/</link><pubDate>Tue, 07 Sep 2021 08:13:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/demystifying-memory-management-in-modern-programming-languages/</guid><description>&lt;p&gt;&lt;img src="https://i.imgur.com/R0mdaId.png" alt="Cover" title="Cover" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;In this multi-part series, I aim to demystify the concepts behind memory management and take a deeper look at memory management in some of the modern programming languages.&lt;/p&gt;
&lt;p&gt;I hope the series would give you some insights into what is happening under the hood of these languages in terms of memory management.&lt;/p&gt;
&lt;p&gt;Learning about memory management will also help us to write more performant code as the way we write code also has an impact on memory management regardless of the automatic memory management technique used by the language.&lt;/p&gt;</description></item><item><title>Concurrency in Java (Compared with Other Programming Languages)</title><link>https://foojayio.github.io/website/today/concurrency-in-java-and-how-it-compares-with-other-modern-programming-languages/</link><pubDate>Tue, 15 Jun 2021 08:05:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/concurrency-in-java-and-how-it-compares-with-other-modern-programming-languages/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/concurrency-in-java-and-how-it-compares-with-other-modern-programming-languages/evgeniya-litovchenko-3whkjP9a9ZI-unsplash-700x467.jpg" alt="cover image" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;This is a multi-part series where I talk about concurrency in modern programming languages and build and benchmark a concurrent web server, inspired by the example from the &lt;a href="https://doc.rust-lang.org/book/ch20-00-final-project-a-web-server.html" target="_blank" rel="noopener noreferrer"&gt;Rust book&lt;/a&gt;
, in popular languages like Java, Rust, Go, JavaScript (NodeJS), TypeScript (Deno) and Kotlin to compare concurrency and its performance between these languages/platforms.&lt;/p&gt;
&lt;p&gt;The chapters of this series are as below, with part 6 here on Foojay.io, the place for friends of OpenJDK.&lt;/p&gt;</description></item><item><title>Demystifying Java Virtual Machine Memory Management</title><link>https://foojayio.github.io/website/today/demystifying-jvm-memory-management/</link><pubDate>Thu, 20 May 2021 07:26:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/demystifying-jvm-memory-management/</guid><description>&lt;p&gt;&lt;img src="https://i.imgur.com/Kv9ichJ.gif" alt="cover-image" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://deepu.tech/memory-management-in-programming/" target="_blank" rel="noopener noreferrer"&gt;this multi-part series&lt;/a&gt;
, I aim to demystify the concepts behind memory management and take a deeper look at memory management in some of the modern programming languages, in particular Java, Kotlin, Scala, Groovy, and Clojure.&lt;/p&gt;
&lt;p&gt;I hope the series would give you some insights into what is happening under the hood of these languages in terms of memory management. In this chapter, we will look at the memory management of the &lt;strong&gt;Java Virtual Machine (JVM)&lt;/strong&gt; used by languages like Java, Kotlin, Scala, Clojure, Groovy, and so on.&lt;/p&gt;</description></item><item><title>7 Functional Programming Techniques in Java: A Primer</title><link>https://foojayio.github.io/website/today/7-functional-programming-techniques-in-java-a-primer/</link><pubDate>Tue, 11 May 2021 07:34:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/7-functional-programming-techniques-in-java-a-primer/</guid><description>&lt;p&gt;&lt;img src="https://thepracticaldev.s3.amazonaws.com/i/zf8mvgix8icaz64mgj89.png" alt="header image" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;There is a lot of hype around functional programming (FP) and a lot of cool kids are doing it but it is not a silver bullet. Like other programming paradigms/styles, functional programming also has its pros and cons and one may prefer one paradigm over the other. If you are a Java developer and wants to venture into functional programming, do not worry, you don&amp;rsquo;t have to learn functional programming oriented languages like Haskell or Clojure(or even Scala or JavaScript though they are not pure functional programming languages) since Java has you covered and this post is for you.&lt;/p&gt;</description></item></channel></rss>