<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>☕️ Java on Software Design</title><link>https://software-design.dev/backend/java/</link><description>Recent content in ☕️ Java on Software Design</description><generator>Hugo</generator><language>en</language><copyright>Copyright (c) 2026 Daniil Dzemidovich</copyright><lastBuildDate>Fri, 17 Apr 2026 19:34:28 +0200</lastBuildDate><atom:link href="https://software-design.dev/backend/java/index.xml" rel="self" type="application/rss+xml"/><item><title>Collections Framework</title><link>https://software-design.dev/backend/java/collections-framework/</link><pubDate>Wed, 01 Nov 2023 00:05:41 +0300</pubDate><guid>https://software-design.dev/backend/java/collections-framework/</guid><description>&lt;p&gt;&lt;strong&gt;Collections Framework&lt;/strong&gt; is the architecture to represent and manipulate various &lt;em&gt;Collections&lt;/em&gt; in Java. It consists of the following parts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Interfaces&lt;/strong&gt; provide abstract data types to represent the collection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementation Classes&lt;/strong&gt; are concrete implementations of the existing collection interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Algorithms&lt;/strong&gt; provide common features for collection manipulation, such as sorting, searching, and shuffling.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="alert alert-info d-flex" role="alert"&gt;
 &lt;div class="flex-shrink-1 alert-icon"&gt;🧐 &lt;/div&gt;
 
 
 &lt;div class="w-100"&gt; &lt;strong&gt;Collection Framework&lt;/strong&gt; was introduced in Java JDK 1.2. Before that, Java had only &lt;strong&gt;Arrays&lt;/strong&gt;, &lt;strong&gt;Stack&lt;/strong&gt;, &lt;strong&gt;Vectors&lt;/strong&gt;, and &lt;strong&gt;Hashtables&lt;/strong&gt; for grouping objects.&lt;/div&gt;
 
 
&lt;/div&gt;

&lt;h4 id="advantages"&gt;Advantages&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Consistent API.&lt;/strong&gt; The framework provides a set of interfaces implemented by all the classes. It means that all the similar classes have a common set of methods, which makes them simpler to memorize and use.&lt;/p&gt;</description></item><item><title>Stream API</title><link>https://software-design.dev/backend/java/stream-api/</link><pubDate>Sun, 28 Apr 2024 12:03:04 +0200</pubDate><guid>https://software-design.dev/backend/java/stream-api/</guid><description>&lt;p&gt;A &lt;strong&gt;Stream&lt;/strong&gt; represents a sequence of elements and provides different kinds of operations to perform upon those elements.&lt;/p&gt;
&lt;h2 id="processing"&gt;Processing&lt;/h2&gt;
&lt;h3 id="stream-operations"&gt;Stream Operations&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Stream&lt;/strong&gt; operations are either &lt;u&gt;intermediate&lt;/u&gt; (returns a &lt;strong&gt;Stream&lt;/strong&gt; object and can be chained) or &lt;u&gt;terminal&lt;/u&gt; (returns void or non-stream result).&lt;/p&gt;</description></item><item><title>Generics&lt;E&gt;</title><link>https://software-design.dev/backend/java/generics/</link><pubDate>Fri, 17 Apr 2026 19:34:28 +0200</pubDate><guid>https://software-design.dev/backend/java/generics/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Generics&lt;/strong&gt; let you create classes, interfaces, and methods that work the same way across different types of objects. They are also referred to as &lt;strong&gt;&lt;em&gt;parameterized types&lt;/em&gt;&lt;/strong&gt;. The term &lt;strong&gt;generic&lt;/strong&gt; comes from the idea that some general algorithms can be applied to different types of objects. Generics provide stronger type checks at compile time and eliminate manual type casting.&lt;/p&gt;</description></item></channel></rss>